UVA 11437 Triangle Fun
来源:互联网 发布:如何供货给淘宝 编辑:程序博客网 时间:2024/06/07 05:38
转载请注明出处:忆梦http://blog.csdn.net/yimeng2013/article/details/17329917
题目链接:http://uva.onlinejudge.org/external/114/11437.html
计算几何入门题,熟悉使用模板。
题意:求出三角形PQR的面积。
方法一: 几何证明面积关系求解:http://blog.csdn.net/freezhanacmore/article/details/8171942
方法二: 利用叉积直接求面积:
#include<cstdio>#include<cmath>//定义点struct Point{double x, y;Point(double x = 0, double y = 0) : x(x), y(y) {}};typedef Point Vector; //Vector 为 Point的别名//向量+向量=向量 点+向量=点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);}//点积:两者长度乘积在乘上夹角余弦 XaXb + YaYbdouble 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));}//叉积:两向量v和w的叉积等于v和w组成的三角形的有向面积的两倍 XaYb - XbYadouble 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);}//直线一般用参数表示 P = P0 + tv//如何已知直线上两点A,B ;则方向向量为B-A,所以参数方程为A+(B-A)t//两直线交点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 read_point(){Point temp;scanf("%lf %lf", &temp.x, &temp.y);return temp;}Point GetD(Point A, Point B){return (B-A)/3.0 + A;}int main (){int T;scanf("%d", &T);while(T--){Point A, B, C, D, E, F, P, Q, R;A = read_point();B = read_point();C = read_point();D = GetD(B, C);E = GetD(C, A);F = GetD(A, B);P = GetLineIntersection(A, D-A, B, E-B);R = GetLineIntersection(A, D-A, C, F-C);Q = GetLineIntersection(B, E-B, C, F-C);double ans = Area2(P, R, Q) / 2.0;printf("%.0lf\n", fabs(ans));}return 0;}
0 0
- uva 11437 Triangle Fun
- UVA 11437 Triangle Fun
- uva 11437 - Triangle Fun
- UVa 11437 - Triangle Fun
- UVA 11437 Triangle Fun
- uva 11437 - Triangle Fun
- UVA 11437 Triangle Fun
- UVa 11437 - Triangle Fun
- UVA 11437 - Triangle Fun
- UVA 11437 || Triangle Fun
- UVA 11437 Triangle Fun
- UVa 11437 Triangle Fun(几何)
- Triangle Fun - UVa 11437 几何
- uva 11437 - Triangle Fun(几何)
- uva 11437 Triangle Fun (简单计算几何)
- 入门题 UVA 11437 - Triangle Fun
- UVA 11437 - Triangle Fun 向量几何
- 【UVA】11437Triangle Fun(简单几何)
- 【Gordon's Great Escape】美食大冒险第二季第一集双语字幕
- 黑马程序员 银行业务调度系统
- 黑马程序员 交通灯管理系统
- OJ中java,C++输入输出重定向的方法
- asp.net发送邮件
- UVA 11437 Triangle Fun
- 事件过滤器
- 1384 二维数组中的查找 @jobdu
- jQuery Ajax 跨域请求
- If We Were a Child Again
- UDP
- Android xmpp 资源列表
- 中国软件技术大会参后感
- 1510 替换空格 @Jobdu