【问题标题】:Javascript matrix multiplication by scalar标量的Javascript矩阵乘法
【发布时间】:2015-01-15 17:08:23
【问题描述】:

我有一个名为 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 循环会重复。 IE。当我达到 72 时,循环不会停止。

【问题讨论】:

    标签: javascript object matrix scalar


    【解决方案1】:

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

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

    当我这样做时,虽然 for 循环会重复。 IE。当我达到 72 时,循环不会停止。

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

    不要使用alert(),顺便说一句,调试任何东西会让你的生活陷入地狱。你最好使用console.log()

    【讨论】:

    • 我已经实现了名称更改并取消了 this.vertices 的注释,这已经修复了顶点并调整了它们的大小。
    猜你喜欢
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多