uva 11178 计算集合模板题
来源:互联网 发布:爽肤水 面霜 知乎 编辑:程序博客网 时间:2024/04/28 04:54
题意:
求三角形行三个角三等分点射线交出的内三角形坐标。
代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <climits>#include <cassert>#define LL long longusing namespace std;const int maxn = 1e6;const int inf = 0x3f3f3f3f;const double eps = 1e-8;const double pi = acos(-1.0);const double ee = exp(1.0);/////////////////////////////////////////////////////struct Point{ double x, y; Point(double x = 0, double y = 0) : 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);}bool operator < (const Point& a, const Point& b){ return a.x < b.x || (a.x == b.x && a.y < b.y);}int dcmp(double x){ if (fabs(x) < eps) { return 0; } else { return x < 0 ? -1 : 1; }}bool operator == (const Point& a, const Point& b){ return dcmp(a.x - b.x) == 0 && dcmp(a.y - b.y) == 0;}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;}double Area2(Point A, Point B, Point C){ return Cross(B - A, C - A);}Vector Rotate(Vector A, double rad){ return Vector(A.x * cos(rad) - A.y * sin(rad), A.x * sin(rad) + A.y * cos(rad));}Vector Normal(Vector A)//单位法线 turn left 90 degrees{ double L = Length(A); return Vector(-A.y / L, A.x / L);}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 getD(Point A, Point B, Point C){ Vector v1 = C - B; double angle1 = Angle(A - B, v1); v1 = Rotate(v1, angle1 / 3); Vector v2 = B - C; double angle2 = Angle(A - C, v2); v2 = Rotate(v2, -angle2 / 3); return GetLineIntersection(B, v1, C, v2);}Point readPoint(){ double x, y; scanf("%lf %lf", &x, &y); return Point(x, y);}int main(){ #ifdef LOCAL freopen("in.txt", "r", stdin); #endif // LOCAL int ncase; scanf("%d", &ncase); while (ncase--) { Point A = readPoint(); Point B = readPoint(); Point C = readPoint(); Point D = getD(A, B, C); Point E = getD(B, C, A); Point F = getD(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;}
0 0
- uva 11178 计算集合模板题
- uva 11796 俩狗问题(2维计算集合终极模板)
- UVA 12304 计算几何+圆模板
- 浅谈计算几何的模板集合
- uva 11178 计算几何
- UVA-11178-计算几何
- uva 1342 欧拉定理(计算几何模板)
- uva 10652 凸包 + 更新版计算几何模板
- uva 12304 几何模板题
- UVa 11178 - 计算几何初步
- 集合B(哈希表模板题)
- [模板]计算几何模板
- Kruskal模板题 Slim Span uva
- 【拓扑排序模板题DFS方法】UVA
- UVA-796(无向图割桥模板题)
- uva 11178 morley定理(计算几何基础)
- UVA 11178 Morley's Theorem 计算几何
- UVA 11178 - Morley's Theorem(计算几何)
- 手机淘宝性能优化
- JavaScript对象创建模式
- MySQL查看和修改最大连接数
- linux 系统启动详解----三种不同的启动方式之sysvinit
- Android v4包下的PagerTitleStrip,ViewPager的页面标题
- uva 11178 计算集合模板题
- Product -> Analyze
- 计算机视觉领域的一些大牛网站
- 为iOS 6和iOS 7设计界面
- 高性能Mysql读书笔记(1)- Mysql 的逻辑架构
- C++之父FAQ阅读笔记
- mysql创建用户与授权
- HDOJ Train Problem I 1022(栈)
- 打印技术之打印机状态监控