转自:https://blog.csdn.net/chenlu5201314/article/details/99678398

 

椭圆半径公式如下

【C#】 根据椭圆边框和任意角度计算椭圆二维坐标

椭圆坐标公式

【C#】 根据椭圆边框和任意角度计算椭圆二维坐标

【C#】 根据椭圆边框和任意角度计算椭圆二维坐标

角度转弧度公式

【C#】 根据椭圆边框和任意角度计算椭圆二维坐标

弧度转角度公式

【C#】 根据椭圆边框和任意角度计算椭圆二维坐标

  • 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标 为半径
  • 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标 为横轴(长轴)
  • 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标 为竖轴(短轴)
  • 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标 为任意角度/弧度,
  • 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标 为椭圆上 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标 对应的横坐标
  • 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标 为椭圆上 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标 对应的纵坐标
  • 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标 弧度
  • 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标 角度

C#代码

        /// <summary>
        /// 椭圆求点公式
        /// </summary>
        /// <param name="lpRect">椭圆边框</param>
        /// <param name="angle">角度</param>
        /// <returns></returns>
        public Point GetArcPoint(Rectangle lpRect, float angle)
        {
            Point pt = new Point();
            double a = lpRect.Width / 2.0f;
            double b = lpRect.Height / 2.0f;
            if (a == 0 || b == 0) return new Point(lpRect.X, lpRect.Y);
 
            //弧度
            double radian = angle * Math.PI / 180.0f;
 
            //获取弧度正弦值
            double yc = Math.Sin(radian);
            //获取弧度余弦值
            double xc = Math.Cos(radian);
            //获取曲率  r = ab/\Sqrt((a.Sinθ)^2+(b.Cosθ)^2
            double radio = (a * b) / Math.Sqrt(Math.Pow(yc * a, 2.0) + Math.Pow(xc * b, 2.0));
 
            //计算坐标
            double ax = radio * xc;
            double ay = radio * yc;
            pt.X = (int)(lpRect.X + a + ax);
            pt.Y = (int)(lpRect.Y + b + ay);
            return pt;
        }

 

相关文章: