gpt4 book ai didi

math - 计算三次贝塞尔曲线的边界框

转载 作者:行者123 更新时间:2023-12-04 10:25:00 32 4
gpt4 key购买 nike

我试图找到一种算法来计算给定三次贝塞尔曲线的边界框。曲线位于3D空间中。

除了在曲线上采样点并计算这些点的边界框外,是否有其他数学方法可以做到这一点?

最佳答案

大部分问题都在An algorithm to find bounding box of closed bezier curves?中解决,除了这里我们有三次贝塞尔曲线,并且在那里处理了二次贝塞尔曲线。

本质上,您需要采用每个坐标函数的导数。如果x坐标是由

x = A (1-t)^3 +3 B t (1-t)^2 + 3 C t^2 (1-t) + D t^3

关于t的微分。
dx/dt =  3 (B - A) (1-t)^2 + 6 (C - B) (1-t) t + 3 (D - C) t^2
= [3 (D - C) - 6 (C - B) + 3 (B - A)] t^2
+ [ -6 (B - A) - 6 (C - B)] t
+ 3 (B - A)
= (3 D - 9 C + 9 B - 3 A) t^2 + (6 A - 12 B + 6 C) t + 3 (B - A)

这是二次方,我们可以在 a t^2 + b t + c处编写。我们想解决 dx/dt = 0,您可以使用二次公式来完成
- b +/- sqrt(b^2-4 a c)
-----------------------
2 a

解决这个问题将给出两个解t0,例如t1,没有解,或者在极少数情况下只有一个解。我们只对0 <= t <= 1的解决方案感兴趣。您将最多拥有四个候选点,两个端点和两个解决方案。找出其中哪些给出了极端点是一件简单的事情。

您可以为每个坐标重复相同的过程,然后获得边界框。

我已将其用于JS fiddle http://jsfiddle.net/SalixAlba/QQnvm/4/中的2D情况

关于math - 计算三次贝塞尔曲线的边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24809978/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com