在简单地形上小车运动轨迹的数学表达(一)
图形学课上的小小总结
前提:
假设地形函数为f(x)为f(x)=sin(x)[*]。
小车由四个轮子组成。
实现基于OpenGL。
[*] 实际效果图的f(x) = 0.5 * sin(x)
问题一:如何画一个轮子?
具体的问题描述应该是"如何在已知坐标x的情况下画出一个轮子?"
该轮子拥有的唯一特点是:与其所依附的地形应该是相切的。
下面是当"x0 = π/4"地形函数(图-1):
假设在地形上的一点(x0,y0),由它所唯一对应的轮子圆心为(x1,y1)。
不失一般性,(x1,y1)的计算过程如下:
这里有几个需要注意的地方:
k0为0的情况,即在x=x0处地形斜率与x轴相切的情况下:
x1 = x0
y1 = y0 + R
关于x1的±:
if k0 > 0
x1 = x0 + R * cosβ
else
x1 = x0 - R * cosβ
综合以上可得最终实现如下:
void get_wheel_center(float _x0, float _y0, float _r, float &_x1, float &_y1){
floa