随笔 - 373  文章 - 1  评论 - 771  阅读 - 137万

数学图形之牟合方盖

维基上的解释是:牟合方盖是一种几何体,是两个等半径圆柱躺在平面上垂直相交的公共部分,因为像是两个方形的盖子合在一起,所以被称作“牟合方盖”。

说得有点绕,简单说:牟合方盖是两个半径相等并且轴心互相垂直的圆柱体相交而成的三维图形。个人觉得它是一种即方又圆的图形.

相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件开源免费.

(1)牟合方盖

复制代码
vertices = D1:100 D2:100

u = from 0 to (PI*2) D1
v = from (-PI/2) to (PI/2) D2

m = cos(u)
n = sin(u)

y = sin(v)
r = cos(v)*SQRT2

b = abs(m) < abs(n)

x = if(b, m*r, sign(m)*r/SQRT2)
z = if(b, sign(n)*r/SQRT2, n*r)

a = 10

x = x*a
y = y*a
z = z*a
复制代码

(2)三圆柱相交

牟合方盖是两个等半径圆柱垂直相交生成的,那么如果再用一个垂直的圆柱与牟合方盖相交,会得到什么图形呢?

下面为三个半径相等并且轴心互相垂直的圆柱体相交而成的三维图形.

复制代码
vertices = D1:100 D2:100

u = from 0 to (PI*2) D1
v = from (-PI/2) to (PI/2) D2

m = cos(u)
n = sin(u)

y = sin(v)
r = cos(v)*SQRT2

b = abs(m) < abs(n)

x = if(b, m*r, sign(m)*r/SQRT2)
z = if(b, sign(n)*r/SQRT2, n*r)

e = sqrt(x*x + z*z)
x = if(e > 1, x/e, x)
z = if(e > 1, z/e, z)

a = 10

x = x*a
y = y*a
z = z*a
复制代码

(3)变异的牟合方盖

这其实是我写脚本代码时,一个变量写错了生成的图形.

复制代码
vertices = D1:100 D2:100

u = from 0 to (PI*2) D1
v = from (-PI/2) to (PI/2) D2

m = cos(u)
n = sin(u)

y = sin(v)
r = cos(v)

b = abs(m) > abs(n)

x = if(b, m*r, sign(m)*r/SQRT2)
z = if(b, sign(n)*r/SQRT2, n*r)

a = 10

x = x*a
y = y*a
z = z*a
复制代码

posted on   叶飞影  阅读(18929)  评论(2编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示