1

如何计算两个圆之间的弧?圆弧必须与圆上的两点相切。

这是一张图片来说明它。我正在尝试编码和计算橙色弧线和蓝色弧线。

替代文字

更多细节:

您的小程序应该有 2 种模式:2D 和 3D。用户应该能够通过按空格键在它们之间切换。在 2D 模式下,用户可以编辑四个控制点 A、B、C 和 D 的位置,应该会看到由这些点定义的 4 个圆弧,如下所示。红色圆弧位于以 A 为中心、半径为 ||AB|| 的圆上。绿色圆弧位于以 C 为中心、半径为 ||CD|| 的圆上。橙色圆弧位于一个支持圆上,该圆与 B 处的红色圆弧的支持圆相切,并且在 E 点与绿色圆相切,您的代码必须计算该圆。该支持圈不应将 A 和 C 分开(即 A 和 C 必须都在该圈内或不在该圈内)。相似地,蓝色圆弧位于不将 A 和 C 分开的圆上,该圆与 D 处的绿色圆弧的支撑圆相切,并且在您的程序必须计算的某个点 F 处与红色圆弧的支撑圆相切。红色弧线顺时针从 F 到 B。橙色弧线从 B 到 E。绿色弧线从 E 到 D。蓝色弧线从 D 回到 F。这四个弧线形成了区域 S 的平滑边界飞机。请注意,根据控制点的位置,橙色和蓝色弧线可能是凹的或凸的。下图中,蓝色圆弧是凹的。(如上图)这四个弧形成平面区域S的平滑边界。请注意,根据控制点的位置,橙色和蓝色弧线可能是凹的或凸的。下图中,蓝色圆弧是凹的。(如上图)这四个弧形成平面区域S的平滑边界。请注意,根据控制点的位置,橙色和蓝色弧线可能是凹的或凸的。下图中,蓝色圆弧是凹的。(如上图)

4

3 回答 3

1

有很多“切圆”!

替代文字

于 2010-11-04T21:13:37.340 回答
0

一般来说,你不能。通过 AB 和 CE 画直线,并将它们延伸到交点。称为交点 M。当且仅当 BM = EM 时,您可以通过 B 和 E 绘制与圆相切的弧。

于 2010-11-04T20:31:34.973 回答
0

令 G 为 B 和 E 之间的圆弧的圆心,H 为 F 和 D 之间的圆弧的圆心。

关键是与圆相交的线是切线当且仅当它垂直于交点处的半径。这意味着如果您有两个相切的圆,则切点和圆心是共线的。

所以这意味着中心 G 是 B 和 A 定义的线与 E 和 C 定义的线的交点。 同样,中心 H 是 A 和 F 定义的线与 C 和 C 定义的线的交点D.

给定这些中心,您可以仅从中心到切点的距离确定两个圆的半径。从那里你可以使用标准方法来绘制弧给定它的端点和它所属的圆。

于 2010-11-05T17:08:15.970 回答