UVA 11178 Morley’s Theorem(二维计算几何基础)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=23&page=show_problem&problem=2119
题意:
给你一个三角形的A,B,C三点(逆时针给出),然后作该三角形的每个内角的三等分线, 相交成三角形DEF, 则DEF为等边三角形,要你输出DEF的坐标.
分析:
刘汝佳<<训练指南>>P259例题.
首先我们可以得到向量BC,然后我们根据向量BA可以算出角ABC的大小r,然后我们将向量BC逆时针旋转r/3弧度,就可以得到向量BD了.
同理我们将向量CB顺时钟旋转1/3的角ACB弧度可以得到向量CD向量,我们利用向量BD和CD求直线交点即可求出D坐标.
对于输入A,B,C我们可以这样求出D. 然后我们只要变换输入顺序为B ,C, A,我们可以求出E点坐标. 输入为C,A,B时,我们可以求出F点坐标.
AC代码:65行之前的代码都是刘汝佳的模板
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const double eps=1e-10;
int dcmp(double x)
{
if(fabs(x)<eps) return 0;
return x<0?-1:1;
}
struct Point
{
double x,y;
Point(){}
Point(double x,double y):x(x),y(y){}
};
typedef Point Vector;
Vector operator+(Vector A,Vector B)
{
return Vector(A.x+B.x, A.y+B.y);
}
Vector operator-(Point A,Point B)
{
return Vector(A.x-B.x, A.y-B.y);
}
Vector operator*(Vector A,double p)
{
return Vector(A.x*p, A.y*p);
}
Vector operator/(Vector A,double p)
{
return Vector(A.x/p, A.y/p);
}
double Dot(Vector A,Vector B)
{
return A.x*B.x+A.y*B.y;
}
double Length(Vector A)
{
return sqrt(Dot(A,A));
}
double Angle(Vector A,Vector B)
{
return acos(Dot(A,B)/Length(A)/Length(B));
}
double Cross(Vector A,Vector B)
{
return A.x*B.y-A.y*B.x;
}
Vector Rotate(Vector A,double rad)
{
return Vector(A.x*cos(rad)-A.y*sin(rad), A.x*sin(rad)+A.y*cos(rad) );
}
Point GetLineIntersection(Point P,Vector v,Point Q,Vector w)
{
Vector u =P-Q;
double t=Cross(w,u)/Cross(v,w);
return P+v*t;
}
Point get_D(Point A,Point B,Point C)
{
Vector v1=C-B,v2=A-B;
double rad= Angle(v1,v2)/3;
Vector v3=Rotate(v1,rad);
Vector v4=B-C,v5=A-C;
rad=Angle(v4,v5)/3;
Vector v6=Rotate(v4,-rad);
return GetLineIntersection(B,v3,C,v6);
}
int main()
{
int T; scanf("%d",&T);
while(T--)
{
Point A,B,C;
scanf("%lf%lf%lf%lf%lf%lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y);
Point D=get_D(A,B,C);
Point E=get_D(B,C,A);
Point F=get_D(C,A,B);
printf("%.6lf %.6lf %.6lf %.6lf %.6lf %.6lf\n",D.x,D.y,E.x,E.y,F.x,F.y);
}
return 0;
}
分享到:
相关推荐
Michelson-Morley实验的可解释性与弯曲电磁波物质基础探索,杨本洛,,本文首先逻辑地指出Michelson-Morley实验是可解释的、甚至只是一个平庸的结果;进而揭示呈现弯曲电磁波的物质基础,并试图为其构造一�
morley fire alarms panels battery calculator and loop calculator
Realistic Ray Tracing 高清英文版。
Shirley P., Morley R. Realistic Ray Tracing.2nd.ed.(AKPeters, 2003)(239s).rar
专业论文写作短语及句型汇总总结纲要,(科技论文写作入门速成小手册) Contents About Academic Phrasebank ……………………………………………..……..….....................Major Sections Introducing work ……...
arc-length lam morley is sent.
morley DX manual fire alarms panel installers
弧长法的基本程序和matlab的源程序
Morley,DW,Gulliver,J.,“改善次要道路上的交通流量和噪声暴露估计的方法”,《环境污染》(2016年), 请参阅本文以了解背景和原理。 这项研究的主要目的是试图改善居住区居民的噪声暴露估计。 尽管主要道路...
Morley in 1968, have been widely used in industry including manufacturing systems, transportation systems, chemical process facilities, and many others. At that time, the PLC replaced the hardwired ...
Parker, Deborah Morley Length: 752 pages Edition: 15 Language: English Publisher: Course Technology Publication Date: 2014-01-28 ISBN-10: 1285767276 ISBN-13: 9781285767277 Understanding Computers: ...
格拉肖(S.L.Glashow)、温伯格(S.Weinberg)和萨拉姆(A.Salam) 等人发现弱相互作用和电磁相互作用可以统一, 用弱电相互作用 (electroweak)来描述.鲁比亚(1983[1],C.Rubbia)等提供了实验支持. 大统一理论...
已经提出并完成了许多有关确定光速的实验。 这里将讨论两个重要的实验,即Michelson-Morley和Sagnac。 然后将提出Michelson-Morley和Sagnac装置的线性运动变化,以通过实验探测光速的变化。
RF应用中的一位微连接器设计专家Morley讲述关于电路设计中对连接器的七点考量。
该网站是由John Morley创办的,他是一位曼彻斯特大学的博士。 里面提供了丰富的学术写作短语及句型,可以在很短的时间内教会你怎么写绪论、怎么评价别人的观点、如何做总结,参考资料俱是来源与英语母语者的文章,...
该网站是由John Morley创办的,他是一位曼彻斯特大学的博士。 里面提供了丰富的学术写作短语及句型,可以在很短的时间内教会你怎么写绪论、怎么评价别人的观点、如何做总结,参考资料俱是来源与英语母语者的文章,...
矩阵位移法matlab代码虚拟元素方法的MATLAB编程 网 我们提供一些基本功能来显示多边形网格,包括标记节点,元素和(边界)边缘。...详细介绍了文献中涉及的三个VEM,即C1,C0和Morley型元素。 四阶奇异摄动问
该网站是由John Morley创办的,他是一位曼彻斯特大学的博士。 里面提供了丰富的学术写作短语及句型,可以在很短的时间内教会你怎么写绪论、怎么评价别人的观点、如何做总结,参考资料俱是来源与英语母语者的文章,...
使用 Smits 算法的射线/框相交 ... Williams、S. Barrus、RK Morley 和 P. Shirley。 图形、GPU 和游戏工具杂志,10(1):45-60,2005。 [3] 其他算法: http://www.realtimerendering.com/intersections.html
给出完整的测量数据的文章就有数十篇,如将介绍有关方案、中间实验结果的文章计算在内,其数量可以高出十倍以上。这是因为,正象相对论和Michelson-Morley实验所证实的那样,光速c是关系到物理学本质的基本常数,...