如图,已知点P0坐标。P0-P1为椭圆长轴a,P0-P2为短轴b,椭圆倾斜角度45度。求点P2坐标。

此类问题常用于导图的分解椭圆,需要将椭圆等分360*N小份,然后直线画出各个小份,此时就需要求出等分直线的起始点和终止点坐标。

一下就不直接写出推导过程,我们直接上图,并给出结论。

 C#方法:

#region 计算坐标

        /// <summary>
        /// 计算坐标
        /// </summary>
        /// <param name="CentrePointTemp"></param>
        /// <param name="MajorAxisTemp"></param>
        /// <param name="MinorAxisTemp"></param>
        /// <param name="CalcuateAngle">角度,不是弧度</param>
        /// <param name="倾斜角度Temp">角度,不是弧度</param>
        /// <returns></returns>
        public Point GetArcPoint(Point CentrePointTemp, double MajorAxisTemp, double MinorAxisTemp, double CalcuateAngle, double 倾斜角度Temp)
        {
            Point Result = new Point();

            //获取曲率  r = ab/Sqrt((a.Sinθ)^2+(b.Cosθ)^2
            double RadioTemp = MajorAxisTemp * MinorAxisTemp
                / Math.Sqrt(
                    Math.Pow(Math.Sin(CalcuateAngle * Math.PI / 180) * MajorAxisTemp, 2)
                    + Math.Pow(Math.Cos(CalcuateAngle * Math.PI / 180) * MinorAxisTemp, 2)
                    );

            double XTemp = RadioTemp * Math.Cos((倾斜角度Temp + CalcuateAngle) * Math.PI / 180);
            double YTemp = RadioTemp * Math.Sin((倾斜角度Temp + CalcuateAngle) * Math.PI / 180);

            Result.X = CentrePointTemp.X + XTemp;
            Result.Y = CentrePointTemp.Y + YTemp;

            return Result;
        }

        #endregion

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