uva 11437 - Triangle Fun
这是一道简单的计算几何;
In the picture below you can see a triangle ABC. Point D, E and F divides the sides BC, CA and AB into ratio 1:2 respectively. That is CD=2BD, AE=2CE and BF=2AF. A, D; B, E and C, F are connected. AD and BE intersects at P, BE and CF intersects at Q and CF and AD intersects at R.
So now a new triangle PQR is formed. Given triangle ABC your job is to find the area of triangle PQR.
这是我在uva上做的第一道题,纪念一下 =_=
#include<iostream> using namespace std; typedef struct points { double x,y; points(double xx=0,double yy=0):x(xx),y(yy){} }vectors; points operator + (points a,vectors b) { return points(a.x+b.x,a.y+b.y); } vectors operator - (points a,points b) { return vectors(a.x-b.x,a.y-b.y); } vectors operator * (double a,vectors b) { return vectors(a*b.x,a*b.y); } double cross(vectors a,vectors b) { return a.x*b.y-a.y*b.x; } points inter(points a,points b,points c,points d) { vectors v=b-a,w=d-c,u=a-c; double t=cross(w,u)/cross(v,w); return a+t*v; } int main() { points a,b,c,d,e,f,p,q,r; int n,area; cin>>n; while(n--) { cin>>a.x>>a.y>>b.x>>b.y>>c.x>>c.y; d=b+1/3.0*(c-b); e=c+1/3.0*(a-c); f=a+1/3.0*(b-a); p=inter(a,d,b,e); q=inter(b,e,c,f); r=inter(c,f,a,d); area=(int)(0.5+cross(q-p,r-p)/2); cout<<area<<endl; } return 0; }