1

假设给定一个圆,线 AB 包含它的中心 O,这样 A 和 B 在圆上(OA=OB=半径)。在点 A 上绘制切线 t,我应该计算圆的某些点 (a,b,c,d...) 到切线上的点 (at, bt, ct, dt, . ..) 使得距离 Aa(沿圆的距离)与距离 Aat(沿切线的距离)相同(距离 Ab、Ac、Ad 也相同)。但是,在这里,应该考虑一定的约束:从圆的一侧从 A 到 B 的圆的那些点(在 (a, b, c, d) 之间)应该放在切线的一侧(较近),从 A 到 B 的圆的另一侧应放在另一侧。基本上,圆应该在 B 处分割,然后映射到切线。

应该注意的是,我有关于 A、B、O、a、b、c、d 坐标的信息。我应该计算(at,bt,ct,dt)。为了解决这个问题,我有两种方法,但我不确定如何确保它们始终正常工作。

1)我计算点A的切线方程。然后对于每个点(a,b,c,d)我计算到A的距离(沿着圆),并使用这些距离来计算(at,bt,ct , dt...) 沿切线。我在这里不知道如何计算从 A 到 (a, b, c, d) 的距离。问题是“正确的一侧”确定,这意味着我应该如何确定该点应该映射在切线的一侧还是另一侧。确定这一点的方法是什么。

2)我计算点A的切线方程。然后对于每个点(a,b,c,d)我计算到A的距离(沿着圆),并使用这些距离来计算(at,bt,ct , dt...) 沿切线。为了确定给定点的“正确的一侧”,我可能会使用该点到切线的投影。但是,即使这样,我怎么知道“哪一边是哪一边”?也许有更简单的方法可以做到这一点。

欢迎任何有关如何执行此操作的建议。如果我不够精确,我会详细说明。

4

2 回答 2

1

一个更好的建议是计算一个坐标变换,将圆映射到一个以原点为中心的单位圆,这样 A 将具有坐标 (1, 0)(和 B 分别为 (-1, 0))。变换应该是旋转膨胀。现在,Aa 上的距离只是以弧度测量的角度 aOA。所以你可以很容易地计算出,它是 (1, atan2(y, x) ) 其中 (x, y) 是 a 的坐标。

现在,您唯一需要做的就是返回原始坐标系,应用逆变换。

于 2010-11-13T19:15:47.373 回答
0

要确定您在圆圈的哪一侧,您基本上需要确定AB您在线路的哪一侧。有关该问题的答案,请参见例如确定点位于直线的哪一侧

于 2010-11-13T18:50:02.840 回答