椭圆画法全解析:绳钉法、四心圆法与CAD放样
画椭圆这事很多人第一反应是初中数学题真到要落地的时候——石膏板上开个椭圆灯槽、庭院里围一个椭圆花坛、板材上裁一块椭圆桌面、纸上画一张放样图——它立刻变成一个手艺活。我见过太多人卡在这一步公式背得出绳子和钉子摆在地上就是画不圆或者画出来两头不对称返工。这篇就把椭圆的画法从头到尾摊开讲定义怎么理解、尺寸怎么换算成可操作的参数、五种不同场景下的具体画法各自适合什么尺寸、哪些地方最容易翻车。纸上画、地上放线、板材开料、软件建模不同尺寸和不同材料对应的路子完全不一样选错了方法后面全白干。不管你是第一次画椭圆还是做过几次但总差那么一点下面这些内容应该都能直接用上。1. 画椭圆之前先把概念掰清楚1.1 用两根钉子和一根绳子理解椭圆椭圆的定义不复杂平面内到两个定点的距离之和等于一个常数的点走一圈构成的轨迹就是椭圆。这两个定点叫焦点那个常数必须大于两个焦点之间的距离否则轨迹就退化成一条线段。这个定义本身就是一种画法也就是后面要重点讲的绳钉法。你可以这么想地上钉两个桩子一根绳子两端各系在一个桩上第三个人拿笔把绳子绷紧绕着走一圈笔尖划出来的形状就是标准椭圆。绳子绷紧这个动作保证了到两点距离之和恒定而这个恒定值就是绳子的长度。理解了这个物理图景很多参数关系就不用死记了。绳长决定长轴两个焦点的间距决定椭圆扁的程度两钉离得越近画出来越接近圆两钉离得越远画出来越扁。极端情况两钉重合绳子长度固定画出来就是正圆。所以圆是椭圆的特例这不是一句套话是真能指导操作的结论——你拿绳子画圆的时候其实就是把两个焦点合并成了一个。1.2 长轴、短轴、焦距、离心率几个必须分清的参数椭圆的几个核心参数工程上用的是这四个长轴 2a椭圆最长方向的直径也是整个轮廓的最大外形尺寸。短轴 2b跟长轴垂直方向上的直径。焦距 2c两个焦点之间的距离。离心率 e c / a描述扁平程度e 越接近 0 越像圆越接近 1 越扁。它们之间的关系只有一条公式但必须记牢c² a² - b² a 是长半轴b 是短半轴c 是半焦距这里有个坑我见过无数次长轴和长半轴是两个东西。客户说做一个长轴 1 米 2 的椭圆桌面指的是整个外轮廓最长处 1.2 米那么 a 600mm如果理解成 a 1200mm做出来就是 2.4 米直接报废一张板。图纸上标 2a、2b 的写法是为了避免歧义但口语里没人这么说所以接活的时候一定要确认一句是全长还是从中心量。离心率这个参数在小尺寸设计里挺有用。同样是 1.2 米 × 0.72 米的桌面2a : 2b 5 : 3算下来 a 600b 360c √(360000 − 129600) √230400 480e 0.8视觉上是一个比较饱满、偏圆润的椭圆。如果做到 2a : 2b 2 : 1e 就到了 0.866看起来会明显偏尖。家具和室内造型里2a : 2b 落在 1.4 : 1 到 1.8 : 1 之间观感最稳超过 2 : 1 就要考虑是不是客户其实想要一个跑道形了。1.3 别把椭圆和跑道形搞混这是返工率最高的一条这是我在实际操作中踩得最狠的一个坑值得单独拎出来说。很多人嘴上说椭圆形脑子里想的其实是体育场形也就是两头各一个半圆、中间用两段直线连起来的轮廓。它跟椭圆的区别在哪椭圆是一条连续光滑的曲线任何一点都有确定的曲率从长轴端点走到短轴端点曲率是连续变化的跑道形在直线段和半圆的连接处曲率是突变的肉眼能看出一个接缝。为什么这个区别要命因为加工方式完全不同。跑道形简单到不能再简单两端各铣一个 R 的半圆中间直段一拼就行普通木工铣刀、开孔器、甚至手工锯加砂纸都能做。椭圆不行它的曲率处处在变没有现成的圆弧刀能一次成型要么靠模板仿形要么上 CNC 按路径走。所以接单的时候判断标准是看客户能不能接受中间有一段是直的。如果不能接受、要求任何地方都是弧那就是真椭圆如果只是不要太方跑道形往往更划算加工费能差好几倍。图纸上判断的方法也很直接跑道形的标注是两个 R 加一段长度比如 R300 直段 600椭圆的标注是长轴短轴两个尺寸。2. 先算再画把尺寸换算成能落地的参数2.1 焦距怎么算一次完整的推演不管用哪种画法第一步都是把图纸上的长轴 × 短轴换算成焦点位置。以一张常见的椭圆餐桌为例外轮廓 2000mm × 1200mm长轴 2a 2000 → a 1000 短轴 2b 1200 → b 600 半焦距 c √(a² - b²) √(1000² - 600²) √(1000000 - 360000) √640000 800所以两个焦点分别位于长轴中心两侧各 800mm 处两钉间距 2c 1600mm。再算一个更大的宴会厅吊顶常见的椭圆造型长轴 8000mm、短轴 5000mma 4000b 2500 c √(4000² - 2500²) √(16000000 - 6250000) √9750000 ≈ 3122.5 两钉间距 2c ≈ 6245mm这个尺寸就很有意思了6.2 米的钉距意味着你得在两块拼起来的石膏板或者楼板上作业钉子没法直接钉在地上得换成别的方法——这个后面第 3 章会讲。计算的时候有个实用技巧如果 a 和 b 构成勾股数比如 5:4:3 的变形c 就是整数现场好量。1000 和 600 这组凑巧得到 800属于运气好实际工作中大部分时候 c 是无理数量到毫米就行没必要纠结。2.2 绳长到底怎么定开口绳和闭合绳差一个 2c关于绳钉法的绳长网上的说法经常打架原因是有两种操作方式绳长算法不一样混用就错。第一种开口绳。绳子两端分别系在两个钉子焦点上不闭合笔在中间把绳子绷紧。这种情况下从焦点 F1 经过笔尖 P 到焦点 F2整段绳子的长度就是 |PF1| |PF2|而椭圆的定义要求这个和等于 2a。所以开口绳长 2a 长轴长度第二种闭合绳圈。把绳子打成一个闭合的圈套在两个钉子上笔从圈里穿过去往外拉。这时候圈的周长得算上绕在两个焦点之间的那一段直的距离即 |PF1| |PF2| |F1F2| 圈长。代入 |PF1| |PF2| 2a、|F1F2| 2c闭合圈长 2a 2c还是用 2000 × 1200 那个例子开口绳长 2000mm闭合圈长 2000 1600 3600mm。验算一下笔拉到短轴端点 B 时|BF1| |BF2| √(c² b²) √(640000 360000) √1000000 1000 a那么圈的周长用掉 |BF1| |BF2| 2c 1000 1000 1600 3600跟上面算的一致。对得上说明公式没错。注意这是整个绳钉法里最容易出错的地方。闭合绳圈如果按 2a 去剪画出来的椭圆长轴只有 2a − 2c短轴也会同比缩小整圈小一大截。剪绳子之前先确定用哪种方式。2.3 常用规格速查表现场干活的时候没工夫每次都开计算器我习惯提前把常用尺寸的表打出来贴在工具包里。下面这张表可以直接抄走单位毫米长轴 2a短轴 2b半焦距 c两钉间距 2c开口绳长 2a闭合圈长 2a2c400240160.0320.0400720.0600400223.6447.26001047.21000600400.0800.010001800.01200800447.2894.412002094.420001200800.01600.020003600.024001600894.41788.924004188.9300018001200.02400.030005400.0400025001561.23122.540007122.5600040002236.14472.1600010472.1800050003122.56245.0800014245.0从表里能看出一个规律长宽比越接近 1c 越小两个钉子越靠中间长宽比越大c 越接近 a钉子越往外跑。当长轴是短轴的 2 倍时c 0.866a两个钉子几乎就贴在长轴两端附近了这时候钉子的位置对误差特别敏感稍微偏个 5mm画出来的形状就明显歪。3. 绳钉法实操从一张纸到一面墙3.1 材料和工具怎么选决定了一半的成败绳钉法看着简陋但材料选不对精度会差到没法用。几个关键点绳子。首选低延展性的线材——尼龙线、涤纶线、细钢丝、钓鱼线都行。最忌讳棉线和麻绳这两种材料有蠕变特性你拉紧的时候它伸长松一下就回弹绕着画一圈前后张力不一致闭合处必然对不上。如果只能用麻绳提前做一次预拉伸把绳子挂上重物吊一晚上让它先释放掉弹性再剪长度。钉子。直径越细越好最好用大头针或者 1.5mm 以下的细钢钉。原因很实际绳子是绕在钉子外侧的钉子有直径实际起作用的焦点位置在钉子外缘而不是钉尖这会让短轴略微变大。尺寸越小影响越明显画 100mm 以下的小椭圆时用大钉子能差出好几毫米。笔。硬芯铅笔或者细头记号笔笔尖要能咬住绳线不打滑。握笔姿势是个细节——手要贴着绳子往下压让绳线绕过笔杆靠下的位置而不是握在笔的上端握太高了笔尖容易偏摆。底板。纸面作业一定垫软垫橡皮、瓦楞纸、鼠标垫都行。不垫的话针孔在画的过程中会被绳子越拉越大焦点位置漂移画到后半圈就歪了。3.2 纸面和板材上的小尺寸画法完整流程以 1000mm × 600mm 为例走一遍全流程。第一步打十字基准线。在纸上或者板面上画一条水平线作为长轴方向用直角尺在中心位置作垂直的短轴方向线。这两条线是整个作图的地基必须垂直误差控制在 0.5 度以内。校验方法在两条线上各取 300mm 和 400mm 的点两点之间的距离应该是 500mm3-4-5 勾股量一遍心里就有底了。第二步定中心。两条线的交点标为 O这是椭圆的几何中心后面所有尺寸都从这里量。第三步标四个端点。沿长轴从 O 往两边各量 500mm得到 A、B 两点长轴端点沿短轴从 O 往两边各量 300mm得到 C、D 两点短轴端点。这四个点是后面校验用的画完要检查曲线有没有准确穿过它们。第四步定焦点。沿长轴从 O 往两边各量 400mm得到 F1、F2。钉子钉在这两个点上垂直打入深度以手指晃不动为准。如果要保护纸面可以在钉子下面垫一小块透明胶带减少撕裂。第五步系绳子。用开口绳方式绳子一端系在 F1 上另一端系在 F2 上绳长两钉之间的有效长度控制为 1000mm。实际操作时不可能刚好系出精确长度所以做法是先把绳子系松一点拿笔绷紧笔尖落到长轴端点 A 上调整绳长直到笔尖正好压在 A 点再把绳结锁死。这是最靠谱的标定方式——用长轴端点来反过来定义绳长比预先量绳子长度准得多。第六步画。笔尖压住绳子从一个端点出发缓慢匀速绕一圈。要点有三个保持绳子全程绷紧不能有松弛笔杆始终垂直于纸面不要倾斜速度要慢且均匀快了绳子容易抖。回到起点后稍微过冲一点再停笔可以避免首尾接不上。第七步校验。三个动作量长轴是不是 1000、短轴是不是 600看曲线有没有准确经过 A、B、C、D 四点取任意一点用细线量一下它到 F1、F2 的距离之和看是不是 1000。三条都过这个椭圆就算合格了。3.3 地面墙面的大尺寸放样加固和替代方案尺寸一旦超过 1.5 米纸面上的方法就不灵了得换成地面或者板面上的放样。这里面有几个专门的技巧。钉子的加固。地面上钉钉子如果是泥地或者草地普通钉子一拉就松。换成钢筋头直径 6~8mm长度 300mm 以上用锤子砸进去至少 200mm 深露出 20~30mm。在硬质地面水泥地、瓷砖上用膨胀螺栓或者直接把钉子用胶带粘牢在定位点上但胶带粘的不耐拉最好还是打孔。绳子在远距离下的下垂问题。8 米跨度的绳子中间会因为自重下垂。解决办法是用绷紧的钢丝绳直径 1mm 以上或者尼龙滑轮线普通麻绳在这个尺度下误差能有几十毫米。钢丝绳还有个好处是几乎不伸长画一圈下来前后张力一致。大尺寸的十字基准线怎么放。地面上没法用直角尺用勾股法放直角从交点 O 沿一个方向量 3 米标点沿另一个方向量 4 米标点两个标记点之间的距离如果是 5 米直角就对了。这个比例可以放大缩小6-8-10、9-12-15 都行尺寸越大精度越高。为了减少误差一般会把 3-4-5 扩展到 30-40-50单位厘米来做初校再用对角线法复检一次。墙面和顶面的处理。这种情况钉子钉不进去可以改用吸盘 拉线或者临时支撑架。更稳妥的做法是投影法先在地面上按 1:1 画好再用铅垂线把关键点长轴两端、短轴两端、以及每隔 15 度取的若干点投到墙面或顶面上然后在这些投影点之间用薄板条或者软木条弯出弧线用铅笔描下来。这个方法看着笨但精度可控而且不依赖墙面能不能打钉。石膏板上的注意事项。石膏板表面是纸面钉钉子要轻钉子周围容易碎。可以先贴一层美纹纸再钉或者用小号图钉。画的时候笔不要用力压容易压出凹坑影响后续批腻子。提示地面放样的十字线弹完之后中途很容易被踩掉。建议在关键点上钉小木桩做标记或者拍张照片存档避免二次找基准。4. 不想打钉子三种替代画法4.1 四心圆法一次带数字的完整作图如果环境不允许钉钉子比如瓷砖面、已经装好的墙面、客户家的实木桌面或者要求用圆规和直尺作图四心圆法是首选。它用四段圆弧拼出一个近似椭圆误差在小尺寸下基本看不出来。还是用 1000 × 600 这个尺寸把每一步和具体数字都写出来。第一步画轴。水平线 AB长度 1000中点 O垂直线 CD长度 600中点也是 O。A、B 是长轴端点C 在上、D 在下。第二步找辅助点 E。以 O 为圆心、OA500为半径画弧交短轴的延长线于 E 点。因为 OC 300所以 E 点在 C 点上方 500 − 300 200 处即 CE 200。第三步连 AC找辅助点 F。连接 A1000 位置的右端点坐标 (500, 0)和 C坐标 (0, 300)。AC 的长度 √(500² 300²) √340000 ≈ 583.1。以 C 为圆心、CE200为半径画弧交 AC 于 F。F 点在 AC 上距离 C 点 200 处。按比例算F 的坐标是 C 加上 (200/583.1) 乘以向量 (A − C)A − C (500, −300) F (0, 300) 0.343 × (500, −300) (171.5, 300 − 102.9) (171.5, 197.1)第四步作 AF 的垂直平分线。AF 的中点 M ((500171.5)/2, (0197.1)/2) (335.8, 98.6)。AF 的方向向量是 (171.5 − 500, 197.1 − 0) (−328.5, 197.1)垂直平分线的方向就是 (197.1, 328.5)。这条垂线跟长轴y 0的交点就是大弧的圆心 O198.6 t × 328.5 0 → t −0.3002 x 335.8 (−0.3002) × 197.1 335.8 − 59.2 276.6 O1 (276.6, 0)大弧半径 r1 O1A 500 − 276.6 223.4。这条垂线跟短轴延长线的交点是小弧的圆心 O2。这里要注意方向跟 C 点y 正方向同一侧的是另一个象限的圆心我们按对称性处理335.8 t × 197.1 0 → t −1.7037 y 98.6 (−1.7037) × 328.5 98.6 − 559.7 −461.1 O2 (0, −461.1)小弧半径 r2 O2C 300 461.1 761.1。第五步验算相切条件。四心圆法成立的前提是两个圆心之间的距离等于两半径之差O1O2 √(276.6² 461.1²) √(76508 212613) √289121 ≈ 537.7 r2 − r1 761.1 − 223.4 537.7对上了说明这组圆心是有效的两段弧能平滑相切。第六步对称取四个圆心。O1(276.6, 0) 关于 O 对称得 O3(−276.6, 0)O2(0, −461.1) 关于 O 对称得 O4(0, 461.1)。第七步画四段弧。以 O1、O3 为圆心半径 223.4在长轴两端画大弧以 O2、O4 为圆心半径 761.1在短轴两端画小弧。四段弧两两相切拼成完整轮廓。这个方法的误差在哪最大偏差出现在大约 45 度斜向的位置量级在长轴的千分之几。做家具、做造型完全够用如果是精密配合件比如要跟轴承或者导轨配合那绝不能这么画误差是会累积的。注意四心圆法的作图过程里以 O 为圆心、OA 为半径画弧交短轴这一步很多人下意识画到短轴上去了正确是画到短轴的延长线上。这一笔画错后面的点全错。4.2 同心圆法制图课上的标准答案同心圆法也叫辅助圆法是真正意义上的精确作图误差只取决于你取点的密度多画几条射线就更准理论上可以无限逼近真椭圆。操作流程以 O 为圆心分别以 a 500 和 b 300 为半径画两个同心圆。大圆代表长轴方向小圆代表短轴方向。从 O 引一条射线角度为 θ与大圆交于 P1与小圆交于 P2。过 P1 作短轴方向的平行线过 P2 作长轴方向的平行线两条线的交点就是椭圆上的一点。这一点的坐标恰好是 (a·cosθ, b·sinθ)正是椭圆的参数方程。每隔 15 度取一条射线一圈取 24 个点。要求更高就取 10 度36 个点一般手绘 24 个点足够。用曲线板或者薄木条把这些点连成平滑曲线。连的时候不要一段一段接要把曲线板摆在能同时经过 4~5 个点的位置一段一段推进接缝处自然过渡。这个方法的好处是不需要任何特殊工具圆规、直尺、量角器、曲线板一套制图仪器搞定而且点位精度可控。缺点是麻烦20 多个点画下来手会酸而且曲线板连接的手法需要练连不好会出现明显折角。我在实际使用中会做个简化先画两个同心圆再只在外圈和内圈之间取 8 个关键点0°、45°、90°、135°……然后用曲线板连。8 个点能定出大致轮廓做石膏板开孔、软装造型足够。如果是要上 CNC 切割的那还是老老实实取 24 个点或者直接用软件。4.3 阿基米德椭圆规木工可以自己做的小装置这是个很精巧的东西原理干净做起来也不难适合需要反复画椭圆的人。结构是这样两块板子交叉成十字各开一条直槽一条水平、一条垂直。一根直杆上取两个点分别卡进两个槽里滑动杆上任意第三点画出的轨迹就是椭圆。这把杆一般叫椭圆规或者十字规。原理算一下就明白。设水平槽是 x 轴垂直槽是 y 轴杆长 AB L杆上点 A 在 x 轴上滑点 B 在 y 轴上滑。设 A 的坐标为 (L·cosθ, 0)B 的坐标就是 (0, L·sinθ)因为 AB 长度恒为 L而 OA 和 OB 是直角三角形两条直角边。杆上取一点 PPA 的长度记为 mPB 记为 nm n L。那么P A (m/L) × (B − A) (L·cosθ − m·cosθ, m·sinθ) ((L − m)·cosθ, m·sinθ) (n·cosθ, m·sinθ)这正是椭圆参数方程 x a·cosθ, y b·sinθ其中 a n、b m。也就是说P 到 A 的距离决定短半轴P 到 B 的距离决定长半轴杆上换个点就换了一组轴长。用这个装置的好处是不用钉子不会在工件上留孔调整简单只要改变杆上取点的位置可以反复画同一尺寸适合批量。缺点是尺寸受槽长限制一般做到 600mm 以内的长轴再大就需要很长的杆和很大的十字架不方便。5. 数字化画椭圆软件和代码5.1 CAD 里画椭圆的三个真实的坑CAD 画椭圆本身一个命令的事但有三个坑会让人卡半天。第一坑PELLIPSE 系统变量。这个变量决定画出来的是真椭圆还是多段线近似的椭圆。设为 0 时画的是真正的椭圆对象数学意义上的椭圆显示平滑但很多编辑命令用不了——不能偏移、不能倒角、不能沿着它做路径、有些版本连修剪都费劲。设为 1 时画出来的是由一系列短圆弧拼成的多段线好处是偏移、拉伸、修剪全都正常坏处是本质是近似段数有限放大看会有细微的折线感。这个设置怎么选看后面要干什么。如果只是看看形状、做效果图设 0如果要做加工图、要向外偏移出内圈外圈、要跟其他线做圆角配合设 1 重画。做木工和钣金下料的时候这条几乎必踩一次。第二坑轴端点方式和中心点方式容易搞混。命令行的提示会问你指定椭圆的轴端点或 [圆弧/中心点]直接点击是轴端点方式先点长轴的一个端点再点另一个端点然后移动鼠标定短轴。这里有个陷阱——第三步要求的是短半轴的长度不是短轴全长。很多人在这里直接输入短轴尺寸比如 600结果画出来短轴变成 1200整圈放大一倍。第三坑捕捉干扰。对象捕捉开着最近点垂足节点的时候画椭圆特别容易吸到不该吸的位置导致长轴不水平。稳妥的做法是画之前先关掉多余的捕捉模式只留端点、中点、交点然后先画一条水平辅助线用两点捕捉来确定长轴。5.2 用几行代码精确生成椭圆做参数化下料、批量出图、或者要做排版对花的时候代码比手工画靠谱得多。Python matplotlibimport numpy as np import matplotlib.pyplot as plt a, b 500.0, 300.0 # 半轴单位 mm c np.sqrt(a**2 - b**2) # 半焦距 t np.linspace(0, 2*np.pi, 721) x a * np.cos(t) y b * np.sin(t) fig, ax plt.subplots(figsize(10, 6)) ax.plot(x, y, linewidth1.5, labelellipse) ax.plot([-c, c], [0, 0], o, markersize4, labelfoci) ax.set_aspect(equal) # 这一行千万别漏 ax.grid(alpha0.3) ax.legend() plt.savefig(ellipse.png, dpi200, bbox_inchestight)set_aspect(equal)这行是必须的不设的话图被横纵拉伸看着像个鸡蛋容易误导判断。这个坑我吃过一次导出的图给客户看对方说这不是椭圆其实只是显示比例不对。SVG 直接描述如果不方便跑 Python直接写 SVG 也很快。用ellipse标签最简单svg xmlnshttp://www.w3.org/2000/svg width1200 height800 viewBox0 0 1200 800 ellipse cx600 cy400 rx500 ry300 fillnone stroke#222 stroke-width2/ /svg如果要的是路径形式比如要跟其他路径做布尔运算、要做路径动画用 A 指令画弧两段 A 拼成完整椭圆path dM 100 400 A 500 300 0 1 0 1100 400 A 500 300 0 1 0 100 400 Z fillnone stroke#222 stroke-width2/A 指令的七个参数依次是rx、ry、x 轴旋转角、大弧标志、扫描方向标志、终点 x、终点 y。这里 rx 500、ry 300起点 (100, 400) 和终点 (1100, 400) 恰好是长轴两端距离 1000 2rx所以每段 A 正好是个半椭圆。5.3 从图形到刀路加工环节的几个细节图画出来了加工还需要注意几件事。单位。CAD 里画图用的是图形单位导入到 CAM 软件时要确认单位映射。有的软件默认按英寸解析1.2 米的件变成 30 米一刀下去就废了。操作前先在 CAM 里量一下图形的实际尺寸