OpenGLES6-汽⻋碰撞

汽⻋碰撞

判断是否碰撞上 ?
汽车A的直径 > 汽车AB之间的间隔距离,则2车相撞了了。
汽车A的直径 < 汽车AB之间的间隔距离,则2车没有碰撞。


A速度 velocity B 速度 otherVelocity A 位置 position B 位置 otherPosition

directionToOtherCar = otherPosition - position

可以得到一条直线,如果汽⻋AB碰撞就会发生在这一条线上

理解为A汽⻋行驶移动的⽅向

negDirectionToOtherCar = directionToOtherCar 的相反⽅方向向量量

理解为B汽⻋行行驶的移动的方向

可以把directionToOtherCar、negDirectionToOtherCar理解为行驶方向

汽⻋碰撞

// AB碰撞之后速度下降
GLfloat A_DotProduct = GLKVector3DotProduct(ownVelocity, negDirectionToOtherCar);

//A汽⻋方向的碰撞后的速度值
GLKVector3 tanOwnVelocity = GLKVector3MultiplyScalar(negDirectionToOtherCar,A_DotProduct);

//更新A汽车碰撞后速度 ownVelocity - tanOwnVelocity
self.velocity = GLKVector3Subtract(ownVelocity, tanOwnVelocity);

Yaw,Pitch,Roll

http://blog.sina.com.cn/s/blog_8e6c5b220102wtpd.html

1.欧拉角是什么?

欧拉角是由3个角组成,这3个角分别是yaw,Pitch,Roll。很难翻译这3个词。Yaw 表示绕Y轴旋转的⻆度,Pitch表示绕X轴旋转角度,Roll表示绕Z轴旋转的角度。


Yaw 偏移
Pitch 投掷、倾斜、坠落
Roll 转动
回忆,AV Foundation 人脸识别课中就涉及到处理 YawAngle 与 RollAngle

image.png

欧拉角中的旋转


这是绕相关轴旋转,乘以相关 矩阵即可

欧拉角中的旋转


欧拉角中的3个角,可以转为 矩阵与矩阵相乘

Demo: 08-汽车碰撞

你可能感兴趣的:(OpenGLES6-汽⻋碰撞)