bezier曲线:强制4点的曲线通过3d空间中的控制点

hfyxw5xn  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(420)

我已经阅读线程,使这4点,但只有在二维空间发生在这里。
我已经实现了3d的答案,但这里只有3个控制点
我读过这篇文章,但不理解sudo代码或数学
有人能用java简化吗?我不想把曲线画成两段三个点

zbsbpyhn

zbsbpyhn1#

三次贝塞尔曲线分量公式(如x):

X(t) = P0.X*(1-t)^3 + 3*P1.X*(1-t)^2*t + 3*P2.X*(1-t)*t^2 + P3.X*t^3

哪里 P0 以及 P3 是终点,和 P1P2 是控制点。
曲线有四个点( SrcPt 数组),端点与贝塞尔端点重合,曲线上的两个内部点应定义两个控制点 P1P2 贝塞尔曲线。为了计算,我们必须知道-什么 t 参数对应于 SrcPt[1] 以及 SrcPt[2] . 让这些参数为1/3和2/3(可能的问题在链接的答案中)。
所以替代 t=1/3 以及 t=2/3 上式:

SrcPt[1].X = SrcPt[0].X*(1-1/3)^3 + 3*P1.X*(1-1/3)^2*1/3 + 
             3*P2.X*(1-1/3)*1/3^2 + SrcPt[3].X*1/3^3
SrcPt[2].X = SrcPt[0].X*(1-2/3)^3 + 3*P1.X*(1-2/3)^2*2/3 + 
             3*P2.X*(1-2/3)*(2/3)^2 + SrcPt[3].X*2/3)^3

解决这个系统的未知问题 P1.X 以及 P2.X . 所以我们将有所有需要的点来描述贝塞尔曲线。链接答案实现了解决方案。
示例-如何改变 t 相同内部点的值对曲线的影响:

相关问题