如何使用旋转矩阵旋转形状?

3
我正在尝试使用旋转矩阵通过JavaScript在画布中旋转正方形。 这是我的代码。
function square() {
    this.cord=[[0,0],[-25,25],[25,25],[25,-25],[-25,-25]];  
}           

var a=new square();

function rotate() {
    var cos=Math.sqrt(2)/2;
    var sin=Math.sqrt(2)/2;
    for(var j=0;j<a.cord.length;j++) { 
        a.cord[j][0]=a.cord[j][0]*cos-(a.cord[j][1])*sin;
        a.cord[j][1]=a.cord[j][1]*cos+(a.cord[j][0])*sin;
    }
}

但是奇怪的事情发生了,正方形逐渐缩小,而且无法正确旋转。 我的代码有什么问题?
1个回答

2

在计算之前,您需要取出值a.cord[j][0]a.cord[j][1]。你对a.cord[j][1]的计算是基于新计算出的值而不是原始值。

因此:

for(...)
{
    var x = a.cord[j][0];
    var y = a.cord[j][1];

    a.cord[j][0] = x*cos - y*sin;
    a.cord[j][1] = y*cos + x*sin;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接