几何
//向量积 n=a×b ,用矩阵的方法实现,n与ab两个向量都垂直,三角形ABC的面积= 0.5*abs(a×b)=0.5×abs(b×c)=0.5*abs(c×a)
//a=(xa,ya,za) b=(xb,yb,zb)
n=a×b=(yazb-ybza,xbza-xazb,xayb
//向量(x,y)绕原点旋转X弧度(度 )
#include <iostream> #include <stdio.h> #include <math.h> #define pi acos(-1)// using namespace std; int main(){ double x,y,x1,y1; double len; double t,k;// scanf("%lf%lf",&x,&y); len=sqrt(x*x+y*y); t=acos(x/len); t=y>0?t:(2*pi-t); scanf("%lf",&k); k=k/180*pi; t+=k; x1=len*cos(t); y1=len*sin(t); printf("%lf %lf\n",x1,y1); }
// 已知两点生成 线段或者直线 已知点a(x1,y1),b(x2,y2)
(x1-x2)*(y-y2)-(y1-y2)*(x-x2)=0
//点到直线的距离
d=abs((x1-x2)*(y-y2)-(y1-y2)*(x-x2))/sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
//点到直线的垂足并 设直线为 AX+BY+C=0 点为 (X1,Y1),垂足为(X2,Y2)
X2=(B*B*X1-A*B*Y1-AC)/(A*A+B*B)
Y2=(A*A*Y1-A*B*X1-BC)/(A*A+B*B)
//判断点是否在多边形内
//从该点做一条水平向右的射线如与多边形相交奇数次则 在内,偶数此则在外,不考虑边界
#include <stdio.h> int n,a[100][2]; int judge(int x,int y){ int n=0,x1,x2,y1,y2; for(i=0;i<n;i++){ x1=a[i][0];y1=a[i][1]; x2=a[(i+1)%n][0];y2=a[(i+1)%n][1]; if(x1==x2){ if(x1==x && (y>y1 && y<y2) || (y>y2 &&y<y1)) n++; } else{ if(y>(x-x2)*(y1-y2)/(x1-x2)+y2) n++; } } if(n%2==0) return 0; else return 1;//在内部 }