前提・実現したいこと
大学からプログラムを学び始め、丁度2年目となるプログラミング初心者です。
授業課題の一部で、P3Dで円柱を作る必要があります。
発生している問題・エラーメッセージ
円柱の上面を作る際に計算したx,z座標(yは定数で固定)を、側面、底面で再利用する為、配列に保存したいと考えました。
保存する値はx,z座標の組が複数あるので、二次元配列となるはずだから、折角ならリストで多次元にできないかと思い、挑戦してみたのですが、つまづいてしまいました。
@thisの部分でArrayStoreExceptionと表示されてしまいます。
エラーメッセージ // - // - ( 多次元の可変長配列に慣れる良い機会だと思い、わざとListを使いました... ) ArrayList<Float[]> p = new ArrayList<Float[]>(); int n = 8; // -分割数 PShape[] s = new PShape[3]; int topDisk = 0; int side = 1; int undeDisk = 2; float ePI = 2 * PI / n; float r = 16; float x = 0; float y = -20; float z = r; // 上の円盤 s[topDisk] = createShape(); s[topDisk].beginShape(TRIANGLE); for (int i = 1; i <= n; i ++) { s[topDisk].vertex(0, y, 0); s[topDisk].vertex(x, y, z); x = r * sin(ePI * i); z = r * cos(ePI * i); s[topDisk].vertex(x, y, z); p.add(new Float[]{x, z}); } s[topDisk].endShape(); //側面の円筒部分 s[side] = createShape(); s[side].beginShape(TRIANGLE); @this // ここでエラー float[][] para = p.toArray(new float[p.size()][]); //"ArrayStoreException"と表示される。 for (int i = 0; i <= p.size(); i ++) { vertex(para[i][0], y, para[i][1]); } s[side].endShape(); //下の円盤 // . // . // . ### 該当のソースコード
試したこと
@thisの所を
float[] para = p.toArray(new float[p.size()]);
と[]を一つ減らした結果、float[]のparaとjava.lang.Float[]のpでは型が違うとコンパイルエラーが発生しました。
なぜこの二つは型が違う扱いになるのでしょうか?
また改善方法を押していただけると幸いです。
補足情報(FW/ツールのバージョンなど)
バージョンはProcessing 3.5.3です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/21 12:33