ACM常考算法
double dtheta,theta1,theta2; theta1 = atan2(y1,x1); theta2 = atan2(y2,x2); dtheta = theta2 - theta1; while (dtheta > PI) dtheta -= PI*2; while (dtheta < -PI) dtheta += PI*2; return(dtheta); }
4.两点距离(2D、3D)
语法:result=distance_2d(float x1,float x2,float y1,float y2); 参数:
x/y/z1
各点的x、y、z坐标 ~2:
返回
两点之间的距离 值: 注意: 源程序:
需要 math.h
float distance_2d(float x1,float x2,float y1,float y2) {
return(sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))); }
float distance_3d(float x1,float x2,float y1,float y2,float z1,float z2) {
return(sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2))); }
5.射向法判断点是否在多边形内部
语法:result=insidepolygon(Point *polygon,int N,Point p); 参数:
*polyg
多边形顶点数组 on:
N: 多边形顶点个数 p: 被判断点
返回
0:点在多边形内部;1:点在多边形外部 值: 注意:
若p点在多边形顶点或者边上,返回值不确定,需另行判断