我有一个名为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时,循环不会停止。
答案 0 :(得分:1)
我评论了
//this.vertices = vertices;
因为我不确定我是否必须在这里设置顶点
你需要在那里或在构造函数的末尾设置它。您的setScale
函数与存储vertices
数组的位置很好地分离,我会保持这种方式。但您可以考虑将其重命名为scaleVertices()
。
当我这样做时虽然for循环会重申。即当我点击72时,循环不会停止。
真的?那很奇怪。我肯定错过了什么;代码看起来是正确的。
顺便说一下,不要使用alert()
,它会让你的生活变得糟透了。使用console.log()
可以更好。