我上一篇博客用了简单方法根据点乘的值来计算出圆心的位置,然后在p1到p2之间计算步长,用圆心到p1累加步长的点来计算半径的朝向,但是该方法会产生不平滑的弯道,所以我想在圆心到p1点乘圆心到p2的向量得到cos值,用反余弦值计算弧度,把弧度除以2,得到夹角的一半。然后以半径R的朝向为x轴,用全局上方向向量叉乘,构建新的直角坐标系,因为我不考虑y分量的位置,所以我把其抽象为二维空间
上图可以看到以R为新的X轴,y为新构建的Y轴,然后就可以使用二维旋转矩阵把R向n个角度旋转,得出近似圆,除此之外,还需要考虑弯道是左转弯还是右转弯,因为由于转弯的角度不同那么坐标系的朝向也会不同,两种情况请看下图
左边是左转弯:左转弯时,赛道向量的叉乘与Vector3.up的点乘是负值,因此我们设定一个变量,我简单写为judge=dot(cross(v1,v2),up)>0?1:-1;
现在我们知道了左转弯judge的判断值是-1,那么右转弯的判断值为1,这些有什么用了,我们再来看看上面两幅图