http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2119

题目大意:

Morley定理是这样定义的,做三角形ABC每个内角的三等分线,相交成三角形DEF,则DEF是等边三角形。如图,你的任务是根据A,B,C三个点的位置确定D、E、F的位置。

思路:

把BC边旋转三分之一的角ABC,CB边旋转三分之一的角ACB,然后求交点D就出来了。其他的同理。

PS:作者的向量类写得不错,嗯,等我回学校了要把c++ primer plus里的向量模版好好看看

#include<cstdio>
#include<cmath> struct point
{
double x,y;
point(double x=0,double y=0): x(x),y(y){}
};
typedef point Vector;
Vector operator +(point a,point b)
{
return Vector(a.x+b.x,a.y+b.y);
}
Vector operator *(point a,double b)
{
return Vector(a.x*b,a.y*b);
}
Vector operator -(point a,point b)
{
return Vector(a.x-b.x,a.y-b.y);
} double dot(Vector a,Vector b)
{
return a.x*b.x+a.y*b.y;
}
double cross(Vector a,Vector b)
{
return a.x*b.y-a.y*b.x;
}
double len(Vector a)
{
return sqrt(a.x*a.x+a.y*a.y);
}
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 getans(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 getPoint(point a,point b,point c)
{
Vector bc=c-b;
Vector ba=a-b;
double x=acos( dot(ba,bc) / len(bc) / len(ba) );
Vector bd= rotate(bc,x/3); Vector ca=a-c;
Vector cb=b-c;
x=acos( dot(cb,ca) / len(cb) / len(ca) );
Vector cd=rotate(cb,-x/3); return getans(b,bd,c,cd);
}
int main()
{
int T;
scanf("%d",&T);
point a,b,c,d,e,f;
while(T--)
{
scanf("%lf%lf",&a.x,&a.y);
scanf("%lf%lf",&b.x,&b.y);
scanf("%lf%lf",&c.x,&c.y);
d=getPoint(a,b,c);
e=getPoint(b,c,a);
f=getPoint(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;
}

最新文章

  1. cron表达式详解
  2. Storm进阶
  3. JavaScript Patterns 6.3 Klass
  4. 第一个Struts1步骤
  5. 【读书笔记】iOS-开发技巧-三种收起键盘的方法
  6. css 字数超过一行显示省略号
  7. Java传入参数个数不确定可用(Type ... values)
  8. mv 的使用
  9. mysql关联更新
  10. In-Memory:内存优化数据的持久化和还原
  11. 数学3(博弈+splya)
  12. php读取文件内容的三种方法
  13. 12563 Jin Ge Jin Qu hao
  14. 理解图像分割中的卷积(Understand Convolution for Semantic Segmentation)
  15. Oracle游标的使用示例
  16. Sharding-JDBC实践(一)简介
  17. python_super注意事项
  18. Shell学习心得(二):传递参数、运算符
  19. 一句话木马:PHP篇
  20. vue项目中px自动转换为rem

热门文章

  1. poj1328Radar Installation 贪心
  2. es8 --- 新特性
  3. JS中的预解析
  4. 值得学习的html知识
  5. deep-in-es6(二)
  6. 【DRF序列化】
  7. 查看oracle数据库的启动时间
  8. [Express] Upload Files with Express
  9. [Android] 图像各种处理系列文章合集
  10. Asp中JSON的使用