我有一个描述为(startX,startY)到(anchorX,anchorY)并使用控制点(controlX,controlY)的二次贝塞尔曲线 .
我有两个问题:
(1)我想根据x点确定该曲线上的y点 .
(2)然后,在我的贝塞尔曲线上给出一个线段(由我的贝塞尔曲线上的两个中间点定义(startX',startY',anchorX',anchorY')),我想知道该线段的控制点这样它就会与原始贝塞尔完全重叠 .
为什么?我想要这些信息进行优化 . 我画了许多水平贝塞尔 . 当beziers大于屏幕时,性能会受到影响,因为渲染引擎最终渲染超出了可见范围 . 这个问题的答案将让我只渲染可见的东西 .
2 回答
第1部分
二次贝塞尔曲线的公式为:
其中粗体表示矢量 . 给出 B x(t),我们有:
其中 v x是 v 的x分量 .
根据二次方程式,
假设存在一个解,请将其插回到原始方程中,以便在给定的x处得到 B (t)的其他分量 .
第2部分
您可以简单地将参数参数的域限制为[0,1]的正确子区间,而不是生成与第一个部分重合的第二条Bezier曲线(我现在感觉不像是处理符号) . 也就是说,使用第1部分为两个不同的x值找到t的值;将这些t值称为i和j . 为t∈[i,j]绘制 B (t) . 等价地,为t∈[0,1]绘制 B (t(j-i)i) .
t方程是错误的,你需要使用eq(1)
并使用根的二次方程式求解它(2) .
哪里