尝试使用for循环绘制形状的处理(Java/Android)

尝试使用for循环绘制形状的处理(Java/Android),java,android,processing,Java,Android,Processing,我正在尝试使用Android的Processing在3D中绘制一些三角形。当我硬编码三角形(比如,10个三角形的样本)时,它们被完美地绘制出来。然而,当我尝试使用for循环绘制这些相同的三角形时,只绘制了一个三角形。(我正在尝试绘制100个连接的三角形,因此硬编码不是一个很好的解决方案) 下面是draw()函数中的for循环: for(int j=0;j<triangles.size();j++){ beginShape(TRIANGLES); vertex

我正在尝试使用Android的Processing在3D中绘制一些三角形。当我硬编码三角形(比如,10个三角形的样本)时,它们被完美地绘制出来。然而,当我尝试使用for循环绘制这些相同的三角形时,只绘制了一个三角形。(我正在尝试绘制100个连接的三角形,因此硬编码不是一个很好的解决方案)

下面是draw()函数中的for循环:

    for(int j=0;j<triangles.size();j++){
        beginShape(TRIANGLES);
    vertex(triangles.get(j)[0],triangles.get(j)[1],triangles.get(j)[2]); //triangle pt 1
    vertex(triangles.get(j)[3],triangles.get(j)[4],triangles.get(j)[5]); //triangle pt 2
    vertex(triangles.get(j)[6],triangles.get(j)[7],triangles.get(j)[8]); //triangle pt 3
    endShape(CLOSE);
    }
j表示三角形数。(第一个tri、第二个tri等)

但是,当我尝试硬编码10个三角形时,效果非常好

这样的硬编码非常有效:

    vertex((float) 12.0,(float)123.6016745697409,(float)13.154318796014476);
    vertex( (float)0.0,(float)197.68424385921847,(float)23.124972474732054);
    vertex((float) 20.0,(float)143.86712094263626,(float)44.91428537210794);

    vertex((float) 0.0,(float)197.68424385921847,(float)23.124972474732054);
    vertex( (float)24.0,(float)214.61268970017602,(float)45.76677898884916);
    vertex( (float)32.0,(float)188.10247423402564,(float)28.491849521501333);

    vertex((float) 56.0,(float)88.25218560204328,(float)12.036878675294194);
    vertex((float) 60.0,(float)144.49729617140488,(float)46.869886728176354);
    vertex((float) 76.0,(float)101.60603981125132,(float)7.27525015602069);

    vertex( (float)60.0,(float)144.49729617140488,(float)46.869886728176354);
    vertex( (float)64.0,(float)184.21835869332358,(float)3.9402252833719453);
    vertex( (float)76.0,(float)101.60603981125132,(float)7.27525015602069);

    vertex((float) 4.0,(float)268.3209514804444,(float)18.52950131584495);
    vertex( (float)52.0,(float)349.93516427695124,(float)8.772515956684678);
    vertex( (float)72.0,(float)338.2777711567361,(float)21.563995998820793);

将beginShape(三角形)和endShape()放在for循环之外没有效果。真的被这里发生的事情弄糊涂了://p>我真傻!事实证明,三角形阵列列表中的每个三角形都有相同的值,因此实际上在显示期间只生成一个三角形

问题是因为在将值转移到三角形ArrayList时,我做到了:

            float[] trianglesi=new float[9];
        for (int tt=0; tt<ntri; tt++)
    {

        trianglesi[0]=(float) points[triangles[tt].p1].x;
        trianglesi[1]=(float) points[triangles[tt].p1].y;
        trianglesi[2]=(float) points[triangles[tt].p1].z;

        trianglesi[3]=(float) points[triangles[tt].p2].x;
        trianglesi[4]=(float) points[triangles[tt].p2].y;
        trianglesi[5]=(float) points[triangles[tt].p2].z;

        trianglesi[6]=(float) points[triangles[tt].p3].x;
        trianglesi[7]=(float) points[triangles[tt].p3].y;
        trianglesi[8]=(float) points[triangles[tt].p3].z;

        triangles2.add(trianglesi);
    }
float[]trianglesi=新浮点[9];

对于(int tt=0;tt为什么我的问题被否决了???我遗漏了很多信息吗?我需要提供更多信息吗?你的
三角形
看起来像什么?它是Delaunay三角剖分函数的结果,该函数返回结果三角形的顶点列表。
            float[] trianglesi=new float[9];
        for (int tt=0; tt<ntri; tt++)
    {

        trianglesi[0]=(float) points[triangles[tt].p1].x;
        trianglesi[1]=(float) points[triangles[tt].p1].y;
        trianglesi[2]=(float) points[triangles[tt].p1].z;

        trianglesi[3]=(float) points[triangles[tt].p2].x;
        trianglesi[4]=(float) points[triangles[tt].p2].y;
        trianglesi[5]=(float) points[triangles[tt].p2].z;

        trianglesi[6]=(float) points[triangles[tt].p3].x;
        trianglesi[7]=(float) points[triangles[tt].p3].y;
        trianglesi[8]=(float) points[triangles[tt].p3].z;

        triangles2.add(trianglesi);
    }