簡體   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