![]() |
1
14
对 De Casteljau's algorithm 是要走的路。 参数化如果曲线的参数化不正确 吨 =0槽 吨 =1,那么你似乎用了错误的方程来描述你的曲线。 Wikipedia 有适合您的正确公式:
如果你设置 吨 =0,你得到 P 1. ,你的出发点。如果你设置 吨 =1,你得到 P 4. ,您的端点。在两者之间,曲线的形状由这些点和两个控制点决定 P 2. 和 P 3. 。 De Casteljau算法允许 吨 是要在其中剪切曲线的参数。假设您只想保留初始部分。你从 P 1. 到 P 2. ,从那里到 P 3. 从那里到 P 4. .你把每一行都除以分数 吨 其长度,即分界点之前的线的长度与整个长度相关 吨 :1。你现在有三个新观点 P 12 通过 P 34 .再次执行相同操作可获得两点 P 123 和 P 234 ,并再次获得单点 P 1234 最后一点是B( 吨 ),截断曲线的端点。起点是 P 1. 和以前一样。新的控制点是 P 12 和 P 123 我们刚才建造它们的方式。 删除曲线的初始部分的方法与此相同。因此,分两步,可以修剪曲线的两端。您可以获得一组新的控制点,这些控制点精确地(达到您使用的数字精度)描述原始曲线的一段,而不涉及近似或类似情况。 你可以将上面所有的几何描述转化为代数公式,在一个完美的世界里,你应该从 this answer 你引用的问题。 唉,这似乎不是一个完美的世界。在撰写本文时,这些公式只使用了二次多项式,因此无法描述三次曲线上的端点。正确的公式应如下所示:
哪里 u 0 =1 吨 0 和 u 1. =1 吨 1. 。 请注意,在带括号的表达式中,至少有一些项是相等的,并且可以组合。我没有这样做,因为我相信这里所说的公式会使模式更加清晰。您可以简单地为 x 和 y 计算新控制点的方向。 |
![]() |
jonas · 将一行拆分为两个不同的字符串[重复] 6 年前 |
|
user9453652 · 校准覆盆子Pi传感器 6 年前 |
![]() |
Stanleyrr · 欺诈检测分类ML的经纬度转换 6 年前 |
|
user9615134 · 如何在Swift中的数组中放置特定坐标? 7 年前 |
![]() |
logvca · 计算半径并删除GPS坐标 7 年前 |