Metlivi 博客

如何构造一个边缘与两个圆相接的填充桥

要在两个圆之间构造一个填充桥,先找出两个外公切线与圆相切的四个点,然后将这些点连接成一个封闭四边形。将四边形与圆合并,形成一个连续的剪影;或者减去圆的副本,留下一个末端弯曲、与圆边缘贴合的独立桥形。

本教程使用 Inkscape 为扁平风格角色或虚拟宠物插画制作精确的连接件。所选构造方式的上下两边均为直线,并能与圆平滑相接。教程先提供一个含精确坐标的实例,再给出可用于不同圆尺寸和位置的公式。

2026年10月29日阅读约需 7 分钟作者:Metlivi Editorial Team
第 1 节

怎样才能让桥形与两个圆平滑相接?

桥形可以接触圆,但不一定能与圆的轮廓平滑衔接。将桥形的角放在圆周上可以形成接触,但桥形的边仍可能产生明显的折角。要实现平滑过渡,该边必须沿接触点处的圆的切线延伸。

对于两个分离的圆,使用一对外公切线:它们沿两个圆的外侧延伸。每个接触点都位于其对应圆上,且经过该点的半径与切线垂直。这些条件由Wolfram MathWorld 的圆与圆的切线方程描述。

这四个接触点确定了构造四边形。它的两条长边成为桥形外露的边;两条封口边则穿过圆。合并图形或去除圆形重叠部分后,这些封口边便会消失。

这种构造得到的是一个边为直线的连接件。向内弯曲、收腰的连接件需要采用不同的曲线设计;仅凭切点无法确定这种形状。

第 2 节

绘制前需要准备什么?

先准备两个完整的圆、纯色填充,并设为无描边。全程使用同一种坐标单位。可见的描边可能会遮住需要对齐的边界,因此应在填充几何形状构造完成后再添加最终轮廓。

在 Inkscape 中,按 E 选择椭圆工具,然后拖动时按住 Ctrl,即可创建圆。要精确设定尺寸,请在工具控件中将 Rx 和 Ry 设为相同的值。如果对象是弧形或扇形,请先使用 使椭圆完整。这些控件的说明见 Inkscape 的圆形、椭圆和弧形指南。

打开 对象 → 填充和描边。设置纯色填充,并在描边颜色下选择十字形的 无绘制 控件。检查构造时,将不透明度保持在 100%。有关这些设置,请参阅填充和描边对话框。

将两个原始圆各保留一份副本,放在工作区域之外。最终的布尔运算会改变构造,保留原始圆有助于后续调整。

第 3 节

如何根据示例坐标构造精确的桥形?

使用以下示例尺寸。它们特意构造出一个明显收窄的连接件,便于检查接触几何关系。坐标单位为像素,x 向右递增,y 向下递增。

对象 圆心 半径 边界框
圆 A (100, 100) 70 x = 30–170;y = 30–170
圆 B (200, 100) 10 x = 190–210;y = 90–110

两圆圆心相距 100 个单位。半径之和减去圆心距后,两圆最近边缘之间相距 20 个单位。桥形必须跨过这个间隙,同时平滑延伸至圆形轮廓。

这两个圆的四个切点如下:

点 位置 坐标
A 上 圆 A 上部切点 (142, 44)
B 上 圆 B 上部切点 (206, 92)
B 下 圆 B 下部切点 (206, 108)
A 下 圆 A 下部切点 (142, 156)

选择贝塞尔/钢笔工具,按照表格中的顺序创建一个四角路径。逐个单击角点,不要拖动,然后单击起点以闭合路径。为路径设置与圆相同的纯色填充,并移除描边。

要精确定位,先大致绘制四边形。按 N 切换到节点工具,逐个选中节点,然后在工具控件中输入其 x 和 y 坐标。将坐标单位设为像素。Inkscape 在节点工具选项中介绍了这些数值字段。

按周边顺序连接各点:A 上 → B 上 → B 下 → A 下 → 闭合。若沿对角线连接各点,路径会交叉,而不是形成所需的填充桥形。

这些示例坐标经过确定性计算验证:每个切点到对应圆心的距离都正确,桥形的每条长边也都与对应的接触半径垂直。

第 4 节

应该合并桥形,还是让它保持独立?

根据角色的编辑或上色方式选择最终结构。

期望结果 构造方式
连续的单色剪影 将两个圆与四边形合并
在圆处结束、可单独着色的桥形 从四边形中减去圆的副本
便于后续调整的可编辑构造 在执行任一运算前保留原始圆和四边形

