java实现曲线运动_贝塞尔曲线 --匀速贝塞尔曲线运动的实现

二次贝塞尔曲线通常以如下方式构建,给定二维平面上的固定点P0,P1,P2,用B(t)表示该条曲线

954d03786c8a3ca95170540ac3ddb0f0.gif

用一个动画来演示,可以更加清楚的表明这条曲线的构建过程

5c411f78ebed0729ee349b4d96b52f27.gif

如果t变量本身线形变化的话,这条贝塞尔曲线本身的生成过程是并不是匀速的,通常都是两头快中间慢。

e224df21a7d64e248a7ec308c62af423.gif

如何想要得到匀速的贝塞尔曲线运动呢?比如我们在某款游戏中设计了一条贝塞尔曲线的路径,如何实现玩家匀速在这条路径上运动呢?

首先需要求得B(t)相对于t的速度公式s(t)

ab3521f30d59e4635ef34f6abf1c5cb5.gif

为了简化公式,我们定义如下变量

ffd1669f74ca71112c7f5865b24493fa.gif

计算出的s(t)可以表达为

2b94703d5751266139759c6c60555b69.gif

其中A,B,C是根据P0,P1,P2计算出的常数

db16eba3dd98011465f10df055eb3515.gif

根据这个公式,求得贝塞尔曲线的长

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值