Delphi GDI+ 使用已知的矩形和角度在圆弧上查找点

Delphi GDI+ find point on an arc using the known rectangle and angle

在 Delphi 10.2.3 中使用 GDI+:我从矩形 RectF 绘制了一个椭圆(非圆形)弧,并使用 DrawArcF 定义了起始角和扫描角。我需要能够仅根据点的度数找到沿圆弧中心线的任何点(无论笔宽如何) - 例如,如果圆弧从 210 开始 120 度,我需要找到该点,比如,284度,相对于RectF。

在这种情况下,无论大小如何,矩形的纵横比都保持不变,因此圆弧的形状也应保持一致,如果有差异的话。

关于如何解决这个问题有什么想法吗?

cx, cy 为中心、半轴 a,b 对角度 Fi 的轴对齐椭圆的参数方程是:

t = ArcTan2(a * Sin(Fi), b * Cos(Fi))
x = cx + a * Cos(t)
y = cy + b * Sin(t)

(我用 atan2 解决了 atan 范围 limitation/sign 的问题)


请注意,参数 t 贯穿相同的范围 0..2*Pi,但与真实角度 Fi 不同(它们在角度 k*Pi/2 处重合)。
Fi/t 比率的图片 b/a=0.6 from Mathworld (靠近公式 58)