gpt4 book ai didi

c# - 我如何在 XNA 中找到旋转变换的 2D 坐标?

转载 作者:行者123 更新时间:2023-11-30 19:14:13 24 4
gpt4 key购买 nike

我正在制作一个 XNA 游戏,但遇到了一个计算矢量数学的小问题。

我有一个表示具有 X 和 Y 整数坐标和旋转 float 的 2D 对象的类。我需要的是为 Position 设置一个 Vector2 属性,该属性获取 X 和 Y 并将其设置为已使用 Rotation float 转换的 Vector2。这样我就可以做类似的事情;

Position += new Vector2((thumbstick.X * scrollSpeed), -(thumbstick.Y * scrollSpeed));

并且对象将沿它自己的向上方向移动,而不是 View 的向上方向。

到目前为止,这就是我所拥有的......我认为这个集合是正确的,但是对于 += 更改它也需要一个 get 并且我现在还没有得到答案...... >.>/p>

public Vector2 Position
{
get
{
// What goes here? :S
}
set
{
X = value.X * (int)Math.Cos(this.Rotation);
Y = value.Y * (int)Math.Cos(this.Rotation);
}
}

最佳答案

不,两者都不正确。

二维向量像这样变换:

x' =  x*cos(angle) - y*sin(angle)
y' = x*sin(angle) + y*cos(angle)

其中角度以弧度测量,零角度沿正 x 轴,并在您围绕 z 轴旋转出平面时沿逆时针方向增加。旋转的中心在被变换的向量的末端,所以想象一下原点在 (0,0) 的向量,在 (x,y) 处旋转一个角度,直到它变成原点在 (0,0) 的向量) 并结束于 (x', y')。

关于c# - 我如何在 XNA 中找到旋转变换的 2D 坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1217319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com