如图,已知点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