要制作单一剪影,请选中两个圆和四边形,然后选择 路径 → 联合。要制作独立桥形,请复制两个圆,将副本合并为一个切割图形,并将其置于四边形上方。选中切割图形和四边形,然后选择 路径 → 差集。原始圆不要包含在此次选择中。

差集会移除重叠的圆形区域,留下沿着相对圆边界延伸的弯曲桥形末端。联合则会保留整体填充轮廓。关于这些操作和堆叠顺序的重要性,请参阅 Inkscape 的布尔运算指南。

四边形的直线封口边只是构造边。如果未裁切的四边形以不同颜色显示,就会在圆内露出这些弦线。若桥形需要单独着色,并且必须恰好止于圆周,请使用差集流程。

第 5 节

如何计算其他圆的切点?

以下公式是根据 MathWorld 的切线方程中的半径长度和垂直条件推导出的实用参考,可用于任意位置的圆,因此圆心不必水平对齐。

设圆心为 A = (ax, ay) 和 B = (bx, by),半径分别为正数 rA 和 rB。先计算圆心距和从 A 指向 B 的单位向量:

d = sqrt((bx − ax)² + (by − ay)²)

u = (ux, uy) = ((bx − ax) / d, (by − ay) / d)

构造垂直的单位向量 v = (−uy, ux)。然后计算:

q = (rA − rB) / d

s = sqrt(1 − q²)

n₁ = q·u + s·v

n₂ = q·u − s·v

这里的向量乘法指将每个分量乘以标量。每个向量 n 都从圆心指向一个切点。四个点为:

  • A₁ = A + rA·n₁
  • B₁ = B + rB·n₁
  • A₂ = A + rA·n₂
  • B₂ = B + rB·n₂

沿周边绘制:A₁ → B₁ → B₂ → A₂ → 闭合。根据圆的排列和坐标方向,任一法向量都可以代表上侧。

在上述示例中,u = (1, 0)、q = 0.6、s = 0.8。两个法向量为 (0.6, 0.8) 和 (0.6, −0.8)。将它们分别乘以各圆的半径,再加上相应的圆心,即可得到前文列出的四个坐标。

该构造可直接从这些向量得出:每个法向量的长度都为一,因此切点位于圆上。它与对应接触点之间线段的点积为零,因而满足相切条件。若两圆半径相等,则 q = 0,桥形两边便与圆心连线平行。

第 6 节

什么情况下需要调整这种构造?

对于两个分离圆之间的构造,要求 d > rA + rB。这样两圆之间才有需要由桥形填充的实际间隙。如果两个圆已经重叠,将它们连接起来仍可能有用,但那属于不同的形状问题。

公式本身要求 d > |rA − rB|,才能得到两条不同的外公切线。在等号成立时,切线构造会退化。低于该阈值时,一个圆位于另一个圆内,平方根没有实数值。若两圆圆心重合,单位向量的计算也无法定义。这些限制均可由上述公式得出。

每当移动或调整任一圆的大小时,都要重新计算切点。凭感觉移动桥形角点,可能仍能保持接触,却会失去相切关系。同样,将圆拉伸成椭圆会改变几何关系;这个针对圆的公式不再适用。

第 7 节

如何检查连接是否完成?

分别在近距离缩放和实际显示尺寸下检查结果。按以下顺序排查可见瑕疵:

  1. 检查填充。 确认四边形已闭合、已填充,且没有交叉线段。
  2. 检查圆的几何参数。 对照计算结果核实圆心、半径和坐标单位。
  3. 检查四个接触点。 先修正节点坐标,再调整曲线手柄。
  4. 检查最终结构。 确认联合或差集生成了你需要的剪影或独立桥形。
  5. 检查轮廓。 如果设计需要描边,请为完成后的剪影添加描边;分别描边的部件则要检查是否出现不需要的内部边界。

要进行数值检查,测量每个切点到对应圆心的距离:它应等于该圆的半径。然后确认桥形每条外露边都与其接触半径垂直。这些检查能区分精确的连接与仅仅看起来对齐的连接。

接触点正确后,剩下的选择就是如何组织图稿:合并为一个剪影,还是保留为独立的填充形状。保留源圆和计算出的点,即使角色比例发生变化,也能重新构建出同样贴合边缘的桥形。

第 8 节

来源

相关阅读

继续探索这个主题