POJ 1329 求三角形外接圆

简介:

题意给出三角形三点坐标让求出该三角形的外接圆标准方程和一般方程。

这题输出很恶心,注意0.000的时候要输出并且前面的符号为“ + ”,那么外接圆的半径r通过S=(a*b*c)/(4*r)可以求出r=(a*b*c)/(4*S),然后外心坐标是三边垂直平分线的交点,求出两个垂直平分线方程然后可以得出交点坐标。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef double PointType;
struct point
{
    PointType x,y;
};
PointType TriangleArea(point pi,point pj,point pk) //判断向量PiPj在向量PiPk的顺逆时针方向 +顺-逆0共线
{
    return fabs((pj.x-pi.x)*(pk.y-pi.y)-(pk.x-pi.x)*(pj.y-pi.y))/2;
}
PointType Dis(point a,point b)
{
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int main()
{
    point a,b,c;
    double r;
    int f=0;
    while(~scanf("%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y))
    {
        if(f)
            cout<<endl;
        f++;
        r=Dis(a,b)*Dis(a,c)*Dis(b,c)/TriangleArea(a,b,c)/4;
        double c1=(a.x*a.x+a.y*a.y-b.x*b.x-b.y*b.y)/2;
        double c2=(a.x*a.x+a.y*a.y-c.x*c.x-c.y*c.y)/2;
        point centre;
        centre.x=(c1*(a.y-c.y)-c2*(a.y-b.y))/((a.x-b.x)*(a.y-c.y)-(a.x-c.x)*(a.y-b.y));
        centre.y=(c1*(a.x-c.x)-c2*(a.x-b.x))/((a.y-b.y)*(a.x-c.x)-(a.y-c.y)*(a.x-b.x));
        //圆心为Center 半径为r
        cout<<"(x";
        if(centre.x>0)
            cout<<" - ",printf("%.3f",centre.x);
        else if(centre.x<=0)
            cout<<" + ",printf("%.3f",-centre.x);
        cout<<")^2 + (y";
        if(centre.y>0)
            cout<<" - ",printf("%.3f",centre.y);
        else if(centre.y<=0)
            cout<<" + ",printf("%.3f",-centre.y);
        cout<<")^2 = ",printf("%.3f",r),cout<<"^2"<<endl;
        //第二行输出开始
        cout<<"x^2 + y^2";
        if(centre.x>0)
            cout<<" - ",printf("%.3fx",2*centre.x);
        else if(centre.x<=0)
            cout<<" + ",printf("%.3fx",2*-centre.x);
        if(centre.y>0)
            cout<<" - ",printf("%.3fy",2*centre.y);
        else if(centre.y<=0)
            cout<<" + ",printf("%.3fy",2*-centre.y);
        if(centre.x*centre.x+centre.y*centre.y-r*r>=0)
            cout<<" + ",printf("%.3f",centre.x*centre.x+centre.y*centre.y-r*r);
        else if(centre.x*centre.x+centre.y*centre.y-r*r<0)
            cout<<" - ",printf("%.3f",-(centre.x*centre.x+centre.y*centre.y-r*r));
        cout<<" = 0"<<endl;
    }
    return 0;
}


目录
相关文章
DataWorks 千万级任务调度与全链路集成开发治理赋能智能驾驶技术突破
智能驾驶数据预处理面临数据孤岛、任务爆炸与开发运维一体化三大挑战。DataWorks提供一站式的解决方案,支持千万级任务调度、多源数据集成及全链路数据开发,助力智能驾驶模型数据处理与模型训练高效落地。
ClickHouse分布式数据库动态伸缩(弹性扩缩容)的实现
实现ClickHouse数据库的动态伸缩需要持续的维护和精细的操作。从集群配置到数据迁移,再到监控和自动化,每一步都要仔细管理以确保服务的可靠性和性能。这些活动可以显著提高应用的响应性和成本效率,帮助业务根据实际需求灵活调整资源分配。
74 10
CDP的Hive3系列之Hive Metastore介绍
CDP的Hive Metastore (HMS) 是一种服务,用于在后端 RDBMS(例如 MySQL 或 PostgreSQL)中存储与 Apache Hive 和其他服务相关的元数据。Impala、Spark、Hive 和其他服务共享元存储。与 HMS 的连接包括 HiveServer、Ranger 和代表 HDFS 的 NameNode。
2578 0
CDP的Hive3系列之Hive Metastore介绍
ARMS 助力假面科技研发运维提效,保障极致游戏体验
阿里云 ARMS 团队助力假面科技游戏业务实现全业务、全场景的监控和告警,全面提升监控覆盖率和告警有效率,其中告警平均恢复耗时(MTTR)缩短 50% 以上。
235 70
阿里云OS Copilot使用心得
作为一名后端开发工程师,我最近尝试了阿里云的Linux智能助手OS Copilot。安装过程简单,但需确保服务器内存充足(至少600M空闲)。使用RAM用户设置ACCESS_KEY时遇到问题,最终用主账号KEY解决。单命令模式体验良好,能快速生成Java服务启动脚本等。Copilot在Linux系统管理、网络配置和Shell脚本编写方面表现出色,极大提升了工作效率。虽然担心AI对运维工作的影响,但目前看来更多是助力而非替代。
124 6
仙讯畅通无阻:探索MQ阵法的强大功能
MQ(消息队列)起源于1993年IBM推出的MQSeries,后更名为WebSphere MQ和IBM MQ。常见的MQ系统包括:IBM MQ、Apache ActiveMQ、RabbitMQ、Apache Kafka、RocketMQ和Amazon SQS。这些系统广泛应用于异步通信、系统解耦和削峰填谷等场景,确保消息的可靠传递。在修真界,MQ阵法如同神秘的传信工具,能在仙人修炼时安全传递重要信息,保障仙讯畅通无阻。
143 4
Linux 安装python3.7.6
本教程介绍在Linux系统上安装Python 3.7.6的步骤。首先使用`yum`安装依赖环境,包括zlib、openssl等开发库。接着通过`wget`下载Python 3.7.6源码包并解压。创建目标文件夹`/usr/local/python3`后,进入解压目录执行配置、编译和安装命令。最后设置软链接,使`python3`和`pip3`命令生效。
在Linux中,什么是SSH?它是如何工作的?
在Linux中,什么是SSH?它是如何工作的?
踩坑:M1芯片Mac Book使用IDEA旗舰版卡顿问题
新开封的Mac Book安装IDEA开发工具出现操作卡顿,UI拖动迟缓问题解决方案:
踩坑:M1芯片Mac Book使用IDEA旗舰版卡顿问题
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问