zoukankan      html  css  js  c++  java
  • 【C#】 根据椭圆边框和任意角度计算椭圆二维坐标

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

    椭圆公式 

    椭圆半径公式如下

    r = frac{ a cdot b}{sqrt{(a cdot sin{	heta})^2+(b cdot cos{	heta})^2}}

    椭圆坐标公式

    x = frac{ a cdot bcdot cos 	heta}{sqrt{(a cdot sin{	heta})^2+(b cdot cos{	heta})^2}}

    y = frac{ a cdot bcdot sin{	heta} }{sqrt{(a cdot sin{	heta})^2+(b cdot cos{	heta})^2}}

    角度转弧度公式

    radian =frac{pi cdot angle}{180}

    弧度转角度公式

    angle =frac{180 cdot radian }{pi}

    • r 为半径
    • a 为横轴(长轴)
    • b 为竖轴(短轴)
    • 	heta 为任意角度/弧度,
    • x 为椭圆上 	heta 对应的横坐标
    • y 为椭圆上 	heta 对应的纵坐标
    • radian 弧度
    • angle 角度

    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;
            }
  • 相关阅读:
    pat1041. Be Unique (20)
    Linux基础命令---service
    Linux基础命令---last
    Linux基础命令---date
    Linux基础命令---ckconfig
    Linux基础命令---cal
    Linux基础命令---bc
    linux基础命令---df
    linux基础命令---du
    Linux基础命令---hwclock
  • 原文地址:https://www.cnblogs.com/jiangcm/p/11640663.html
Copyright © 2011-2022 走看看