• 締切済み

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; }

みんなの回答

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

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; }

northcurlcurl
質問者

補足

UKYのおっしゃるとおり、エラーの原因はこのロープの部分ではなく、コンストラクターにpublicを付け忘れてたせいでした。エラーはなくなったのですが、何も表示されないんです。どのような原因が考えられるのでしょうか?

関連するQ&A