为什么在高圆分割时,锥体不能自行完成?

时间:2017-11-15 12:12:06

标签: webgl

我在webgl中创建了一个需要绘制圆锥的javascript文件。如果我选择一个低圆分割,它可以完美地工作,并显示所有的线条。但是在高点,从255高点,它就会破裂。似乎并非所有顶点都是链接的。我无法理解为什么不同。

case 'cone':{
  var CONE_DIV = 255;
  var angolo = 360 / CONE_DIV;
  var altezza = 1.0;

  // Coordinates
  var vertices = [];
  vertices.push(0.0); //v0t X
  vertices.push(0.0); //v0t Y
  vertices.push(0.0); //v0t Z
  vertices.push(0.0); //v0 X
  vertices.push(altezza); //v0 Y
  vertices.push(0.0); //v0 Z
  for (var i = 0; i < CONE_DIV; i++) {
    var ai = i * 2 * Math.PI / CONE_DIV;
    var si = Math.sin(ai);
    var ci = Math.cos(ai);

    vertices.push(ci); //coordinate X
    vertices.push(0.0); //coordinate Y
    vertices.push(si); //coordinate Z
  }

  // Colors
  var colors = [];
  for (var k = 0; k < CONE_DIV; k++) {
    for (var t = 0; t < 2; t++) {
      colors.push(a);
      colors.push(b);
      colors.push(c);
    }
  }

  // Indices of the vertices
  var indices = [];
  //index high vertex
  for (var j = 1; j <= CONE_DIV; j++) {
    indices.push(1);
    indices.push(j+1);
    var l = j + 2; //last vertex base - return to first
    if (l == CONE_DIV + 2) {
      indices.push(2);
    } else {
      indices.push(l);
    }
  }
  //index base
  for (var j = 1; j <= CONE_DIV; j++) {
    indices.push(0);
    indices.push(j+1);
    var l = j+2;
    if (l == CONE_DIV + 2) { //last vertex base - return to first
      indices.push(2);
    } else {
      indices.push(l);
    }
  }

0 个答案:

没有答案