Three.js样条曲线、贝赛尔曲线

news/2024/11/17 10:01:46/

样条曲线、贝赛尔曲线

本文是Three.js电子书的7.3节

规则的曲线比如圆、椭圆、抛物线都可以用一个函数去描述,对于不规则的曲线无法使用一个特定的函数去描述,这也就是样条曲线和贝塞尔曲线出现的原因。Threejs提供了这两种曲线的API,不需要自己封装,如果你想深入研究可以学习计算机图形学。

样条曲线、贝赛尔曲线 样条曲线 贝赛尔曲线 经过一系列点创建平滑的样条曲线 SplineCurve 2D Catmull-Rom算法 CatmullRomCurve3 3D 起点、终点和1个控制点定义 QuadraticBezierCurve 2D QuadraticBezierCurve3 3D 二次贝赛尔曲线 起点、终点和2个控制点定义 CubicBezierCurve 2D CubicBezierCurve3 3D 三次贝赛尔曲线

一条光滑样条曲线案例

在这里插入图片描述

在三维空间中设置5个顶点,输入三维样条曲线CatmullRomCurve3作为参数,然后返回更多个顶点,通过返回的顶点数据,构建一个几何体,通过Line可以绘制出来一条沿着5个顶点的光滑样条曲线。

var geometry = new THREE.Geometry(); //声明一个几何体对象Geometry
// 三维样条曲线  Catmull-Rom算法
var curve = new THREE.CatmullRomCurve3([new THREE.Vector3(-50, 20, 90),new THREE.Vector3(-10, 40, 40),new THREE.Vector3(0, 0, 0),new THREE.Vector3(60, -60, 0),new THREE.Vector3(70, 0, 80)
]);
//getPoints是基类Curve的方法,返回一个vector3对象作为元素组成的数组
var points = curve.getPoints(100); //分段数100,返回101个顶点
// setFromPoints方法从points中提取数据改变几何体的顶点属性vertices
geometry.setFromPoints(points);
//材质对象
var material = new THREE.LineBasicMaterial({color: 0x000000
});
//线条模型对象
var line = new THREE.Line(geometry, material);
scene.add(line); //线条对象添加到场景中

通过调用threejs样条曲线或贝塞尔曲线的API,你可以输入有限个顶点返回更多顶点,然后绘制一条光滑的轮廓曲线。

贝塞尔曲线

贝塞尔曲线和样条曲线不同,多了一个控制点概念。

二次贝赛尔曲线的参数p1、p3是起始点,p2是控制点,控制点不在贝塞尔曲线上。
在这里插入图片描述

var p1 = new THREE.Vector3(-80, 0, 0);
var p2 = new THREE.Vector3(20, 100, 0);
var p3 = new THREE.Vector3(80, 0, 0);
// 三维二次贝赛尔曲线
var curve = new THREE.QuadraticBezierCurve3(p1, p2, p3);

二次贝赛尔曲线的参数p1、p4是起始点,p2、p3是控制点,控制点不在贝塞尔曲线上。
在这里插入图片描述

var p1 = new THREE.Vector3(-80, 0, 0);
var p2 = new THREE.Vector3(-40, 100, 0);
var p3 = new THREE.Vector3(40, 100, 0);
var p4 = new THREE.Vector3(80, 0, 0);
// 三维三次贝赛尔曲线
var curve = new THREE.CubicBezierCurve3(p1, p2, p3, p4);

http://www.ppmy.cn/news/782460.html

相关文章

样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)

贝塞尔曲线插值与B样条插值 前言: 这篇是“样条曲线”的接续,前面主要集中在了理论部分,这篇文章主要内容是贝塞尔曲线与B样条是如何应用到插值中的。 前篇:样条曲线 文章目录 贝塞尔曲线插值与B样条插值0. 插值问题1. 贝塞尔曲线…

读取AutoCAD中的样条曲线(一)

介绍AutoCAD 图形的DXF 中关于NURBS 样条曲线的组码信息,提取几何信息。深入介绍和分析NURBS 样条曲线的数学模型,并通过程序设计,实现曲线的真实路径,为数控加工提供坚实的理论基础,对DXF 在生产制造业中的应用起到重…

计算几何02_三次样条曲线

一、样条 样条(Spline)函数是由舍恩伯格于1946年提出的。样条是富有弹性的细木条或有机玻璃条,它的作用相当于“万能”曲线板。早期船舶、汽车、飞机放样时用铅压铁压住样条,使其通过一系列型值点,调整压铁达到设计要…

solid works定义样条曲线

solid works定义样条曲线: 此篇我们将用到:拔模、阵列、阵列、样条曲线等。此篇我们以绘制一个运动后拉伸的按摩滚筒为例。 我们将要绘制三个零件图以及一个装配体: 按摩体 手柄: 中间轴体 1:按摩体的建立&#…

VTK笔记——插值样条曲线采样

有时候我们想通过在样条曲线上得到更多的点,比如用这些点来与另一条曲线连通生成三角条,让曲线在可视化的时候分辨率更高,等等,就需要用到曲线插值采用。最常见的是样条曲线插值采样。 曲线已经有了情况下(关于如何生成…

抛物样条曲线(最详细简单的解析)

文章目录 前言1.抛物样条曲线要解决一个什么问题?2.分段的参数化曲线构造3.完整曲线的构造 前言 抛物样条曲线是计算机曲线绘制中的一个重要的基础内容,但是很多教材和网课上对于这一部分的内容都是直接不说原因地给出大量公式,就直接劝退了…

计算机图形学-样条曲线Spline

内容来自《计算机图形学》第四版 第14章-样条表示 目录 [1] 样条的种类1. 插值样条2. 逼近样条 [2] 参数连续性条件[2] 几何连续性条件[3] 样条描述1. 列出一组施加在样条上的边界条件2. 列出描述样条特征的行列式3. 列出一组混合函数或基函数 [4] 三次样条插值方法1. 自然三次…

样条曲线、样条函数、python绘画样条曲线

样条曲线 所谓(Spline Curves)是指给定一组控制点而得到一条曲线,曲线的大致形状由这些点予以控制,一般可分为插值样条和逼近样条两种,插值样条通常用于数字化绘图或动画的设计,逼近样条一般用来构造物体的表面。 定义 样条曲线…