Math 时间、角度和速度后的矢量估计位置
在给定角度和速度下运动一段时间后,如何计算三维矢量位置 我有这些变量:当前位置、水平角、垂直角和速度 我想计算未来的位置 速度定义为:Math 时间、角度和速度后的矢量估计位置,math,vector,3d,physics,future,Math,Vector,3d,Physics,Future,在给定角度和速度下运动一段时间后,如何计算三维矢量位置 我有这些变量:当前位置、水平角、垂直角和速度 我想计算未来的位置 速度定义为: float distMade = this->Position().GetDistanceTo(lastPosition); float speed = (distMade / timeFromLastCheck) * 1000; // result per sec // checking every 100ms 垂直角度坐标系
float distMade = this->Position().GetDistanceTo(lastPosition);
float speed = (distMade / timeFromLastCheck) * 1000; // result per sec
// checking every 100ms
垂直角度坐标系:100%向下-PI/2(-1.57)
正面100%向上PI/2(1.57) 水平角度:
弧度系统,朝北=PI/2
面向西方=圆周率
定位3d矢量:x,y,z,其中z是高度水平。如果水平角是方位角,垂直角是仰角, 然后
在这种情况下,你的速度是笛卡尔速度 因此:
P0=(x0,y0,z0)代码>-最后位置[单位]
P1=(x1,y1,z1)代码>-实际位置[单位]
dt=0.1代码>-获取
,P0
P1
P1
P(t)=P1+(P1-P0)*t/dt
- 扩展:
x=x1+(x1-x0)*t/dt
y=y1+(y1-y0)*t/dt
z=z1+(z1-z0)*t/dt
(0,0,0)
- 然后使用此选项或将其修改为坐标系:
dist=| P |=sqrt(x*x+y*y+z*z)
angv=asin(z/dist)
angh=atan2(y,x)
- 这适用于:Z轴=向上,Y轴=北,X轴=东
- 如果原点不是(0,0,0),则在转换之前从P中减去它
看起来你正试图根据当前职位和以前的职位预测未来的职位,并知道两者之间的持续时间 在这种情况下,看起来你根本不需要角方向,只要保持你的“速度”作为一个向量
speed = (position() - lastPosition) / (time-last_time);
future_position = position()+(future_time-time)*speed;
如果向量对象没有重载运算符,请查找对每个x、y、z分量独立执行计算的运算符
当然,这不考虑任何加速度,只是根据当前速度进行预测。你也可以通过对过去5-10个速度进行平均来平滑它,以获得稍微不那么紧张的预测。如果你想考虑加速度,那么你必须以跟踪最后一个位置的相同方式跟踪最后一个速度目前,加速度只是速度-最后一个速度。你可能还想对其进行平均。如果V是速度,那么应该是V*t,其中t是经过的时间。指定你的速度类型1.角速度
角度'=ω'=epsilon
或2.笛卡尔速度位置'=speed'=加速度
也指定使用的坐标系(H,V角度意味着方位坐标系,但还有更多)
speed = (position() - lastPosition) / (time-last_time);
future_position = position()+(future_time-time)*speed;