繁体   English   中英

如何在JavaScript中编写C#Z轴矢量旋转?

[英]How can I write this C# Z-axis vector rotation in JavaScript?

我已经用C#编写了一个非常简单的XNA游戏,该游戏使用以下方法在弹丸飞向目标时旋转改变弹丸。 这样做的目的是使弹丸有些“归巢”:

float rotation;
Vector2 velocity;
int speed;

public void SetRotation(float value) // Make the projectiles homing
{
    rotation = value;

    velocity = Vector2.Transform(new Vector2(0, -speed),
            Matrix.CreateRotationZ(rotation));
}

我正在尝试(出于我自己的学习目的-我对JavaScript非常陌生)将我的游戏移植到JavaScript并允许它在画布中播放。 谁能建议我如何将上述方法重写为JS函数?

作为JavaScript的完整入门者,使用现有的某种框架最容易做到这一点吗?

旋转向量的方法涉及一些基本矩阵数学。 (请原谅ASCII文字。没有LaTeX会使这更加困难)

首先以均匀坐标形式表示向量:

    [ x ]
v = | y |
    | z |
    [ 1 ]

旋转矩阵由以下方式提供:

    [ cos(r)  -sin(r)  0  0 ]
M = | sin(r)   cos(r)  0  0 |
    |  0        0      1  0 |
    [  0        0      1  1 ]

其中r是绕Z的旋转量

要应用转换,请将矩阵M乘以向量v

          [ cos(r)  -sin(r)  0  0 ]   [ x ]
v' = Mv = | sin(r)   cos(r)  0  0 | * | y |
          |  0        0      1  0 |   | z |
          [  0        0      0  1 ]   [ 1 ]

简化乘法给出公式

v' = { x' = x * cos(r) - y * sin(r)
     { y' = x * sin(r) + y * cos(r)
     { z' = z

(注意:在Javascript中, sin()cos()函数采用弧度表示参数。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM