问题标签 [nurbs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++11 - Nurbs 曲线 (2D) 固定长度参数化
我有一个代表 2D Nurbs 曲线的类
类 Nurbs2D {...};
数据成员是控制点(Point2D 的std::vector)、节点向量(std::vector of double)、权重(std::vector of double)、度数(基于控制点的数量和节点向量)
API:我能够构建在 t0 和 t1 之间参数化的曲线。给定参数 t (t0 <= t <= t1),我还能够计算 Point2D。
给定一个参数 ti,我想估计下一个参数 ti+1,这样从 ti 到 ti+1 的曲线上的距离等于 Di(假设 Di 在公差 dt 内)。需要两个函数,一个计算从 ti 到 ti+1 的长度,另一个在给定 ti、Di 和 dt 的情况下估计 ti+1。
C++ 中的代码将非常有用。我正在寻找速度而不是准确性,因为调整容差 dt 将使结果适合。
c# - 用二维数组中的点列表绘制样条线
我研究了splines、nurbs和Bezier 曲线位,但找不到适合我需要的算法。我将不胜感激有关可以根据二维数组中的点绘制曲线的算法或函数的帮助。
例子:
我数组中的第一个起点:ex arr[1,2] = new Point(1,2)
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0, 1 ,0,0,0,0,0, 1 ,0 ,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0 ,0,0,0,0,0,0, 1 ,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0, 1 ,0, 0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
输出:
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0, 1 ,0,0,0,0,0, 1 ,0 ,0,0,0,0,0,0
0,0, 1 ,0,0,0,0, 1 ,0, 1 ,0,0,0,0,0,0
0,0,0, 1 ,0,0,0, 1 ,0,0, 1 ,0,0,0,0,0
0,0,0, 1 ,0,0, 1 ,0,0,0,0,0,0, 0,0,0
0,0,0,0, 1 , 1 , 1 ,0,0,0,0,0,0,0,0,0
0,0,0,0,0, 0 ,0, 0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
bezier - 将 3 次立方 Nurbs 曲线转换为 Catmull-Rom?
有没有办法将 3 次三次 Nurbs 曲线转换为 Catmull-Rom 曲线?
Nurbs 曲线有一个标准的节点向量,例如一条有 10 个控制点的曲线有这 12 个节点:
我假设生成的 Catmull-Rom 曲线将有 12 个控制点?或者更多..?
如果无法进行一对一转换,是否有一种好的算法可以至少获得非常接近的匹配?
c++ - 定义/预设 NURBS 起点和终点的方向
我在 3D 中实现了 NURBS 曲线,默认情况下,曲线有一个夹紧节点向量(曲线的起点和终点与相应的控制点在同一位置)。我想要做的是,预设曲线必须开始的方向(由向量定义)。这是可能的还是我必须定义额外的控制点才能获得所需的行为?
c++ - OpenCascade:从 IGES 读取修剪过的表面
我正在尝试使用 OpenCascade 从 IGES 文件中读取修剪后的表面。我可以得到曲面,但是如何从 Entity 144 之类的东西中得到修整曲线。边界曲线?任何帮助都会很棒。我正在寻找在被修剪表面的参数空间中定义修剪曲线的实际几何图形。
computational-geometry - catmull-clark 和(nurbs 或 B 样条补丁)之间的区别
Catmull-Clark 适用于任意多边形网格,这似乎是 NURBS 的超集或等于 B 样条补丁。然而,该方法收敛到基于WIKI的双三次 B 样条曲面。它们之间有什么关系?
javascript - 如何从 Three.js 中的 3D 点创建 3D 表面?
我正在制作一个项目来制作带有点和线(弯曲或不弯曲)的简单 3d 模型。在第一个版本中,我使用 SVG 元素进行简单渲染、平滑曲线和鼠标事件。
现在我正在尝试使用Three.js渲染器而不是 SVG。我必须创建 3d 管来替换曲线,但我不知道如何基于多个 xyz 坐标创建 3d 表面。
这是一个由 4 点和 4 条线(3 条直线和 1 条曲线)组成的模型示例:
我们可以想象曲线被拉伸到更多点,如下所示:
然后我想创建一个表面(或平面),就像蓝色的形状:
我受到了这个话题的启发:在three.js中将贝塞尔曲线转换为平面道路
但是这个示例代码只创建了另一个管状形状。
math - NURBS 加权 De Boor 算法
我在实现 3 度 NURBS 的算法时遇到问题。我已经能够从此处描述的方程中编写 2 阶方程,但我无法导出 3 阶有理 B 样条的方程。作者描述了有理结方程,因为它是De的非递归形式从那里的布尔算法我能够将Rational 内部控制点:Bn和Cn编程为:
但是,当我对点Vn应用相同的过程时,我得到的结果不是我正在寻找的结果:
当所有权重都相同时,点会按预期响应,当权重不同时,Bn和Cn点按应有的方式工作,但Vn响应不正确。所以我的Vn 方程一定是错误的。当函数输入Bn和Cn点列表时,我的猜测是我错过了这两个方程与我遇到问题的方程之间的关系。
由于我的问题是数学概念而不是实现,因此这被认为是与语言无关的问题。