2017-03-14 7 views
1

私はこのコードを微調整していて、ここ数週間正常に実行されたので、ここでコードミスをしているに違いありません。今私はエラーが表示されますが表示されます。なぜ私はそれほど確かではありません。p5.jsで 'transpose3x3'が不明ですか?

sphere(20); 

エラーがこのように表示されます:

Uncaught TypeError: Cannot read property 'transpose3x3' of null 
    at p5.Matrix.inverseTranspose (p5.js:31017) 
    at p5.RendererGL._setMatrixUniforms (p5.js:31953) 
    at p5.RendererGL.drawBuffers (p5.js:31676) 
    at p5.sphere (p5.js:32444) 
    at pointsSphereFibonacci (spheres_4.js:124) 
    at draw (spheres_4.js:82) 
    at p5.redraw (p5.js:14256) 
    at p5.<anonymous> (p5.js:9143) 
    at p5.<anonymous> (p5.js:9049) 
    at new p5 (p5.js:9320) 

は、あなたが任意のアイデアを持っているなら、私を知ってみましょう私は、この行(124)コメントするときにエラーが消えます!ありがとうございました!

function setup() { 
 
    createCanvas(windowWidth, windowHeight, WEBGL); 
 
    translate(width/2, height/2, -1000); 
 
} 
 

 
var r = 800; 
 
var n = 1024; 
 
var lon = []; 
 
var lat = []; 
 
var i = 0; 
 

 
function draw() { 
 
    background(247, 147, 135); 
 
    ambientLight(240, 240, 240); 
 

 
    push(); 
 
    rotateY(-radians(frameCount * .1)); 
 
    rotateX(radians(90 + frameCount * .08)); 
 
    rotateZ(radians(180 + frameCount * .03)); 
 
    pointSphereFibonacci(r, n); // draw sphere equally spaced points 
 
    pop(); 
 
} 
 

 
function pointSphereFibonacci(radius, points) { 
 
    var phi = (sqrt(5) + 1)/2 - 1; // golden ratio 
 
    var ga = phi * 2 * PI; // golden angle 
 

 
    for (var i = 0; i < points; i++) { 
 

 
    lon[i] = ga * i; 
 
    lon[i] /= 2 * PI; 
 
    lon[i] -= floor(lon[i]); 
 
    lon[i] *= 2 * PI; 
 
    if (lon[i] > PI) { 
 
     lon[i] -= 2 * PI; 
 
    } 
 
    } 
 
    var lat = asin(-1 + 2 * i/points); 
 

 
    for (var i = 0; i < points; i++) { 
 

 
    push(); 
 
    rotateY(lon[i]); 
 
    rotateZ(-lat[i]); 
 
    translate(radius, 0, 0); 
 
    ambientMaterial(5, 0, 223); 
 
    sphere(20); 
 
    pop(); 
 

 
    } 
 
}
<script src="https://p5js.org/assets/js/p5.min.js"></script>

+0

目に見える結果を与えるされることを変更すると、[MCVE]ではなく、プロジェクト全体のを投稿してください。問題がその1行に限定されている場合は、マイクロフォンやサウンド解析コードのような余分なものがすべて含まれていないサンプルプログラムを投稿してください。ハードコーディングされた値を代わりに使用するだけで、マシン上で実行することができます。 –

答えて

2

問題がsphereへもののlatは、配列が、数字ではないときにrotateZ(-lat[i]);を設定球

の翻訳を設定することで、コールではありません。これは、球をレンダリングしようとすると致命的なエラーになる計算を介してNaNを送信します。

私はあなたが達成しようとしているもののわからないんだけど、rotateZ(lat)にエラーを取り除くと