这是一个姓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.shtml
vertices = D1:100 D2:100
u = from 0 to (PI) D1
v = from 0 to (PI) D2
a = 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.html

vertices = D1:100 D2:100
u = from (-PI/2) to (PI/2) D1
v = 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/d
y = y/d
z = 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:100
t = from 0 to (PI*2) D1
r = from 0 to 10 D2
c = cos(t)
s = sin(t)
i = (r*c) ^ 2
j = (r*s) ^ 2
m = 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

数学图形之Boy surface相关推荐

  1. 数学图形之克莱因瓶(klein bottle)

    克莱因瓶是一种内外两面在同一个曲面上的图形. 在数学领域中,克莱因瓶(德语:Kleinsche Flasche)是指一种无定向性的平面,比如二维平面,就没有"内部"和"外 ...

  2. 数学图形之罗马曲面(RomanSurface)

    罗马曲面,像是一个被捏扁的正四面体. 本文将展示罗马曲面的生成算法和切图,使用自己定义语法的脚本代码生成数学图形.相关软件参见:数学图形可视化工具,该软件免费开源.QQ交流群: 367752815 维 ...

  3. 数学图形之SineSurface与粽子曲面

    SineSurface直译为正弦曲面.这有可能和你想象的正弦曲线不一样.如果把正弦曲线绕Y轴旋转,得到的该是正弦波曲面.这个曲面与上一节中的罗马曲面有些相似,那个是被捏过的正四面体,这个则是个被捏过正 ...

  4. 数学图形之单叶双曲面

        双曲线绕其对称轴旋转而生成的曲面即为双曲面.在数学里,双曲面是一种二次曲面.     其中单叶双曲面可以用公式表达为:     (x^2)/(a^2)+(y^2)/(b^2)-(z^2)/(c ...

  5. 数学图形(1.20)N叶草

    有N个叶子的草 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 vertices = 1000 t = from 0 to ...

  6. 数学图形(1.32) 鸡蛋

    鸡蛋的数学图形实现 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 egg #http://www.mathcurve.co ...

  7. 数学图形(1.2)Sin曲线

    相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 Sin曲线 vertices = 3600 x = from (-8*PI) ...

  8. 数学图形(1.10) 双曲线

    相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 双曲线有点麻烦,因为它是两条线,而我的程序逻辑中对于渲染只是处理一条线,所以 ...

  9. 数学图形(1.45)毛雷尔玫瑰(Maurer rose)

    毛雷尔玫瑰,也有的翻译是毛瑞尔,它是一种很漂亮的图形.玫瑰线的变异品种. 我没有找到其中文的解释,有兴趣可以看下维基上的相关页面. A Maurer rose of the rose r = sin( ...

最新文章

  1. git clone报错:fatal: could not create work tree dir ‘code_update‘
  2. OpenCV iOS Hello World应用程序
  3. Java学习笔记二十六:Java多态中的引用类型转换
  4. c语言代码大全_从学生到专家,C语言开发必读的8本书
  5. jdk12 jdk1.8_JDK 12的Files.mismatch方法
  6. Fortinet 荣膺谷歌云年度安全技术合作伙伴奖
  7. C语言 strnlen函数实现
  8. eclipse安装一直卡在安装中_Eclipse软件安装包+安装教程
  9. JavaScript高级程序设计之EventUtil
  10. 如何将常用的软件上传到ESXi本地存储中管理
  11. python简单文件读写
  12. 【Spring笔记】Spring介绍IOC理论推导
  13. 优酷暗黑模式(三):暗黑模式设计指南
  14. Python+tkinter模拟京东登录时拖动图片式验证码
  15. 模糊查询SqlParameter参数化like
  16. Request Headers请求头和Response Headers响应头,有啥区别呢?
  17. 【yum】Peer cert cannot be verified or peer cert invalid
  18. Ubuntu快速建立Samba网络共享文件夹
  19. 彻底解决CUDA安装,从翻译文档开始_Compiling CUDA Programs
  20. 通讯型高清视频会议摄像机

热门文章

  1. 动态生成表格呈现还是将表格直接绑定gridview等控件呈现的开发方式选择依据...
  2. MFC学习之路之多媒体 --(1) DirectShow
  3. Windows与Linux下进程间通信技术比较
  4. matlab save将变量值保存为mat
  5. 以SYSTEM用户运行CMD
  6. Page directive: illegal to have multiple occurrences of contentType with different values
  7. 二级c语言光盘,二级c语言(光盘).doc
  8. python bool转string_Python:可以返回boolean和string吗?
  9. 1.关于python
  10. java项目构建部署包