确定给定旋转和所需距离的新位置
Determine new position given rotation and required distance
我有一个对象,我从中获取二维 space 中的位置和旋转。
我需要将对象的位置在 X 和 Y 之间沿相同方向前进 12 米,它的旋转仅提供更改 X 和 Y 位置的方法。
这是我尝试过但失败的一个(坏)例子。
if (direction <= 45)
{
float nx = Convert.ToSingle(direction * .13333333);
float ny = 12 - nx;
} else if (direction <= 90)
{
float ny = Convert.ToSingle((90 - direction) * .133333333);
float nx = 12 - ny;
} else if (direction <= 135)
{
float ny = Convert.ToSingle((135 - direction) * -.133333333);
float nx = -12 - ny;
} else if (direction <= 180)
{
float nx = Convert.ToSingle((180 - direction) * -.133333333);
float ny = -12 - nx;
}
我是否使用了正确的公式或方法来获得所需的结果?
我有理由相信我需要 Cos 和 Tan,但对如何或何时使用它们一无所知。
你必须把向量想象成一个三角形,然后求解。答案并不太复杂。
https://www.mathsisfun.com/algebra/trig-finding-side-right-triangle.html
//convert degrees into radians for the .NET trig functions
direction *= Math.PI / 180;
float nx = (float)(12 * Math.Cos(direction));
float ny = (float)(12 * Math.Sin(direction));
我有一个对象,我从中获取二维 space 中的位置和旋转。
我需要将对象的位置在 X 和 Y 之间沿相同方向前进 12 米,它的旋转仅提供更改 X 和 Y 位置的方法。
这是我尝试过但失败的一个(坏)例子。
if (direction <= 45)
{
float nx = Convert.ToSingle(direction * .13333333);
float ny = 12 - nx;
} else if (direction <= 90)
{
float ny = Convert.ToSingle((90 - direction) * .133333333);
float nx = 12 - ny;
} else if (direction <= 135)
{
float ny = Convert.ToSingle((135 - direction) * -.133333333);
float nx = -12 - ny;
} else if (direction <= 180)
{
float nx = Convert.ToSingle((180 - direction) * -.133333333);
float ny = -12 - nx;
}
我是否使用了正确的公式或方法来获得所需的结果? 我有理由相信我需要 Cos 和 Tan,但对如何或何时使用它们一无所知。
你必须把向量想象成一个三角形,然后求解。答案并不太复杂。 https://www.mathsisfun.com/algebra/trig-finding-side-right-triangle.html
//convert degrees into radians for the .NET trig functions
direction *= Math.PI / 180;
float nx = (float)(12 * Math.Cos(direction));
float ny = (float)(12 * Math.Sin(direction));