#include<stdio.h> #include"math.h" #include"string.h" double mianji(double x1,double y1,double x2,double y2,double x3,double y3) { double x=((x1*y2-x2*y1)+(x2*y3-x3*y2)+(x3*y1-x1*y3))/2; return x>0?x:x*(-1.0); } int main() { int t; scanf("%d",&t); while(t--) { double a[102],b[102]; int num; int i,j; double x1,y1,x2,y2,x3,y3,x0,y0; double mj,mj1,mj2,mj3,mj4; int ans=0; scanf("%d",&num); for(i=0;i<num;i++) scanf("%lf%lf",&a[i],&b[i]); scanf("%lf%lf",&x0,&y0); scanf("%lf%lf",&x1,&y1); scanf("%lf%lf",&x2,&y2); scanf("%lf%lf",&x3,&y3); mj=(mianji(x0,y0,x1,y1,x2,y2))*2; for(i=0;i<num;i++) { mj1=mianji(a[i],b[i],x0,y0,x1,y1); mj2=mianji(a[i],b[i],x1,y1,x2,y2); mj3=mianji(a[i],b[i],x2,y2,x3,y3); mj4=mianji(a[i],b[i],x3,y3,x0,y0); if((mj1+mj2+mj3+mj4-mj)<0.0000001&&(mj1+mj2+mj3+mj4-mj)>-0.0000001) ans++; } printf("%d\n",ans); // 0.5 0.5 0.5 1.5 1.5 1.5 1.5 0 } return 0; } |
Double click to view unformatted code.