3阶以下贝塞尔曲线轨迹库和任意轨迹库

本文介绍了如何使用一阶至三阶贝塞尔曲线来构建游戏中的轨迹,包括线段、抛物线和更复杂的曲线。通过示例展示了不同起点和终点之间的多种轨迹实现,如起点在右边界,终点在上边界的情况。提供了多个LUA函数来生成这些轨迹,这些函数可用于游戏策划工具,便于自定义和编辑轨迹路径。
摘要由CSDN通过智能技术生成
20130521:任意轨迹库中添加19条轨迹。按屏幕矩形边界上有16个点,连接起点P_i和终点P_j的轨迹平均有3条计算,任意轨迹库最多约有240*3=720条轨迹。
20130522-20130523:用MFC开发3阶以下贝塞尔曲线轨迹编辑工具供策划使用,3阶以下贝塞尔曲线轨迹编辑工具Bezier3Tool开发完成。

一阶贝赛尔曲线(线段):B(t)=(1-t)P_0+tP_1,t∈[0,1]
意义:由起点P_0到终点P_1的连续点,描述一条线段。
没有控制点。
二阶贝塞尔曲线(抛物线):B(t)=(1-t)^2P_0+2t(1-t)P_1+t^2P_2,t∈[0,1]
有1个控制点P_1。
三阶贝塞尔曲线:B(t)=(1-t)^3P_0+3t(1-t)^2P_1+3t^2(1-t)P_2+P_3t^3,t∈[0,1]
有2个控制点P_1、P_2。

轨迹大类5:起点为右边界上的点,终点为上边界上的点
构造轨迹起点为P_9(w,0.25h)=(1024,162.5),轨迹终点为P_16(w/6,h)=(170.7,650)的第一种轨迹Trace_9_16_1、第二种轨迹Trace_9_16_2、第三种轨迹Trace_9_16_3、第四种轨迹Trace_9_16_4的LUA代码:
function Trace_9_16_1(t)
          --轨迹起点为P_9(w,0.25h)=(1024,162.5),轨迹终点为P_16(w/6,h)=(170.7,650)的第一种轨迹
          --local P_9=ccp(1024,162.5)
          local a=1100
          local x=1024-a*t
          local y=0.00047*(x-1200)*(x-1200)+147.94
          return ccp(x,y)
end
function Trace_9_16_2(t)
          --轨迹起点为P_9(w,0.25h)=(1024,162.5),轨迹终点为P_16(w/6,h)=(170.7,650)的第二种轨迹
          --local P_9=ccp(1024,162.5)
          local a=1100
          local x=1024-a*t
          local y=-0.00048*x*x+663.986
          return ccp(x,y)
end
function Trace_9_16_3(t)
          --轨迹起点为P_9(w,0.25h)=(1024,162.5),轨迹终点为P_16(w/6,h)=(170.7,650)的第三种轨迹
          local P_9=ccp(1024,162.5)
          local P_16=ccp(170.7,650)
          local tempx=(P_9.x-P_16.x)*(P_9.x-P_16.x);
          local tempy=(P_9.y-P_16.y)*(P_9.y-P_16.y);
          local r=math.sqrt(tempx+tempy);--r=nT=2npiA,n=1,1.5,2,2.5,……
          local A=r/(math.pi*2)--200
          local arg=math.atan2(P_16.y-P_9.y,P_16.x-P_9.x);       
          --轨迹起点为P_9=(350,300),振幅为A,周期为T=2piA,“辐角为arg的反正弦波”曲线轨迹
          --将2调大为2.5
          local x=A*2.5*math.pi*t
          local y=A*math.sin(-2.5*math.pi*t)--+表示"正正弦波",-表示“反正弦波”
          local Pt=ccp(x*math.cos(arg)-y*math.sin(arg),x*math.sin(arg)+y*math.cos(arg))--(x,y)逆时针旋转a=arg之后变为(xcosa-ysina,xsina+
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值