c# 坐标处理

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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值