反向求解贝塞尔曲线:实现点沿指定轨迹向圆心移动的技术问题
反向求解贝塞尔曲线:实现点沿指定轨迹向圆心移动的技术问题
通常我们创建贝塞尔曲线的时候,都是先确定起点、控制点和终点,再生成对应的轨迹。但我现在碰到了一个反过来的问题,想请教大家怎么解决。
问题描述
- 给定一个半径为
r的圆,圆内存在两个点:- 点P1固定在圆心(0,0)(本次场景的情况,后续也可能有变动)
- 点P2是动态点,可位于圆内任意位置
- 我的目标是让P2沿着指定形状的贝塞尔曲线轨迹,向P1(圆心)移动
已知信息
首先明确二次贝塞尔曲线的推导公式:
L0(t) = (1-t)*P0 + t*P1 L1(t) = (1-t)*P1 + t*P2 Q0(t) = (1-t)*L0(t) + t*L1(t)
公式中的参数定义:
P0:贝塞尔曲线的起点P1:贝塞尔曲线的控制点P2:贝塞尔曲线的终点Q0(t):曲线上对应参数t(取值范围0到1)的当前位置
另外我有一个小比例的目标贝塞尔曲线模板(也就是我们要匹配的轨迹形状):
- 模板起点
P0=(0,0) - 模板控制点
P1=(0.75,0.25) - 模板终点
P2=(1,1)
现在实际场景的参数已经给出:
- 圆的半径
r=1000 - 实际起点
P0=(0,0)(也就是圆心) - 当前动态点的位置
Q0=(350,560)
我的困惑
我现在有点摸不清头绪,不知道该怎么着手处理这个问题:比如怎么把小比例的模板曲线缩放适配到实际的圆内场景?又该如何根据当前的Q0位置反推出对应的参数t,进而确定P2移动到P1的完整轨迹?
备注:内容来源于stack exchange,提问作者Dennis Solomon
相关产品推荐
相关产品推荐

