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)
在 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)