博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数学图形之Boy surface
阅读量:5139 次
发布时间:2019-06-13

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

这是一个姓Boy的人发现的,所以取名为Boy surface.该图形与罗马图形有点相似,都是三分的图形.它甚至可以说是由罗马曲面变化而成的.

本文将展示几种Boy曲面的生成算法和切图,使用自己定义语法的脚本代码生成数学图形.相关软件参见:,该软件免费开源.QQ交流群: 367752815

In geometry, Boy's surface is an immersion of the real projective plane in 3-dimensional space found by Werner Boy in 1901 (he discovered it on assignment from David Hilbert to prove that the projective plane could not be immersed in 3-space). Unlike the Roman surface and the cross-cap, it has no singularities (i.e. pinch-points), but it does self-intersect.

 

boy surface 01

#http://www.mathcurve.com/surfaces/boy/boy.shtmlvertices = D1:100 D2:100u = from 0 to (PI) D1v = from 0 to (PI) D2a = sin(u)b = cos(u)c = sin(v)d = cos(v)m = sqrt(2)k = rand2(0.1, 1.4)t = b/(m - k*sin(2*u)*cos(3*v))x = t*(b*cos(2*v) + m*a*d)y = t*(b*sin(2*v) - m*a*c)z = 3*t*b

boy surface 02

#http://mathworld.wolfram.com/BoySurface.htmlvertices = D1:100 D2:100u = from (-PI/2) to (PI/2) D1v = from 0 to PI D2a = SQRT2*pow(cos(v), 2)d = 2 - SQRT2*sin(3*u)*sin(2*v)x = a*cos(2*u) + cos(u)*sin(2*v)y = a*sin(2*u) - sin(u)*sin(2*v)z = 3*pow(cos(v), 2)x = x/dy = y/dz = z/d

boy surface 03

我在这套公式上花费的时间最多,因为它最复杂,而且也不完美.它的曲面没能闭合.我研究了很久才发现,当r取无穷大时,该曲面才会闭合.

#http://www.ipfw.edu/departments/coas/depts/math/coffman/steinersurface.html#x = (1+r^2*cos(t)^2)*(sqrt(2)-sqrt(2)*r^2*cos(t)^2+2*r*sin(t)) / (3*(1+r^2*cos(t)^2)*(1+r^2*cos(t)^2+r^2*sin(t)^2) + 3*sqrt(2)*r^2*cos(t)*sin(t)*(3-r^2*cos(t)^2))#y = 2*(1+r^2*cos(t)^2)*(sqrt(2)*r*cos(t) - r^2*cos(t)*sin(t)) /  (3*(1+r^2*cos(t)^2)*(1+r^2*cos(t)^2+r^2*sin(t)^2) + 3*sqrt(2)*r^2*cos(t)*sin(t)*(3-r^2*cos(t)^2))#z = (1+r^2*cos(t)^2)^2 / ((1+r^2*cos(t)^2)*(1+r^2*cos(t)^2+r^2*sin(t)^2) + sqrt(2)*r^2*cos(t)*sin(t)*(3-r^2*cos(t)^2))vertices = D1:100 D2:100t = from 0 to (PI*2) D1r = from 0 to 10 D2c = cos(t)s = sin(t)i = (r*c) ^ 2j = (r*s) ^ 2m = sqrt(2)a = (1+i)*(1+i+j)b = m*r*r*c*s*(3-i)x = (1+i)*(m-m*i+2*r*s) / (3*a + 3*b)y = 2*(1+i)*(m*r*c - r*r*s*c) / (3*a + 3*b)z = (1+i)*(1+i) / (a + b)

 

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

你可能感兴趣的文章
UI design principle android 系统根据不同屏幕密度选择不同图片
查看>>
GridView 动态列上方添加相应的Combox等控件
查看>>
申请开发者账号
查看>>
oracle启动
查看>>
c++模板学习
查看>>
【转】MySQL Event
查看>>
[转]html5监听任何App自带返回键javascript事件
查看>>
mongodb数据备份与还原
查看>>
通俗理解LDA主题模型
查看>>
回射服务器-多路复用 select 01 (阻塞)
查看>>
分享吉林大学机械科学与工程学院,zhao jun 博士的Halcon学习过程及知识分享
查看>>
BitmapData.noise示例
查看>>
肤色阈值分割
查看>>
Android中的菜单
查看>>
【最短路】Vijos P1046 观光旅游
查看>>
Android学习总结——开篇
查看>>
iOS 基础知识
查看>>
PHP 重新格式化var_dump/print_r打印的数组
查看>>
C++11:POD数据类型
查看>>
Delphi中Json格式读写
查看>>