簡體   English   中英

為什么我的變量“ j”未定義?

[英]why my variable “j” is undefined?

我有一個使用Three.js為3D對象着色的功能。 我的變量j存在,如果我使用alert(j)它可以工作,但是當我使用變量作為數組(顏色圖)的索引時,它不起作用。

colormap=[[0,0,0.5625],[0,0,0.625],[0,0,0.6875],[0,0,0.75],[0,0,0.8125],[0,0,0.875],[0,0,0.9375],[0,0,1],[0,0.0625,1],[0,0.125,1],[0,0.1875,1],[0,0.25,1],[0,0.3125,1],[0,0.375,1],[0,0.4375,1],[0,0.5,1],[0,0.5625,1],[0,0.625,1],[0,0.6875,1],[0,0.75,1],[0,0.8125,1],[0,0.875,1],[0,0.9375,1],[0,1,1],[0.0625,1,0.9375],[0.125,1,0.875],[0.1875,1,0.8125],[0.25,1,0.75],[0.3125,1,0.6875],[0.375,1,0.625],[0.4375,1,0.5625],[0.5,1,0.5],[0.5625,1,0.4375],[0.625,1,0.375],[0.6875,1,0.3125],[0.75,1,0.25],[0.8125,1,0.1875],[0.875,1,0.125],[0.9375,1,0.0625],[1,1,0],[1,0.9375,0],[1,0.875,0],[1,0.8125,0],[1,0.75,0],[1,0.6875,0],[1,0.625,0],[1,0.5625,0],[1,0.5,0],[1,0.4375,0],[1,0.375,0],[1,0.3125,0],[1,0.25,0],[1,0.1875,0],[1,0.125,0],[1,0.0625,0],[1,0,0],[0.9375,0,0],[0.875,0,0],[0.8125,0,0],[0.75,0,0],[0.6875,0,0],[0.625,0,0],[0.5625,0,0],[0.5,0,0]];

j = 0;// indice colore nella matrice

var callbackMale = function ( geometry, materials ) 
{
  // surf contain surface
  var cmin=surf.min(), cmax=surf.max(), colorLength=colormap.length;

  for ( var i = 0, l = geometry.vertices.length; i < l; i ++ ) 
  {

     var face = geometry.faces[ i ];
     j = Math.round(((surf[i]-cmin)/(cmax-cmin)*colorLength));

     if(j < 0) 
      j=0;
     else if( j >= colorLength) 
       j=colorLength;
     alert(j)
     var ind = colormap[j]; // j undefined              
     for(var k = 0 ; k < 3 ; k++)
     {              
       face.vertexColors[ k ] = new THREE.Color().setRGB(ind[0],ind[1],ind[2]);                 
     }//fine for interno

  }//fine for esterno
}

j的類型是什么? 是int還是float或其他? 我認為您嘗試將浮點數放入int中,但這是行不通的。

您的循環將超出數組的范圍,從而導致來自colormap[j]未定義值。

else if( j >= colorLength) 
    j=colorLength;

因為數組是從零開始的,所以將值放在數組的邊界。 將最大值固定為低一:

else if( j >= colorLength) 
    j=colorLength-1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM