Skip to main content

贝塞尔曲线

贝塞尔曲线是一个可以只用 3个点及以上, 就可以描绘出一段平滑曲线的工具

贝塞尔曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。

提示

贝塞尔曲线可以用来制作跟踪弹, 或抛物线等的粒子特效

二阶贝塞尔曲线

提供 3 个点, 即可生成一条较为平滑的曲线

Location p0 = player.getLocation();
Location p1 = player.getEyeLocation();
Location p2 = player.getLocation().add(2, 0, 0);
TwoRankBezierCurve twoRank = new TwoRankBezierCurve(p0, p1, p2);
twoRank.alwaysShowAsync();

TwoRankBezier.png

三阶贝塞尔曲线

提供 4 个点, 即生成一条较为平滑的曲线

Location p0 = player.getLocation();
Location p1 = player.getLocation().add(0, 3, 0);
Location p2 = player.getLocation().add(3, 0, 0);
Location p3 = p2.clone().add(2, 5, 0);
ThreeRankBezierCurve threeRank = new ThreeRankBezierCurve(p0, p1, p2, p3);
threeRank.alwaysShowAsync();

ThreeRankBezier.png

N阶贝塞尔曲线

提供 N+1 个点, 即生成一条较为平滑的曲线

NRankBezierCurve nRankBezierCurve = new NRankBezierCurve(
origin.clone(),
origin.clone().add(0, 3, 0),
origin.clone().add(3, 0, 0),
origin.clone().add(5, 5, 0)
);
nRankBezierCurve.alwaysShowAsync();

ThreeRankBezier.png

下面这张图是随机数拟合出来的, 并不是上面的代码出来的

F2R2_JN3XI@~_1HJTWM4BVN.png