• POJ 1673 EXOCENTER OF A TRIANGLE


    POJ_1673

        O实际上是△ABC的垂心,证明如下:

        先将△EBJ绕B点逆时针旋转90度,这时EB与AB重合,BJ与BC共线。之所以BJ与BC共线是因为∠ABC和∠EBJ之前是互补的。这时,就会出现一个大的组合而成的三角形△JAC,同时BC=BJ,ME=MJ,所以ME是△JAC的中位线,因此BM平行于AC。而BM是旋转90度之后平行于AC的,于是之前BM就是垂直于AC的了,进而就可以得到O是△ABC的垂心。

        这个题目输出的时候需要加一个很小的量(eps)比如1e-8然后再输出,至于为什么这个样子我也搞不懂,看discuss说做计算几何题输出结果的时候最好顺手加个eps,囧。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #define zero 1e-8
    double x3, y3, x4, y4, x5, y5;
    int dcmp(double x)
    {
    return fabs(x) < zero ? 0 : (x < 0 ? -1 : 1);
    }
    void solve()
    {
    double x, y, x1, y1, x2, y2, k1, k2;
    if(dcmp(y3 - y4) == 0)
    {
    k2 = (x4 - x5) / (y5 - y4);
    x = x5;
    y = k2 * (x - x3) + y3;
    }
    else
    {
    if(dcmp(y4 - y5) == 0)
    {
    k1 = (x3 - x4) / (y4 - y3);
    x = x3;
    y = k1 * (x - x5) + y5;
    }
    else
    {
    k1 = (x3 - x4) / (y4 - y3);
    k2 = (x4 - x5) / (y5 - y4);
    x = (k1 * x5 - k2 * x3 + y3 - y5) / (k1 - k2);
    y = k1 * (x - x5) + y5;
    }
    }
    printf("%.4lf %.4lf\n", x + zero, y + zero);
    }
    int main()
    {
    int t;
    scanf("%d", &t);
    while(t --)
    {
    scanf("%lf%lf%lf%lf%lf%lf", &x3, &y3, &x4, &y4, &x5, &y5);
    solve();
    }
    return 0;
    }


  • 相关阅读:
    MySQL 配置优化
    django基础之数据库操作
    Python常用内置模块之xml模块
    linux命令总结iostat命令
    springboot接口返回封装与异常控制
    springboot接口访问权限AOP实现
    springboot动态多数据源
    Elasticsearch一些使用笔记(持续更新)
    python语言中的AOP利器:装饰器
    如何使用supervisor管理你的应用
  • 原文地址:https://www.cnblogs.com/staginner/p/2356585.html
Copyright © 2020-2023  润新知