
简介一份包含3个MATLAB脚本的微型绘图项目面向电磁学、力学及数值计算场景中需要快速绘制摩尔圆莫尔圆并计算两圆切线的学习者与工程技术人员。主脚本qiexian.m支持输入两个圆的圆心坐标与半径后自动生成圆形轮廓基于圆的方程求解交点进而计算切线斜率与方程帮助使用者直观理解从几何建模到图形输出的完整流程。压缩包内共3个文件全部为.m类型脚本整体大小约2KB结构精简便于逐行阅读辅助脚本与主脚本配合可完成直线参数换算和线段重绘等子任务覆盖了绘制摩尔圆过程中的常见功能。该资源已有2124人在线学习实践价值较高尤其适合MATLAB初学者通过源码对照掌握plot绘图、方程求解及切线推导方法并能将相同思路迁移到应力圆分析、电磁场分布等更广泛的绘图任务中。1. 解压“画摩尔圆”压缩包之前先搞清要画什么把一个名为“180420-画摩尔圆”的 zip 包解压后里面可能是 Origin 工程文件也可能只是一组应力分量数据。无论包里装的是什么目标都一样把摩尔圆变成一张能在 Origin 里编辑、标注、换参数就能重新生成的图。摩尔圆也叫莫尔圆英文 Mohr’s Circle是材料力学里最常用的应力状态可视化工具横轴是正应力 σ纵轴是剪应力 τ圆周上的每个点对应某个截面上的应力值。很多人在纸上能画出来一到 Origin 里就卡在“圆画不圆”“上下半圆接不上”“坐标轴比例不对”这些细节上。这篇文章从数据准备讲到 Function Plot 和模板复用覆盖你搜索“origin画摩尔圆”时真正想找的落地步骤。2. 摩尔圆的理论基础圆心、半径和输入数据怎么定2.1 摩尔圆的核心公式圆心在 σ 轴上半径由剪应力决定摩尔圆描述的是平面应力状态。假设已知某一点的三个应力分量正应力 σx沿 x 方向、正应力 σy沿 y 方向、剪应力 τxy作用在 x 面上的剪应力那么摩尔圆的圆心和半径可以直接算出来圆心横坐标是平均应力σ_avg (σx σy) / 2圆心纵坐标为 0也就是圆心一定落在横轴上。半径则按下式计算R sqrt(((σx - σy) / 2)^2 τxy^2)这里 (σx - σy) / 2 是偏应力它和 τxy 一起决定了圆的大小。主应力就是圆心加半径、圆心减半径σ1 σ_avg R σ2 σ_avg - R最大剪应力 τ_max 在数值上等于半径 R。理解这几个式子之后再打开 Origin你就不需要去找任何现成模板自己就能把任意一组应力分量变成摩尔圆。2.2 一组可直接用于验证的数据与手算结果为了后面在 Origin 里对图先准备三组工程上常见的应力状态。单位统一用 MPa正负号约定为拉应力为正压应力为负剪应力使单元体逆时针转动为正。下面这三组数据包含了不同大小和正负方向能测试出你的图是否画对。工况σx (MPa)σy (MPa)τxy (MPa)圆心 σ_avg半径 RA80402060.0028.28B10050-3075.0039.05C50903570.0040.31以工况 A 为例手算过程是σ_avg (80 40) / 2 60 R sqrt(((80 - 40) / 2)^2 20^2) sqrt(400 400) 28.28主应力为 σ1 80 28.28 88.28σ2 80 - 28.28 31.72 是在纸上画摩尔圆时用来检查半径是否正确的主要依据。若你的学生或同事习惯叫“莫尔圆”记得两者是同一个东西只是翻译用字不同检索时不要被干扰。2.3 角度、符号与画图顺序这些细节决定圆长什么样摩尔圆上还有一个容易被忽略的点圆周上的角度是实际截面角度的两倍。比如在单元体上转一个剖面在摩尔圆上对应转 2 倍的角度。不过这不会影响你用 Origin 画图因为画圆本身不需要依赖角度映射只要半径和圆心正确圆的形状就正确了。τxy 的正负会影响圆的上半部分还是下半部分更突出。例如把工况 A 的 τxy 改成 -20圆心不变半径不变但整个圆在纵轴方向会上下翻转。你只能通过观察圆的上下位置来判断正负是否正确而不是通过半径。后面调试图形时这是最常见却最隐蔽的错误。3. 在 Origin 中绘制摩尔圆的最小命令与参数设置3.1 方法一用 Function Plot 直接画上下两个半圆最快、最不会出错的方式是使用 Origin 的 Function Plot。它不需要准备数据列直接输入函数表达式就能把曲线画到图里。摩尔圆是一个多值函数一个 x 对应两个 y所以在 Function Plot 里必须拆成两个单值函数上半圆和下半圆。以工况 Aσx80σy40τxy20为例圆心为 60半径 R 为 28.28R² 为 800。新建一张图后打开 Function Plot 对话框先画上半圆y sqrt(800 - (x - 60)^2)再画一次函数图输入下半圆y -sqrt(800 - (x - 60)^2)两个函数叠加就是一个完整的摩尔圆。Function Plot 对话框里可以设置 x 的范围建议把 x 的最小值设置为圆心减 1.5 倍半径最大值设置为圆心加 1.5 倍半径也就是本例的 20 到 100这样圆不会顶到图的最边缘之后标注数据点也不拥挤。提示Function Plot 在大部分 Origin 版本中位于 Plot Line 菜单下新版本也可能叫 Add Function to Graph。如果找不到菜单在任意一张空白图里右键也可以看到函数绘图的入口。这个方法的优点是完全数据驱动改数据只需要改函数表达式里的常量和半径。它不适合画很多个圆批量处理但如果只是单个应力状态它能在一分钟内出图。3.2 方法二生成 361 个数据点再连线适合后续标点如果需要把摩尔圆和计算出的数据点一起展示或者要对圆周上的点做进一步分析建议先在工作表里生成圆上的坐标点再用散点图或线图绘制。这里给出一个通用的 Python 脚本任何机器上都能跑生成 CSV 后直接拖进 Origin。import numpy as np import pandas as pd # 输入三个应力分量MPa sx, sy, txy 80.0, 40.0, 20.0 center (sx sy) / 2 R np.hypot((sx - sy) / 2, txy) theta_deg np.linspace(0, 360, 361) # 0 到 360 度首尾闭合 sigma center R * np.cos(np.deg2rad(theta_deg)) tau R * np.sin(np.deg2rad(theta_deg)) pd.DataFrame({sigma: sigma, tau: tau}).to_csv(mohr.csv, indexFalse) print(f圆心: {center:.2f}, 半径: {R:.2f})脚本里的 np.deg2rad 把角度转成弧度这是最容易踩的坑。如果直接用 cos(theta_deg)得到的点会稀稀拉拉圆根本不闭合。np.linspace(0, 360, 361) 生成从 0 到 360 共 361 个点最后一个点和第一个点重合强制闭合。生成的 CSV 有两列sigma 是横坐标tau 是纵坐标导入 Origin 后直接选中这两列画 Line 图即可。如果在 Origin 里不想借助外部脚本也可以在设置列值时直接输入公式。在 A(X) 列的 Set Values 对话框中填写60 28.28 * cos(i*2*pi/360)B(Y) 列填28.28 * sin(i*2*pi/360)然后把行数改成 361。这里的 i 是行号从 1 递增到 361i2pi/360 就等价于 0° 到 360° 的弧度值。60 是圆心28.28 是半径需要手算或者直接填公式。这个方法的好处是修改应力分量时能立刻看到哪个值影响哪条边。3.3 为什么不能直接画一条整圆曲线排序问题与解决办法不少人在工作表里生成整圆周数据后发现画出来的线和麻花一样完全不是圆。原因在 Origin 的 Line 图默认会把数据按 X 轴大小重新排序而排序后同一 X 对应的上下两个点会相互跳变连线就成了交叉的乱线。所以当你决定用数据点画图时要么拆成上半圆和下半圆两段分别画要么用 Function Plot。拆半圆的具体做法是把数据表分成两份一份只保留 sin 值为正的点另一份只保留 sin 值为负的点然后用两个 Line 图叠加到同一张图上。这样每一段都是单调的按 X 排序也不会乱。这也是为什么我优先推荐 Function Plot省去拆数据的麻烦。如果你一定要用整圆数据可以把绘图的连线类型改为散点图不连线只显示点。这样不会出现连线跳变但视觉上不如两条半圆曲线干净。4. 多应力状态叠绘、主应力标注与图例排版参数4.1 在同一张图里叠加多个摩尔圆用颜色区分工况实际工程中常常需要把多个受力工况的摩尔圆叠在一起对比。比如前面表格里的工况 A、B、C三个圆大小和圆心位置都不一样叠在图中可以直接观察应力水平的变化。实现方式是重复第 3 章的 Function Plot 操作每加一组应力状态就添加两个函数并给上下半圆设置相同颜色。三个工况的函数表达式分别如下工况上半圆函数下半圆函数Ay sqrt(800 - (x - 60)^2)y -sqrt(800 - (x - 60)^2)By sqrt(1525 - (x - 75)^2)y -sqrt(1525 - (x - 75)^2)Cy sqrt(1625 - (x - 70)^2)y -sqrt(1625 - (x - 70)^2)添加完成后双击任意一条曲线打开 Plot Details在 Line 标签页修改颜色和线宽线宽推荐设为 2这样输出到论文里不会显得单薄。同一个工况的上下半圆必须用同一个颜色否则读者会误以为是两个独立的数据系列。4.2 标注主应力点、圆心点和最大剪应力点图只有圆还不够应力特征点必须标出来。以工况 A 为例三个关键点的坐标是主应力点 σ1(88.28, 0)主应力点 σ2(31.72, 0)最大剪应力点(60.00, 28.28)在 Origin 中先用工具栏里的“点”工具在图上单击添加符号再双击符号打开属性框把坐标改成上面这些值。符号类型建议用实心圆大小控制在 6 到 10 之间。接着用文字工具给每个点添加标注内容写上 σ1、σ2、τ_max。如果你的图里同时有多个圆特征点标注容易重叠我的处理方法是只标最重要的一组数据或者用引线把文字拉到空白区域。文字标签的字体大小在论文里通常用 10 到 12 磅在图上单独修改即可。注意不要用默认的 Arial 字体去标注希腊字母 σ 和 τ中文环境下宋体或 Times New Roman 效果更稳定。4.3 图例横向排列、轴刻度与小数点位数的统一设置多个圆叠加后图例默认是纵向排列的比较占空间。双击图例对象在图例属性对话框里把方向改为横向排列这样四个图例可以并排放在图上方或者下方。图例内容可以直接编辑把默认的“Function Plot 1”改成“工况 A”这类有含义的名称。坐标轴的刻度格式也要统一。双击坐标轴打开 Axis 对话框在 Tick Labels Display 里把小数点位数设置为 2避免出现 88.999999 这种情况。如果你修改了 Origin 的默认字体打开 Options Font 把所有默认字体改成中文环境下常用的宋体或微软雅黑这样后续新建的图不会重新设置一遍。设置项菜单位置推荐值曲线线宽Plot Details Line Width2主应力点符号Plot Details Symbol Size8坐标轴小数位Axis Tick Labels Display2图例方向图例属性 Layout OrientationHorizontal坐标轴边框Layer 属性 Display Box显示四边5. 把摩尔圆存成可复用模板并避开 4 个常见变形坑画好一个摩尔圆后下一步应该是把它保存成模板而不是每次重新画。Origin 的模板保存功能在 File Save Template As 中保存为 .otpu 格式。模板会记录图层的坐标轴范围、线型、字号、图例位置。下次打开模板后直接双击函数曲线修改圆心数值和半径数值就能快速得到新应力状态下的摩尔圆不需要重设任何格式。不过模板复用时要注意函数表达式里的常量是直接写在公式中的修改时容易漏。我的习惯是把圆心和半径先算好用纸记下来再打开函数对话框替换。如果频繁更换数据建议在工作表里用 Set Values 生成数据点并勾选自动更新这样每次改应力分量圆会跟着刷新。具体操作是选中计算列右键打开 Column Properties在 Formula 页签中勾选 Auto Update。这个模式下公式列会记录设定的表达式源数据一旦变化坐标点列就会重新计算。排错时优先检查下面 4 类常见问题能解决九成以上的异常图形圆变成扁椭圆或者纵轴比横轴短一大截。这是坐标轴比例不一致导致的。双击坐标轴把 X 轴和 Y 轴的 From、To 设置成相同跨度再在 Layer 设置里把图层宽度和高度调成一致。只画了上半圆或下半圆另一部分完全不显示。这是因为你在 Function Plot 里的表达式把正负号写在一起了y±sqrt(...) 这种写法函数图不识别。必须拆成两个函数分别添加。圆看起来对但主应力点和图上的圆根本不匹配。检查手算时 σ1 和 σ2 是不是用了圆心加半径、圆心减半径。常见错误是把 (σx σy) / 2 的加法写错比如把 80 和 40 的平均值算成 70。用 Set Values 生成数据后修改 σx 发现圆没变。原因是 Set Values 是一次性计算生成的是静态数据。改成公式列并打开自动更新就能解决。最后提一个验证画图是否正确的快速方法在纸上算一次工况 A 的圆心和半径把圆规画出的圆和 Origin 输出对比主应力点如果同时落在圆和 σ 轴的交点处这张图就能直接用于报告。你可以在图上加一条 y0 的参考线一眼就能看到 σ1 和 σ2 是否与横轴相交。本文还有配套的精品资源点击获取