Morley's Theorem
题解:
计算几何基本操作
注意叉积的时候字母写的顺序
代码:
#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for (int i=h;i<=t;i++)
#define dep(i,t,h) for (int i=t;i>=h;i--)
const double eps=1e-;
struct Point
{
double x,y;
Point(double x1,double y1) {x=x1,y=y1;}
Point(){};
Point operator +(const Point b) const
{
return Point(x+b.x,y+b.y);
}
Point operator -(const Point b) const
{
return Point(x-b.x,y-b.y);
}
double operator *(const Point b) const
{
return x*b.x+y*b.y;
}
double operator ^(const Point b) const
{
return x*b.y-y*b.x;
}
Point operator *(double k)
{
return Point(x*k,y*k);
}
Point operator /(double k)
{
return Point(x/k,y/k);
}
bool operator ==(Point b)
{
return b.x==x&&b.y==y?:;
}
};
struct Line
{
Point x,y;
Line() {};
Line(Point x1,Point y1){x=x1,y=y1;};
};
double lenth(Point x)
{
return sqrt(x.x*x.x+x.y*x.y);
}
double angle(Point x,Point y)
{
return acos(x*y/lenth(x)/lenth(y));
}
int dcmp(double x)
{
if (x<-eps) return(-);
else if (x>eps) return();
else return();
}
Point rotate(Point x,double r)
{
return Point(x.x*cos(r)-x.y*sin(r),x.x*sin(r)+x.y*cos(r));
}
Point gtp(Line x,Line y)
{
Point v1=x.y-x.x; Point v2=y.y-y.x;
double k=((x.x^v1)-(y.x^v1))/(v2^v1);
return y.x+v2*k;
}
double distance(Point x,Line y)
{
Point p1=x-y.x,p2=y.y-y.x;
return fabs((p1^p2)/lenth(p2));
}
Point get(Point a,Point b,Point c)
{
Point v1,v2;
double r1=angle(a-b,c-b);
v1=rotate(c-b,r1/); v1=v1+b;
double r2=angle(a-c,b-c);
v2=rotate(b-c,-r2/); v2=v2+c;
return gtp(Line(b,v1),Line(c,v2));
}
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
ios::sync_with_stdio(false);
int T;
cin>>T;
while (T--)
{
int a1,a2,a3,b1,b2,b3;
cin>>a1>>b1>>a2>>b2>>a3>>b3;
Point p1,p2,p3,a,b,c;
p1=Point(a1,b1); p2=Point(a2,b2); p3=Point(a3,b3);
a=get(p1,p2,p3); b=get(p2,p3,p1); c=get(p3,p1,p2);
printf("%.6lf %.6lf %.6lf %.6lf %.6lf %.6lf\n",
a.x,a.y,b.x,b.y,c.x,c.y);
}
return ;
}
Morley's Theorem的更多相关文章
- uva 11178 - Morley's Theorem
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- uva11178 Morley’s Theorem(求三角形的角三分线围成三角形的点)
Morley’s Theorem Input: Standard Input Output: Standard Output Morley’s theorem states that that the ...
- UVA 11178 Morley's Theorem(几何)
Morley's Theorem [题目链接]Morley's Theorem [题目类型]几何 &题解: 蓝书P259 简单的几何模拟,但要熟练的应用模板,还有注意模板的适用范围和传参不要传 ...
- UVa 11178:Morley’s Theorem(两射线交点)
Problem DMorley’s TheoremInput: Standard Input Output: Standard Output Morley’s theorem states that ...
- UVA 11178 Morley's Theorem (坐标旋转)
题目链接:UVA 11178 Description Input Output Sample Input Sample Output Solution 题意 \(Morley's\ theorem\) ...
- UVa 11178 (简单练习) Morley's Theorem
题意: Morley定理:任意三角形中,每个角的三等分线,相交出来的三个点构成一个正三角形. 不过这和题目关系不大,题目所求是正三角形的三个点的坐标,保留6位小数. 分析: 由于对称性,求出D点,EF ...
- Morley's Theorem (计算几何基础+向量点积、叉积、旋转、夹角等+两直线的交点)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVA 11178 - Morley's Theorem 向量
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVA11178 Morley's Theorem(基础模板)
题目链接 题意:给出A,B, C点坐标求D,E,F坐标,其中每个角都被均等分成三份 求出 ABC的角a, 由 BC 逆时针旋转 a/3 得到BD,然后 求出 ACB 的角a2, 然后 由 BC顺时 ...
- UVA 11178 Morley's Theorem(旋转+直线交点)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18543 [思路] 旋转+直线交点 第一个计算几何题,照着书上代码打 ...
随机推荐
- requests库入门06-post请求
示例相应的接口文档:GitHub邮箱接口文档 先登录GitHub,然后右上角用户下拉框中选择settings,然后选Emails.可以看到当前账户设置的邮箱情况 再看添加邮箱接口的文档描述,可以通过一 ...
- Unity3D之IOS&Android收集Log文件
开发项目的时候尤其在处理与服务器交互这块,如果服务端程序看不到客户端请求的Log信息,那么无法修改BUG.在Windows上Unity会自动讲Log文件写入本地,但是在IOS和Android上确没有这 ...
- python学习第11天 迭代器
函数的名称 闭包 迭代器 递归
- 接口签名进行key排序,并MD5加密
import org.apache.commons.codec.digest.DigestUtils; import java.io.UnsupportedEncodingException; imp ...
- IPFS环境安装
IPFS是一个分布式的P2P的协议,可能会取代这个http,全球的点都可能存储这个数据 IPFS搭建环境 1.首先是下载节点软件到官网下载windows版本的ipfs节点软件,如果不能访问官网的话,可 ...
- 深入Golang调度器之GMP模型
前言 随着服务器硬件迭代升级,配置也越来越高.为充分利用服务器资源,并发编程也变的越来越重要.在开始之前,需要了解一下并发(concurrency)和并行(parallesim)的区别. 并发: 逻 ...
- Android之androidmainfest.xml配置文件详解
写配置文件的时候我们会不知道把那些配置项放在哪里,请看: 配置文件样例: <?xml version="1.0" encoding="utf-8"?> ...
- Linux平台 Oracle 18c RAC安装
Linux平台 Oracle 18c RAC安装Part1:准备工作 2018-08-04 22:20 by AlfredZhao, 1065 阅读, 0 评论, 收藏, 编辑 一.实施前期准备工作 ...
- Confluence 6 通过 SSL 或 HTTPS 运行 - 确定你的证书路径
在默认的情况下,Tomcat 希望 keystore 文件被命名为 .keystore 文件,同时这个文件应该放置在 Tomcat 运行的 home 目录中(这个目录可能与你自己的 Home 目录的路 ...
- Confluence 6 找到在创建 XML 备份的时候出现的错误
错误可能是因为数据库突然不可访问而产生.如果你在你的日志中看到了错误 'Couldn't backup database data' ,这个指南将会帮助你更正这个错误.我们强烈推荐你备份 Confl ...