资讯专栏INFORMATION COLUMN

3DSDK-NURB曲线曲面

williamwen1986 / 1613人阅读

摘要:导语非均匀有理样条,通常简称为实际上已经成为利用计算机处理集合信息时用于形状的表示设计和数据交换的工业标准。

导语

非均匀有理B样条,通常简称为NURBS(Non-Uniform Rational B-Splines),实际上已经成为利用计算机处理集合信息时用于形状的表示、设计和数据交换的工业标准。许多国内和国际标准,如IGES,STEP和PHIGS都把NURBS作为集合设计的一个强有力的工具。NURBS取得的巨大成功主要由于以下事实:

NURBS为解析曲线曲面(如圆锥截线和二次曲面)和自由型曲线曲面(如汽车车身和船体外形)的表示提供一种统一的数学方法;

利用NURBS进行设计非常直观,几乎每个工具和算法都有一个易于理解的几何解释;

NURBS的算法执行速度很快,并且数值稳定;

NURBS曲线曲面在通常的几何变换(如平移、旋转、平行和透视投影)下是不变的;

NURBS是非有理B样条、有理以及非有理Bezier曲线曲面的推广;

对于大部分人来说,B样条、有理B样条和NURBS有点神秘,有人成NURBS为无人能理解的有理B样条曲线(NoBody Understand Relation B-Splines);研究NURBS的当前首要目的在于呈现三维数据场的可视化,可参考书籍《三维数据场可视化》;

先睹为快


若有所思

技术无极限,技术是研究不完的,将现有的技术应用的实际的场景中,也验证了技术的能力,又促进了技术推进的动力;那么如上效果,在实际应用中,哪里可能会使用到呢?

实验天地

上述效果图是基于twaver的3D引擎开发的,自然不能暴露太多的代码;对底层实现比较感兴趣的可以研究three.js的NURB曲线;

mono.NurbsCurve使用
/**
 * {[TGL.Line]}  line  
 * {[Array of vector(3|4)]]}  ctrlPoints  曲线的控制点
 * {[Number]}  degree 曲线的最高指数
 * {[Number]} count  曲线每段需要插入点的个数
 * {[Object]} ctrlCond 线条控制条件
 */
TGL.Line.createNurbs = function(line, ctrlPoints, degree, count, ctrlCond){}
弹簧
 var ctrlPoints = [];
      var a = 300;
      var n = 10;
      var offset = 2 * Math.PI / 100 /n ;
      var b = 100;
      for(var t= 0;t<= 2*Math.PI;t+= offset){
        var x = -b * b /a * Math.cos(n * t);
        var y = - 1 * b * b / a * Math.sin(n * t);
        var z = b * t;
        ctrlPoints.push(new TGL.Vec3(x,z,y));
      }

      var line = mono.Line.createNurbs(ctrlPoints, 1, 1,{
       skyY : 500,
       skyColor : new mono.Color("orange"),
       horizonY: 0,
       horizonColor: new mono.Color("orange"),
       earthY : -100,
       earthColor: new mono.Color("orange"),
     });
      line.s({
        "m.type": "phong",
      });
      box.add(line);

mono.NurbsSurface的使用
/**
 * NurbsSurface 非均匀有理样条B样条曲面
 * NURBS是非有理B样条、有理以及非有理Bezier曲线曲面的推广
 * @class mono.NurbsSurface
 * @constructor
 * @extends mono.Curve
 * @param {Number} [degreeU] U方向阶数 <= U点数 - 1
 * @param {Number} [degreeV] V方向阶数 <= V点数 - 1
 * @param {Number} [ctrlPoints] 曲面的控制点
 * @return {mono.NurbsSurface} NurbsSurface对象
 * @example
 * 
 */
曲面



  Mono Test
  
  


  

温度云场



  Mono Test
  
  


  

引力场



  Mono Test
  
  


  

天空盒中的温度云

参考资料

[1]. 权威书籍:《非均匀有理B样条(第2版)》
[2]. 《三维数据场可视化》
[3]. http://mathworld.wolfram.com/...
[4].B 样条曲线、样条曲面 NURBS
[5].http://www.mathcurve.com/
[6].http://verbnurbs.com/
[7].https://threejs.org/examples/...
[8].BURBS Book 书籍 http://vdisk.weibo.com/s/yYC8...
http://blog.csdn.net/hunter_w...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82084.html

相关文章

  • WebGL立体视觉呈现

    摘要:导言立体视觉技术前几年研究极为广泛,研究生期间也以此为课题,主要学习并研究特征提取和图像匹配方向目前火遍全球的虚拟现实技术,也属于立体视觉领域的研究范畴。 导言 立体视觉技术前几年研究极为广泛,研究生期间也以此为课题,主要学习并研究特征提取和图像匹配方向;目前火遍全球的虚拟现实技术,也属于立体视觉领域的研究范畴。 立体视觉技术可研究内容很多,实现一整套立体视觉呈现步骤如下: 摄像机标...

    xeblog 评论0 收藏0
  • 深度学习的几何理解(2) - 学习能力的上限

    摘要:老顾受邀在一些大学和科研机构做了题为深度学习的几何观点的报告,汇报了这方面的进展情况。特别是深度学习网络的学习能力取决于网络的超参数,如何设计超参数,目前主要依赖于经验。 (最近,哈佛大学丘成桐先生领导的团队,大连理工大学罗钟铉教授、雷娜教授领导的团队应用几何方法研究深度学习。老顾受邀在一些大学和科研机构做了题为深度学习的几何观点的报告,汇报了这方面的进展情况。这里是报告的简要记录,具体内容...

    ShevaKuilin 评论0 收藏0
  • 令人拍案叫绝的Wasserstein GAN

    摘要:测度是高维空间中长度面积体积概念的拓广,可以理解为超体积。前作其实已经针对第二点提出了一个解决方案,就是对生成样本和真实样本加噪声,直观上说,使得原本的两个低维流形弥散到整个高维空间,强行让它们产生不可忽略的重叠。 在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文《Wasserstein GAN》却在Reddit的Machine Learning频道火了,连Go...

    lieeps 评论0 收藏0

发表评论

0条评论

williamwen1986

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<