POJ 1673 三角形垂心

简介:

题意:给出步骤连接终点与三角形的顶点,求交点o。

图片
如图, 以△ABC的边AB、AC、BC向外作正方形ABHI、ACED以及BCFG。连接DI、HG、EF并取它们的中点J、L、K。连接JA、LB、KC并延长。证明:JA、LB、KC的延长线交于一点M,且M点为△ABC的垂心。
证明:如图所示,
延长AJ与N点,使得NJ=AJ,连接IN。延长JA、LB、KC分别交BC、AC、AB于O、P、Q点。
图片
易证△DJA≌△IJN
则∠NID=∠IDA
∴∠NIA=∠NID+∠DIA=∠IDA+∠DIA=180°-∠IAD=∠BAC
∵IA=AB,DA=AC
∴△NIA≌△CAB(SAS)
∴∠NAI=∠CBA
∵∠NAI+∠BAO=90°
∴∠CBA+∠BAO=90°
∴∠AOB=90°
即AO⊥BC,即JA⊥BC
同理可得LB⊥AC,KC⊥AB
∴JA、LB、KC的延长线交于一点M,这一点M为△ABC的垂心
证毕!

知道了垂心就求垂心。看到了DIS里说要+1e-8不加就错了。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
struct point
{
    double x,y;
};
point getcx(point a,point b,point c)
{
    point ans;
    double a1=atan2(b.y-a.y,b.x-a.x)+acos(-1.0)/2,a2=atan2(c.y-b.y,c.x-b.x)+acos(-1.0)/2;
    double r=(sin(a2)*(c.x-a.x)+cos(a2)*(a.y-c.y))/(sin(a1)*cos(a2)-sin(a2)*cos(a1));
    ans.x=c.x+r*cos(a1),ans.y=c.y+r*sin(a1);
    return ans;
}
int main()
{
    point a,b,c,ans;int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y);
        ans=getcx(a,b,c);
        printf("%.4f %.4f\n",ans.x+1e-8,ans.y+1e-8);
    }
    return 0;
}


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
LeetCode-593 有效的正方形
LeetCode-593 有效的正方形
【LeetCode-每日一题】-120. 三角形最小路径和
【LeetCode-每日一题】-120. 三角形最小路径和
|
6月前
|
Java
hdu 2524 矩形A + B
hdu 2524 矩形A + B
20 0
|
存储 Python
LeetCode 120. 三角形最小路径和
给定一个三角形 triangle ,找出自顶向下的最小路径和。
91 0
AcWing 664. 三角形
AcWing 664. 三角形
51 0
AcWing 664. 三角形
AcWing 662. 点的坐标
AcWing 662. 点的坐标
39 0
AcWing 662. 点的坐标
20天刷题计划-120. 三角形最小路径和
给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。
Leetcode120三角形最小路径和
Leetcode120三角形最小路径和
67 0