基于之前的公路网格弯道点的算法改变

本文介绍了一种改进的算法,用于解决基于点乘计算弯道导致的不平滑问题。通过计算弧度和构建新的直角坐标系,实现了二维旋转矩阵来模拟近似圆。同时,针对左转和右转弯道的不同,调整坐标系和角度范围,确保正确方向。最后,简述了UV坐标的计算方法,利用距离比例来分配坐标值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    我上一篇博客用了简单方法根据点乘的值来计算出圆心的位置,然后在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,这些有什么用了,我们再来看看上面两幅图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值