- 締切済み
Java 3Dで二次関数のグラフを描く
Java3Dを使ってサーフボードを作ってみようと思っているのですが、初歩中の初歩からつまずいています。public BranchGroup createSceneGraph()の中に以下のようなコードを書いたのですが、load test can't be instantiatedと出ます(testはアプレットの名前です)。そもそもこのエラーがどのような物なのかも分からないのですが、以下のコードのどこがおかしいのか教えてください。お願いします。 //createSceneGraph()の一部 Point3d[] vertices = new Point3d[400]; double step = (1 - (-1)) / 400; int i = 0; for(double x= -1; x < 1; x += step){ // x座標が x と x+step の間を計算して線分で結 vertices[i] = new Point3d(x, f(x), 0.0); vertices[1+1] = new Point3d(x + step, f(x+step), 0.0); i += 2; } double f(double x){ return a*x*x + b*x + c; }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- UKY
- ベストアンサー率50% (604/1207)
load test can't be instantiated(testをインスタンス化できない)と出ているので、このコード内にエラーメッセージの原因があるとは思えないのですが、とりあえず、お書きになられたコードで修正すべき点を上げておきます。 double step = (1 - (-1)) / 400; ↓整数型と浮動小数点型はしっかり区別。 double step = (1.0 - (-1.0)) / 400.0; 変数iとの兼ね合いもあるため、ループカウンタに浮動小数点型はお勧めできません。 修正例) double x = -1.0; int i = 0; while (i < 400) { vertices[i] = new Point3d(x, f(x), 0.0); i++; x += step; vertices[i] = new Point3d(x, f(x), 0.0); i++; } ↑元のコードをそのまま修正したものです。(ループカウンタをxからiにしました) ↓でもループの中はこっちのほうが正しいような気がします。 while (i < 400) { vertices[i] = new Point3d(x, f(x), 0.0); i++; x += step; }
補足
UKYのおっしゃるとおり、エラーの原因はこのロープの部分ではなく、コンストラクターにpublicを付け忘れてたせいでした。エラーはなくなったのですが、何も表示されないんです。どのような原因が考えられるのでしょうか?