1、计算弧度
Point CenterPoint = new Point(100,100)//绘制图片上中心点
float distance =100;//距离
float radian =(float)(angle * 3.1415926535897931 / 180.0); //弧度
float x = (float)Math.Sin(radian)* distance + CenterPoint.X;
float y = (float)CenterPoint.Y - (float)Math.Cos(radian) * distance;
2、判断一个点是否在一个框内
public int isLeft(Point P0, Point P1, Point P2)
{
return (((P1.X - P0.X) * (P2.Y - P0.Y)) - ((P2.X - P0.X) * (P1.Y - P0.Y)));
}
//A_0点是否在A_1中
private bool PointInFences(Point A_0, Point[] A_1)
{
int num = 0;
int index = 0;
for (int i = 0; i < A_1.Length; i++)
{
if (i == (A_1.Length -1))
{
index = 0;
}
else
{
index++;
}
if (A_1[i].Y <= A_0.Y)
{
if ((A_1[index].Y > A_0.Y) && (isLeft(A_1[i], A_1[index], A_0) > 0))
{
num++;
}
}
else if ((A_1[index].Y <= A_0.Y) && (isLeft(A_1[i], A_1[index], A_0) < 0))
{
num--;
}
}
if (num == 0)
{
return false;
}
return true;
}
3、角度叠加
data.angle += device.Angle;
4、角度镜像
(1)、上下镜像
data.angle = 180 - device.angle;
(2)、左右镜像
data.angle *=-1;