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

问题描述

在 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 范围限制/符号问题)


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

enter image description here