数学图形之Boy surface

这是一个姓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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开个定时器给echarts组件配置定时更新

我在js文件中开了个定时器,每1s从后端获取数据并解析,然后用异步方法就渲染不出来,改成同步就可以了。 这个解决方法来自于这篇文章,我出的问题和他一样:关于ajax中readyState的值一直为1的问题 这里将ajax参数修改为f…

关于Oracle Insert 语句的子查询 和 with check option的用法

今日睇ocp教程 发现 insert语句还可以子查询例如:INSERT INTO (SELECT employee_id, last_name, email, hire_date, job_id, salary, department_id FROM employees where department_id 50 )VALUES (9999…

ORACLE基本SQL语句-查询篇

一、普通查询 /*查询表数据*/select * from STU /*取出前3行数据*/select * from stu where ROWNUM<3 /*模糊查询*/select * from stu where stu_id like stu001% 说明&#xff1a;通配符“%”代表一个或者多个字符&#xff0c;通配符“_”代表一个字符。 /*别名*/select S…

三次握手建立失败的几种情况以及三次握手的理解

上面的图是阻塞式socket进行通信的过程&#xff0c;阻塞的时候是操作系统内核网络协议栈在工作 调用 connect 函数将激发 TCP 的三次握手过程&#xff0c;而且仅在连接建立成功或出错时才返回。其中出错返回可能有以下几种情况&#xff1a; 1、三次握手无法建立&#xff0c;客…

在熟练使用2B铅笔前,请不要打开Axure

在互联网产品领域&#xff0c;Axure已成为产品经理、产品设计师以及交互设计师的必备工具&#xff0c;从某种程度讲&#xff0c;Axure帮助我们建立低保真模型&#xff0c;便于与用户的需求验证&#xff0c;也帮助我们构思交互细节&#xff0c;使前端和开发人员更容易理解我们的…

启用isqlplus

iSQL*Plus是sqlplus基于web方式发布的&#xff0c;要使用它只要在服务器上开启即可&#xff1a; [oraclelocalhost ~]$ isqlplusctl start perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE (unset), LC_ALL (unset)…

echarts 怎么知道鼠标点击的哪根柱子

有个需求&#xff0c;点击柱子&#xff0c;然后得到该柱子的信息&#xff0c;然后展示这个机房的时序图。 第一步卡住了&#xff0c;就是不知道如何获取柱子的序号。后参考&#xff1a;https://blog.csdn.net/zt_fucker/article/details/72461572?utm_sourceblogxgwz1 得到思路…

codeforces 261 D

题目链接&#xff1a; 解题报告&#xff1a;给出一个序列a1,a2,a3.........an&#xff0c;f(i , j ,x) ak 等于x的个数(i < k < j)&#xff0c;令i < j&#xff0c;求有多少对 i 和 j 使得 f(1,i,ai) > f(j,n,aj)。 从左往右扫一遍这个序列&#xff0c;num1[i] 等于…

不使用物理引擎,自己动手做真实物理的模拟投篮游戏

最近打算做一个2D投篮游戏&#xff0c;由于对于BOX2D等物理引擎并不熟悉&#xff0c;加之一开始低估了游戏所需要的碰撞检测复杂度&#xff0c;认为仅仅涉及4面墙&#xff0c;篮球&#xff0c;篮板&#xff0c;篮筐&#xff0c;篮网的碰撞检测并不复杂。因此决定自己实现所需要…

nyist 488 素数环

有一个整数n&#xff0c;把从1到n的数字无重复的排列成环&#xff0c;且使每相邻两个数&#xff08;包括首尾&#xff09;的和都为素数&#xff0c;称为素数环。 为了简便起见&#xff0c;我们规定每个素数环都从1开始。例如&#xff0c;下图就是6的一个素数环。 这题在进行判断…

.Net入门-部署问题

学习一门新的语言难免会遇到各种各样的问题&#xff0c;总结一下。 测试环境&#xff1a;windows2008serverIIS7 开发环境: vs2010 问题1&#xff1a;"Unrecognized attribute targetFramework. Note that attribute names are case-sensitive. " 分析&#xff1a; 开…

WINDOWS系统Eclipse+NDK+Android + OpenCv

WINDOWS系统EclipseNDKAndroid OpenCv 参考文档博客 1 NDK环境搭建 http://jingyan.baidu.com/article/5d6edee22d908799eadeec9f.html 2 官方文档 Android.mk与Application.mk如何编写&#xff0c;OpenCV库如何调用 http://docs.opencv.org/trunk/doc/tutorials/introduction…

正确理解JavaScript

过去几年我注意到技术圈一个很奇怪的现象&#xff0c;有太多程序员将那些他们只是有过非常浅显的了解&#xff0c; 但其实根本就不懂的技术写到他们的简历中&#xff0c;这个现象几乎每种语言都有&#xff0c;但这其中最严重的就要数javascript了。 你不知道你不懂 出现这种状况…

医疗机构远程视频监控集中管理,贝锐蒲公英提供一站式解决方案

上海某企业专业致力于医疗软件、家居智能化研发、设计、销售、集成及实施&#xff0c;企业主营业务之一为医疗软件&#xff0c;涉及PACS/RIS/WEB/HIS、示教系统等方面的医院信息化建设。 在实际应用、部署过程中&#xff0c;需要实现各地区分院与总院间的数据库互相访问、视频数…

JAVA_Collection容器

因为项目的需要&#xff0c;今天抽时间把JAVA中的容器复习了一下&#xff0c;为了以后的不时之需&#xff0c;现在把它记下来。 容器有其名&#xff0c;知其意&#xff0c;用来盛放数据的集合&#xff0c;JAVA中为我们提供了三种容器类&#xff1a;set、list、map&#xff0c;三…

控制器中获取Field值

在ASP.NET MVC程序中&#xff0c;我们需要POST Data到制器中&#xff0c;是有很多方法。但是我们想在控制器中&#xff0c;获取Feild值呢&#xff1f;怎样获取&#xff1f;你可以留意到有一个类FormCollection。它能帮助到我们解决这个问题。 举个简单的例子。在ASP.NET MVC应用…

私有RTP协议和标准流媒体协议

先介绍下RTP协议&#xff1a; 实时传输协议RTP&#xff08;Real-time Transport Protocol&#xff09;是一个网络传输协议 &#xff0c;该协议详细说明了在互联网上传递音频和视频的标准数据包格式 。 RTP标准定义了两个子协议 &#xff0c;RTP和RTCP 数据传输协议RTP&#xff…

从WebRtc学习RTP协议

文章目录TCP为何不适用于实时音视频UDP->RTPRTP协议结构JittbufferRTP扩展头RTP填充数据参考TCP为何不适用于实时音视频 可靠性是以牺牲实时性为代价的。按照TCP原理&#xff0c;当出现极端网络情况时&#xff0c;理论上每个包的时延可达到秒级以上&#xff0c;而且这种时延…

解决ListView异步加载数据之后不能点击的问题

在ListView的onScroll事件中执行异步加载数据&#xff0c;然后使用notifyDataSetChange()函数更新适配器&#xff0c;之后发现listView不能点击了&#xff0c;这问题苦恼了我半天。最后在一篇博文中发现调用listView的requestFocusFromTouch()函数终于解决了这问题。 Java代码…