当前位置: 首页 > 知识库问答 >
问题:

什么是bezier曲线或B样条的通用数据结构?

陈铭晨
2023-03-14

立方Béziers为每个点接收两个控制点。

几条Bézier曲线可以串在一起,以创建扩展,平滑的形状。通常,一个点一侧的控制点将是另一侧用来保持斜率恒定的控制点的反映。在这种情况下,可以使用立方Bézier的快捷版本,由命令S(或S)指定。

  • 每个bezier类必须单独实现,还是可以将它们组合成一个泛型类?
  • 如果分开,它们基本上只是一个控制点数组吗?

所以基本上我开始想:

class CubicBezierCurve
  include ActiveModel::Model

  has_many :control_points
end

class ControlPoint
  include ActiveModel::Model

  attr_accessor :x, :y
end

但这似乎不太对。例如,一条本原三次bezier曲线,每个点由2个控制点组成。所以也许(尽管,开始迷失):

class CubicBezierCurve
  include ActiveModel::Model

  has_many :control_points, class_name: 'CubicBezierCurveControlPoint'
end

class CubicBezierCurveControlPoint
  include ActiveModel::Model

  attr_accessor :x, :y
end

class Point
  include ActiveModel::Model

  attr_accessor :x, :y
end
    null

这只是2D图形。

共有1个答案

丁阳羽
2023-03-14

对于Bezier曲线来说,最通用的数据结构只是包含控制点数组的数据结构。Bezier曲线的度数是控制点的个数-1。因此,线性、二次和三次Bezier曲线都可以使用相同的数据结构,但控制点个数不同。

对于B样条曲线,一般数据结构将包含

  • 度数(D)
  • 控制点数目(N)
  • 控制点数组
  • 结序列。
 类似资料:
  • 从一系列的点中,创建一个平滑的二维样条曲线。内部使用Interpolations.CatmullRom来创建曲线。 代码示例 // Create a sine-like wave const curve = new THREE.SplineCurve( [ new THREE.Vector2( -10, 0 ), new THREE.Vector2( -5, 5 ), new THRE

  • 规则的曲线比如圆、椭圆、抛物线都可以用一个函数去描述,对于不规则的曲线无法使用一个特定的函数去描述,这也就是样条曲线和贝塞尔曲线出现的原因。Threejs提供了这两种曲线的API,不需要自己封装,如果你想深入研究可以学习计算机图形学。 一条光滑样条曲线案例 在三维空间中设置5个顶点,输入三维样条曲线CatmullRomCurve3作为参数,然后返回更多个顶点,通过返回的顶点数据,构建一个几何体,通

  • 我想做一个递归函数,减少振幅/时间图上的数据点,同时保留曲线的特征。我最初认为我应该使用一个循环,这里是粗略的伪代码; 空隙压缩(长度时间,幅度范围){ 检查长度时间的分辨率是否高于数据返回的分辨率(如果高于); 循环通过长度时间,得到最小和最大幅度; 如果最小和最大振幅之间的差异在振幅范围内,则存储最小和最大并返回; 如果没有,除以时间长度/4并调用compress(长度时间/4,范围); 然而

  • 大家好,我需要一些帮助。我用Python(Tkinter)写了一个代码,它是绘制一个3度贝塞尔曲线,并且它是工作的。。。。kinda.我的问题是:我如何直接从键盘输入x和y坐标为控制点,而不是先x后y(像我的代码)。第二个问题是关于参数(u或t值。通常它是标准化的(值0到1),但对于循环将不工作的十进制值为步骤(我知道这是显而易见的:))。如果我把u=1-&>1000,然后除以1000,它在数字上

  • 我们从四个简单但重要的概念开始研究数据结构。栈,队列,deques, 列表是一类数据的容器,它们数据项之间的顺序由添加或删除的顺序决定。一旦一个数据项被添加,它相对于前后元素一直保持该位置不变。诸如此类的数据结构被称为线性数据结构。 线性数据结构有两端,有时被称为左右,某些情况被称为前后。你也可以称为顶部和底部,名字都不重要。将两个线性数据结构区分开的方法是添加和移除项的方式,特别是添加和移除项的

  • 我们已经在Highcharts Configuration Syntax一章中看到了用于绘制此图表的配置 。 现在让我们考虑以下示例来进一步了解带有符号的样条曲线图。 配置 (Configurations) 使用marker.symbol属性将符号添加到一系列图表中。 它可以是预先配置的符号,如“square”,“diamond”或图像的url。 标记也可以添加到系列数据的任何位置。 chart.