博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数学图形之将曲线转化为曲面
阅读量:5371 次
发布时间:2019-06-15

本文共 2267 字,大约阅读时间需要 7 分钟。

      本文将展示几种基本图形的生成算法,包括:圆面,圆球,圆柱,圆锥,圆环,圆管,螺旋环,圆螺,五角环,金字塔,正8面体.使用自己定义语法的脚本代码生成数学图形.相关软件参见:,该软件免费开源.

      之前我写过一篇文章:,写完之后,意识到这种生成曲面管的脚本代码太过复杂了.本来其输入为曲线+管的半径,那么完全可以将其改成一句话的形式.我需要在生成曲线的代码后面加上一句话就可以将其转化成曲面管.pipe = radius[0.5], type[0]

      实现了由"pipe"脚本解析后,我想到曲线是可以通过旋转,缩放,平移,这三种基础的图形变换,转化成曲面的.OK,于是又实现了如下的语法:

 

(1)绕空间中任意一条直线进行旋转, 可以生成旋转面

rotate = anchor[0, 0, 0], axis[0,1, 0], angle[0, 2*PI]

(2)沿着一个任意朝向移动顶点, 可以生成柱面

translate = dir[0, 1, 0], dis[0, 5]

(3)以空间中任意一点为基点,对曲线上的顶点进行缩放

scale = anchor[0, 0, 0], x[1, 0], z[1, 0]

      最后,由曲线到曲面会增加一个维度的数据,需要设置其数据大小:surface_slices = 72

      下面将展示使用这几种新加的语句生成的图形与脚本代码:

 

圆面

vertices = 360u = from 0 to (2*PI)r = 5.0x = r*sin(u)y = r*cos(u)scale = anchor[0, 0, 0], x[1, 0], y[1, 0]

 

圆球

常规生成球面的算法参见:

vertices = 360u = from 0 to (PI)r = 2.0x = r*sin(u)y = r*cos(u)rotate = anchor[0, 0, 0], axis[0,1, 0], angle[0, 2*PI]

 

圆柱

常规生成圆柱的算法参见:

vertices = 360u = from 0 to (2*PI)r = 2.0x = r*sin(u)z = r*cos(u)translate = dir[0, 1, 0], dis[0, 5]

 

圆锥

常规生成圆锥的算法参见:

vertices = 360u = from 0 to (2*PI)r = 2.0x = r*sin(u)z = r*cos(u)translate = dir[0, 1, 0], dis[0, 5]scale = anchor[0, 0, 0], x[1, 0], z[1, 0]

 

圆环

常规生成圆环的算法参见:

vertices = 360u = from 0 to (2*PI)r = 2.0x = r*sin(u) + 5y = r*cos(u)surface_slices = 72rotate = anchor[0, 0, 0], axis[0,1, 0], angle[0, 2*PI]

 

圆管

vertices = 360u = from 0 to (2*PI)r = 5.0x = r*sin(u)z = r*cos(u)pipe = radius[0.5], type[0]

 

螺旋环

常规生成螺旋环的算法参见:

vertices = 100u = from 0 to (2*PI)r = 1.0x = r*sin(u) + 5y = r*cos(u)surface_slices = 200rotate = anchor[0, 0, 0], axis[0, 1, 0], angle[0, 8*PI]translate = dir[0, 1, 0], dis[0, 9]

 

圆螺

vertices = 100u = from 0 to (2*PI)r = 1.0x = r*sin(u) + 5y = r*cos(u)surface_slices = 200scale = anchor[0, 0, 0], x[1, 0], y[1, 0]rotate = anchor[0, 0, 0], axis[0, 1, 0], angle[0, 8*PI]translate = dir[0, 1, 0], dis[0,6]

 

五角环

vertices =6u = from 0 to (2*PI)r = 2.0x = r*sin(u) + 5y = r*cos(u)surface_slices = 6rotate = anchor[0, 0, 0], axis[0,1, 0], angle[0, 2*PI]

 

金字塔

vertices =5u = from 0 to (2*PI)r = 2.0x = r*sin(u)z = r*cos(u)surface_slices = 3translate = dir[0, 1, 0], dis[0, 2]scale = anchor[0, 0, 0], x[1, 0], z[1, 0]

 

正8面体

vertices =3u = from 0 to (PI)r = 2.0x = r*sin(u)y = r*cos(u)surface_slices = 5rotate = anchor[0, 0, 0], axis[0,1, 0], angle[0, 2*PI]

 

转载于:https://www.cnblogs.com/WhyEngine/p/3900718.html

你可能感兴趣的文章
Effective C# 学习笔记(二十七)使你的类型可被序列化
查看>>
LDAP客户端配置
查看>>
(转)NAT原理与NAT穿越
查看>>
13.内存原理
查看>>
24.函数信号机制(本质上就是函数指针)
查看>>
The dependency `xxx` is not used in any concrete target.
查看>>
Bootstrap 中 下拉菜单和滚动监听插件(十一)(持续更新中。。。)
查看>>
团队-科学计算器-项目总结
查看>>
python 发邮件
查看>>
[Codeforces Round #247 (Div. 2)] A. Black Square
查看>>
[HDU] 1285 确定比赛名次(拓扑排序)
查看>>
UML第四次作业:绘制活动图
查看>>
GOOGLE API - 翻译, 后台c# 调用前台js代码, asp.net后台调用js代码
查看>>
JVM内存的设置
查看>>
HBase API 基础操作
查看>>
【洛谷4920】[WC2015] 未来程序(提答题)
查看>>
1003. Check If Word Is Valid After Substitutions
查看>>
PHP与最丑的后台管理系统
查看>>
1024 - 河南省多校连萌(三)
查看>>
iPhone各个设备的市场占有率
查看>>