MathMod提供数学建模软件,可以通过3D数学建立模型,适合需要设计函数模型的软件,这款软件支持参数方程设置,在数学中,参数方程式将一组数量定义为一个或多个称为参数的自变量的函数,您可以通过编辑方程的方式绘图,结合软件提供的纹理材质功能就可以对建立的模型渲染,支持对自然元素例如木材,大理石,花岗岩,金属,石材等的表面或体积表示进行建模,将材质运用到设计的函数模型就可以构建3D模型,适合需要分析数学函数和设计数学图形的朋友使用,MathMod免费使用,附加详细的作说明文档!
MathMod软件功能
MathMod是适用于Windows,Linux,MacOSX和许多其他平台的便携式交互式绘图和绘图程序。
MathMod允许绘制由隐式或参数方程式描述的3D数学曲面,并提供可以使用它生成的非常大的模型样本数据库。根据L许可版本2或更高版本,它是免费和开源的。
除了可视化实际形状外,您还可以自由编辑脚本和方程式,以了解每个参数如何影响和重塑模型。
此外,它允许将其数学模型导出为OBJ格式,并生成动画,以展示模型在赋予新参数时如何变形。
MathMod新版特色
1、添加用户定义的变量以减少处理时间(例如,“ Arena_02”脚本的渲染速度比原始“ Arena”脚本快四倍)。
2、添加15个新脚本:(“ Lissajous结”,“ Granny结”,“ Gyid基本面片”,“ Viviani曲线”,“ Lissajous”,“互锁结(p,q)”,“互锁花托”,“生命之树” ”,“细丝立方体” ...)
3、添加了对新参数的纹理支持,可以在配置文件中调整导出的网格的大小,OpenGL镜面反和光泽度设置。
4、错误修复,代码优化和文档更新。
MathMod安装方法
1、打开MathMod-10.1.exe软件直接启动,点击OK
2、软件协议内容,点击接受
3、软件安装附加内容,点击下一步
4、设置安装地址C:Pgram Files (x86)MathMod-10.1(Win)
5、提示安装结束,点击关闭
MathMod使用说明
1、打开MathMod提示英文界面,在软件左侧设置模型参数,可以配置纹理,可以设置材质
2、这里是帮助功能,点击该英文按钮就可以打开web界面查看帮助
3、设置菜单功能,屏幕截图、编辑、色彩、组态、脚本选择、动画(旋转)、变形(使用t参数)
4、如果你会使用MathMod设计模型就可以下载使用
MathMod教程
MathMod脚本
1、脚本文件格式
MathMod脚本为ON文件格式。ON文件是一种以JavaScpt对象表示法(ON)格式存储简单数据结构和对象的文件,该格式是标准的数据交换格式。它主要用于在Web应用程序和之间传输数据。
ON对象以键/值对形式编写。键必须是字符串,并且值必须是有效的ON数据类型(字符串,数字,对象,数组,布尔值或null)。键和值之间用冒号分隔。每个键/值对之间用逗号分隔。
2、支持的数学对象:
MathMod支持四种主要类型的数学对象:
1. “ Iso3D” :等值面
2. “ Param3D” :3D参数面
3. “ Param4D” :4D参数面
4. “ ParIso” :Isosuces + 3D参数面(“ Iso3D” +“ Param3D”)
3、强制键:
对于所有对象类型:
4、可选键:
1."Funct"
用户定义的功能。例:
"Funct": ["Si=sinx", "Co=cos(y), "SC=Si(x,y,z,t)*Co(x,y,z,t)"]
2."Const"
用户定义的常量。例:
"Const": ["N=5", "P=pi/2", "E=N*P"]
3."Cnd"
一个隐式方程式(根据x,y和z)来表征3D空间中的区域。等式的数量必须与组件的数量相同。包含三个组件的对象的示例:
"Cnd":["x>0", "", "y<0"]
4."Gd"
用户定义的网格值。网格值的数量与组件的数量有关。等值面的每个分量都需要一个栅格值(即:“ x”,“ y”和“ z”的栅格值相同),而参数化曲面需要两个栅格值(即“ u”对应一个栅格,“ v”对应一个栅格)具有一个组件的参数化曲面:
"Gd":["100", "150"]
5."Sliders"
滑块可用于交互式修改脚本中使用的一个或多个参数。例:
“滑块”:{
“名称”:[“ N”,“ R”],
“ Min”:[“ 0”,“ 0”],
“最大”:[“ 50”,“ 50”],
“步骤”:[“ 1”,“ 1”],
“位置”:[“ 10”,“ 16”]
}
"Name" :参数名称(即N,R)。
"Min", "Max" :N和R的最小值和最大值。
"Step" :用于调整每个参数的值。
"Position" :每个参数的保存值(N,R)=(10,16)。
The_Dome_v1脚本中 使用的函数
6."Descption"
您可以给它起另一个名字(即:“ Infos”,...)或从脚本中删除它(与用户有关而不与程序有关)。例:
"Descption": ["Blobby Torus by Abderrahman Taha 07/10/2019"]
7."Vect"
(实验的)定义一组变量(类型double)。例如,要创建10个变量,请使用:
"Vect":["10"]
除非它违反了ON中Objects的某些语法格式规则,否则任何添加的新键都将被MathMod简单地忽略。
5、质地和颜料:
“纹理”:在模型的每个可见表面点,在R ^ 3上评估纹理生成功能。示例:
“纹理”:{
“名称”:“行”,
“ Noise”:“ NoiseW(x,y,z,(1),(2),(0))”,
“颜色”:[
“ R = cos((x * x + y * y + z * z)* pi)”,
“ G = cos((x * x + y * y + z * z)* pi)* cos(x * pi)”,
“ B = sin(y * pi)* cos(x * pi)”,
“ T = 1”
}
“颜料”:颜料定义。
大多数颜色图案不会像砖,方格或六边形图案那样仅使用两种或三种颜色的突然颜色变化。取而代之的是,他们使用许多颜色的平滑过渡,这些过渡会逐渐从一个点变为另一个点。颜色在颜料修改器中定义,颜料修改器描述了图案如何从一种颜色过渡到另一种颜色。
实际上,每种可用的模式类型都是一个数学函数,它将x,y,z的任意位置转换为数字。该数字用于指定从颜色图中使用哪种颜色混合:评估图案函数渐变并将其与“ Vrgba”列表中第一个元素的值进行比较(即:“ V = ...”):如果Gradient(x,y,z)小于V [i],则color(x,y,z)=(R [i],G [i],B [i],A [i]),其中“ i “是“颜色”对象的索引。范例:
“颜料”:{
“渐变”:“ 3 * atan((x * x * y * z)* pi)* cos(y * y * z * pi)”,
“名称”:“颜料”,
“ Noise”:“ NoiseW(x,y,z,(1),(2),(0))”,
“颜色”:[
{
“颜色”:{
“名称”:“金”,
“ Vrgba”:[“ V = 0/10”,“ R = 9/10”,“ G = 7/10”,“ B = 1/10”,“ A = 1”]
}
},
{
“颜色”:{
“名称”:“红色”,
“ Vrgba”:[“ V = 3/10”,“ R = 1”,“ G = 1/10”,“ B = 31/100”,“ A = 1”]
}
},
{
“颜色”:{
“名称”:“绿色”,
“ Vrgba”:[“ V = 5/10”,“ R = 1/10”,“ G = 7/10”,“ B = 1/10”,“ A = 1”]
}
}
]
}
6、内部功能
1.NoiseP
NoiseP(x,y,z,Octaves,Lacunaty,Gain)Perlin噪声是Ken Perlin于1983年开发的一种梯度噪声,原因是他对当时计算机生成图像(CGI)的“类似于机器”的外观感到沮丧。他在1985年的SIGGRAPH论文中正式描述了他的发现,该论文名为“图像合成器”。
Octaves :您希望Perlin噪点具有的细节级别数。
Lacunaty :确定每个八度添加或删除多少细节的数字(调整频率)。
Gain :确定每个八度音阶对整体形状有贡献(调整幅度)的数字。
“ Perlin_Schwarz”脚本中使用的函数
2.NoiseW
NoiseW(x,y,z,(A),(B),(C))沃利噪声是史蒂芬·沃利(Stn Worley)在19年引入的一种噪声函数。在计算机图形学中,该函数用于创建过程纹理,即自动以任意精度创建的纹理,而不必手工绘制。Worley噪声接近于模拟石头,水或细胞噪声的纹理。
A, B, C :0..2之间的数字
“ CellNoiseSchwarz”脚本中使用的函数
3.f_hex_y
f_hex_y(x,y,z, P0)。此函数形成沿z轴延伸的无限框的格子。脂肪由阈值控制。这些框围绕中心旋转60度,这些中心彼此相距0.8660254或cos(30)。该功能也可用作颜料功能。
P0 :无效(但语法至少需要一个参数)
“ Wall_Pattern _...”脚本中使用的功能(总共5个脚本)
4.fmesh
f_mesh1(x,y,z, P0, P1, P2, P3, P4)螺纹的总厚度由等值面阈值控制,而不是参数控制。如果渲染的mesh1的阈值为零,则线程的厚度为零,因此不可见。参数P2和P4相对于此阈值参数控制螺纹的形状。
P0 :x方向上相邻螺纹之间的距离
P1 :z方向上相邻螺纹之间的距离
P2 :x和z方向上的相对厚度
P3:编织效果的幅度。设置为零以获得平坦的网格
P4 :y方向上的相对厚度
“ Straw Basket_02”脚本中使用的功能
5.fhelix1
f_helix1(x,y,z, P0, P1, P2, P3, P4, P5, P6)
P0 :螺旋数-例如2个代表双螺旋
P1 :周期-与单位长度的匝数有关
P2 :小半径(大半径>小半径)
P3 :大半径
P4:形状参数。如果大于1,则管在y方向变胖
P5 :横截面类型,(0.0到1.0 =正方形...修圆为圆形,超过2.0到3.0 =修圆为菱形和凹面菱形)
P6 :截面旋转角度(度)
在“ fhelix”和“螺旋花托”脚本中的功能使用
6.fhelix2
f_helix2(x,y,z, P0, P1, P2, P3, P4, P5, P6)。需要一个否定的功能
P0 : 未使用
P1 :周期-与单位长度的匝数有关
P2 :小半径(小半径>大半径)
P3 :大半径
P4 : 未使用
P5 :横截面类型,(0.0到1.0 =正方形...修圆为圆形,超过2.0到3.0 =修圆为菱形和凹面菱形)
P6 :截面旋转角度(度)
7.CmpId(0)
返回化合物ID。仅在“ Funct”对象数组内可用。例:
“功能”:[
“ Yx =(k1 + k0 * cos(u))* cos(v)* CmpId(0)”,
“ Yy =(k1 + k0 * cos(u))* sin(v)”,
“ Yz = k0 * sin(u)”,
...
]
在“ Chained_Sinusoid”脚本中使用。
近期热门