经过一段时间的决定,我决定将我的小型爱好项目(带有自顶向下视图的3D物理)转换为使用笛卡尔系统而不是使用屏幕坐标。当发现绘制圆形不正确时,一切都很好 - 它的半径与运动方向相反,例如,如果圆形朝向东南方向,则绘制的半径线指向西北方向。 这是绘制圆圈的函数:
mainWindow.Context.ellipse(drawX, //The x axis of the coordinate for the ellipse's center
drawY, //The y axis of the coordinate for the ellipse's center
5, //X-radius
5, //Y-radius
heading * (PI/180), //converted to radians
0, //starting point
2*PI, //ends, in radians
false); //draw in clockwise direction
虽然使用atan2(y,x)计算var标题并使用heading = heading * (180/PI)
直接转换为Degrees,但我不确定是否应该将其正确转换回弧度(ellipse()
仅采用弧度作为参数)
任何想法都是我的错误? 我如何计算标题:
angle = atan2(directionY, directionX) * (180 / PI); //to Degrees
if (heading - angle >= error) { heading = heading - (turnRate * PowerToWeightRatio); }
else { heading = heading + (turnRate * PowerToWeightRatio); }
是的 - 这是我第一次尝试进行修正,增加或减去180度没有帮助,这看起来更像是一个临时修复而不是永久解决方案:(