Javascript矩阵乘以标量

时间:2014-11-18 13:29:39

标签: javascript object matrix scalar

我有一个名为Cube的对象。它设置如下

//Cube object
    function Cube(vertices, color, scale) 
    {
        //this.vertices = vertices;
        this.setColor(color);
        this.setScale(vertices, 1);
    }

我评论了//this.vertices = vertices;,因为我不确定是否必须在此处设置顶点或将其设置在setScale()函数内。
我想在矩阵上设置比例。矩阵是:

var verts = [
            // Front face
            -1.0, -1.0,  1.0,
             1.0, -1.0,  1.0,
             1.0,  1.0,  1.0,
            -1.0,  1.0,  1.0,

            // Back face
            -1.0, -1.0, -1.0,
            -1.0,  1.0, -1.0,
             1.0,  1.0, -1.0,
             1.0, -1.0, -1.0,

            // Top face
            -1.0,  1.0, -1.0,
            -1.0,  1.0,  1.0,
             1.0,  1.0,  1.0,
             1.0,  1.0, -1.0,

            // Bottom face
            -1.0, -1.0, -1.0,
             1.0, -1.0, -1.0,
             1.0, -1.0,  1.0,
            -1.0, -1.0,  1.0,

            // Right face
             1.0, -1.0, -1.0,
             1.0,  1.0, -1.0,
             1.0,  1.0,  1.0,
             1.0, -1.0,  1.0,

            // Left face
            -1.0, -1.0, -1.0,
            -1.0, -1.0,  1.0,
            -1.0,  1.0,  1.0,
            -1.0,  1.0, -1.0
        ];

我用来设置比例的功能是这样的:

Cube.prototype.setScale = function(vertices, scale) 
    {
        var length = vertices.length;
        for( var i = 0; i < length; i++)
        {
            //alert("before "+ vertices[i]+ " i "+ i);
            vertices[i] *= scale; 
            //alert("after "+ vertices[i]);
        }

我认为通过这样做,for循环应该采用矩阵长度并开始for循环 在这个for循环中,我将在i处获得顶点并将其乘以标度 当我这样做时虽然for循环将重申。即当我点击72时,循环不会停止。

1 个答案:

答案 0 :(得分:1)

  

我评论了//this.vertices = vertices;因为我不确定我是否必须在这里设置顶点

你需要在那里或在构造函数的末尾设置它。您的setScale函数与存储vertices数组的位置很好地分离,我会保持这种方式。但您可以考虑将其重命名为scaleVertices()

  

当我这样做时虽然for循环会重申。即当我点击72时,循环不会停止。

真的?那很奇怪。我肯定错过了什么;代码看起来是正确的。

顺便说一下,不要使用alert(),它会让你的生活变得糟透了。使用console.log()可以更好。