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

このQ&Aに関連する最新のQ&A

A 回答 (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;
}

この回答への補足

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

補足日時:2002/04/04 12:48
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q数学I 二次関数です。次の2次関数のグラフは、関数y=2x^2のグラフをどのように平行移動したも

数学I 二次関数です。

次の2次関数のグラフは、関数y=2x^2のグラフをどのように平行移動したものか。

⑴ y=2(x-2)^2
⑵ y=2(x+5)^2
⑶ y=2(x+1)^2-2

答え ⑴x軸方向に 2
⑵x軸方向に -5
⑶x軸方向に-1、y軸方向に-2

よろしくお願いします…(._.)

Aベストアンサー

(1)~(3)のグラフと、y=2x^2のグラフを実施に書いてみれば分かります。
論より証拠、百聞は一見に如かず、です。

これが「事実」「現実」であって、理由もへったくれもありません。各々がどういう関係にあるか、
 x = -10 ~ 10
ぐらいで何点か計算して、グラフ用紙にプロットして、それを曲線でつないでみてください。
添付は、エクセルで計算して作図したものです。

Q&= ~0x0c; &= ~0x03; |=1;

JavaScriptで分からないコードがあるので教えてください。


■変数設定
var hoge = 0;


■変数格納
・キーを押した時の条件分岐
  ~なら hoge |= 1;
  または hoge |= 2;
  または hoge |= 3;
  または hoge |= 8;

・キーを離した時の条件分岐
  ~なら hoge &= ~0x0c;
  または hoge &= ~0x03;


■変数使用
・swithch文の条件分岐に利用
  (hoge&0x03)
  (hoge&0x0c)


■質問
・どういう意味でしょうか?
・文字コード?
・ビット演算?

Aベストアンサー

ビット演算してるわね

x = x + a

x += a
って書くことができるの

つまり
hoge |= 1

hoge = hoge | 1
のことね

~はNOTのこと

0x
はアスキーコードの16進数表記ねきっと

0x0c は改ページを意味していて
0x03 は文章の最後を意味している
と思われるわ
全文がないので推測だけど

Q二次関数のグラフの問題です

2次関数の問題で
y=ax2+bx+cのグラフ(上に凸の形でxがマイナスのところとプラスのところで2ヶ所交わっている)のときに、a,b,cの符号を調べよ。
というもので、上に凸ということより、a<0 は分かるんですが、
b,cの符号を求め方がよく分かりません。
グラフの図が与えられているので、それを見て答えればいいだけなんでしょうか?
式から求めることはできないのでしょうか??

表記の仕方など伝わりにくいかもしれませんが、よろしくお願いします。

Aベストアンサー

>上に凸の形でxがマイナスのところとプラスのところで2ヶ所交わっている

この情報でaとcの正負が決定できます。bの正負を決めるには
頂点がxの正の領域か負の領域にあるかを読み取ってください。
(軸が正負のどちらにあるかということ)

>上に凸ということより、a<0 は分かる

合ってます。交点の座標を(α,0),(β,0)とすると (α>0,β<0)
y=a(x-α)(x-β)=ax^2-a(α+β)x+aαβ

aαβは正(負×負×正)ですからcは正です。

bの正負は#1さんの回答を参考に考えてください。

>グラフの図が与えられているので、それを見て答えればいいだけなんでしょうか?

まさしくグラフと式の係数を理解するための問題だと思います。
グラフと関数の関係をよく理解しておくと今後の理解が楽になりますよ。

QString a = "a"; と String b = new String ("b"); の違い

String a = "a";
String b = new String ("b");

お伺いしたいのですが、
b は String のインスタンスを作ってると思いますが、
a はどんなことをしてるのでしょうか?

Aベストアンサー

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その初期化に使った無名のStringインスタンスの3つがメモリ上に存在することになります。
if(b1 != b2) System.out.print("b1とは違うインスタンス");
の結果でもわかると思います。

したがって、
String b = new String ("b"); というのは、Integerに例えると
Integer i = new Integer(new Integer(1)); という処理を
していることになり、ひとつ無駄なインスタンス生成となります。

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その...続きを読む

Q二次関数グラフの平行移動

数学から遠ざかり早10年ですが
参考書片手に勉強している者です。
試験の問題だったため答えは分かりませんが
手法のほど導いてくれませんか?
---------------------------------------------
2次関数 y=2(x-1)(x+p) (ただしp>0) について

このグラフが y=2x~2のグラフをy軸方向については
-8だけ平行移動したものであるとき、
pの値を求め、またx軸方向についてはどれだけ
平行移動したものかを答えなさい。
---------------------------------------------
今私が分かるのは下の3つの公式です。
y=ax~2+bx+c  …通る3点が分かる場合
y=a(x-α)(x-β) …x軸との交点が(α,0)(β,0)
y=a(x-p)~2+q …頂点が(p,q)、軸がx=p

答えについては
グラフの形と頂点(x,-8)という想像ができます。
どうぞ宜しくお願いいたします。

Aベストアンサー

平行移動を考えるときある一点に注目し、それがどのように動いたか考えます。大抵の場合頂点で考えると分かりやすいので、y=a(x-p)~2+q で考えていきます。
まず与式を上式のように変形します。
y=2(x-1)(x+p)
=2{x^2-(1-p)x-p}
=2{x^2-(1-p)x}-2p
=2{x-(1-p)/2}^2-(p^2+2p+1)/2
これはy=x^2のグラフを平行移動したものであり、問題文からy軸の正の向きに-8の平行移動であるから
-8=-(p^2+2p+1)/2
16=p^2+2p+1
0=p^2+2p-15
0=(p-3)(p+5)
p=3,-5
ただし条件p>0よりp=3
これを変形した式に代入し
(1-p)/2
=(1-3)/2
=-1
よりx軸の正の向きに-1平行移動したことがわかります。

このように平行移動の問題を考える時には一般系の式(y=ax^2+bx+c)ではなく平方完成した式(y=a(x-p)^2+q)を考えると上手く行くことが多いと思います。

Qvar now = +new Dateの +は何?

var now = +new Dateの意味を教えてください
・現在時刻を取得?
・「 = +」の意味は? 「+=」みたいな短縮表記した演算子?
・「new Date」や「Date.now()」とは何が違うのでしょうか?

Aベストアンサー

+は単項プラス演算子です。

var now1 = +new Date();
var now2 = new Date();
alert(typeof now1);
alert(typeof now2);

で何となく分かると思いますが、+を付けることで数値に変換しています。


【JavaScript】単項 + 演算子で数値にする at softelメモ
http://www.softel.co.jp/blogs/tech/archives/4396

Q二次関数のグラフ・・・

二次関数y=ⅹ^2-10ⅹ+21のグラフは、二次関数y=ⅹ^2のグラフを、ⅹ軸方向に「」、y方向に「」だけ平行移動したものである。


問題の意味がわかりません・・
答えはどうやって導くのでしょうか?

おねがいします。

Aベストアンサー

y=x^2-10x+21 のグラフは
y=(x-5)^2-4 と変形し
 頂点(5,-4) とわかります

y=x^2 のグラフは
 頂点(0,0) です

Q「> avg = (double)sum/10;

「> avg = (double)sum/10;
この時点では、sumには「今まで入力した人数分の合計」が入っています。
10人になるのは最後の1回だけです。それ以外は10で割っても平均にはなりません。
また、それまでの人数(=i+1)で割っても、「それまでの人数分の平均」であって「10人分の平均」ではありません。」と書いてありますが、for文では10人分の平均点ではないのですか?そうでないのなら、ループ分の}から10人分の平均値を出したらいいのですか?


あとそれと
> if(avg<=count)
> count++;

「avgは「平均値」、countは「平均値以上の人の人数」ですよね?
この2つを比較する意味ってありますか?
また、上に書いたように、このループでは「全員の平均点」は計算できないのですから、「平均点以上かどうか」なんて判定できませんよね。」とはどういう意味ですか?

Aベストアンサー

http://oshiete.goo.ne.jp/qa/6303484.html
の続きですよね?そういうのは前の回答の補足とかでやってください。
新しい質問にしないように。


> for文では10人分の平均点ではないのですか?そうでないのなら、ループ分の}から10人分の平均値を出したらいいのですか?

現在のプログラムでは次のようになります。
・i=0のとき→1番の点数は(例えば)47点→sum=0+47で47→avgはsum/10で4.7→点数が平均以上か判定(してるつもり?)
・i=1のとき→2番の点数は(例えば)53点→sum=0+53で100→avgはsum/10で10→点数が平均以上か判定(してるつもり?)
では、この時点で「平均点は10だから2番は平均点以上だ」と言えますか?
そもそも10点というのは平均点として正しいでしょうか?

また、avgを現在までの平均と修正したとしも
・i=0のとき→1番の点数は(例えば)47点→sum=0+47で47→avgはsum/1で47→点数が平均以上か判定(してるつもり?)
・i=1のとき→2番の点数は(例えば)53点→sum=47+53で100→avgはsum/2で50→点数が平均以上か判定(してるつもり?)
では、この時点で「平均点は50だから2番は平均点以上だ」と言えますか?
このあとの8人全員が90点以上だったら、平均点は50よりずっと大きくなりますよね?


前回も書いたように、手計算でやるときのことをよく考えてみてください。こうなりませんか?
・(手計算では特に書かないけど)総得点の初期値は0
・1番目の点数を総得点に加える
・2番目の点数を総得点に加える
...以下人数分繰り返す。
・全員の総得点を人数で割ると平均点になる

上の手計算で、どこからどこまでが繰り返しになってるか、よく考えてみてください。
それは、そのままプログラムでのforループでの処理になります。


もしかして、for文の動作を理解できてない、ってことは無いですか?


> (略)とはどういう意味ですか?

このif文を日本語にしてみましょう

『もし 「平均点」が「(前の番号までの)平均点以上の人の人数」 以下だったら、「平均点以上の人の人数」を増やす。』

具体的な数字を入れてみましょう

『もし 「3点」が「5人」 以下だったら、「6人」に変更する。』
(会話では 「3点取った人が」を「3点が」という省略している場合もありますが、上の文ではそういう省略は一切無しです)

これらの文に何の違和感も感じないようだと、日本語やりなおしてください、となってしまうのですが。

これも手計算するなら、こうなりますよね
・(手計算では特に書かないけど)人数の初期値は0
・1番目の点数と平均点を比べて、平均点以上だったら 人数+1
・2番目の点数と平均点を比べて、平均点以上だったら 人数+1
...以下人数分繰り返す。
・全員調べたら、最終的な人数が「平均点以上の人数」

比較したいのは何と何か、それが入っているのはどの変数なのか?
それをよく考えてください。

後半は今回の前半に書いた通り。比較対象の平均点が求まってなければ、比較そのものができないってこと。
「これより大きいかどうか教えてください」と言われても「これ」がなんだかわからなければ答えられないですよね?

http://oshiete.goo.ne.jp/qa/6303484.html
の続きですよね?そういうのは前の回答の補足とかでやってください。
新しい質問にしないように。


> for文では10人分の平均点ではないのですか?そうでないのなら、ループ分の}から10人分の平均値を出したらいいのですか?

現在のプログラムでは次のようになります。
・i=0のとき→1番の点数は(例えば)47点→sum=0+47で47→avgはsum/10で4.7→点数が平均以上か判定(してるつもり?)
・i=1のとき→2番の点数は(例えば)53点→sum=0+53で100→avgはsum/10で10→点数が平均以上か判...続きを読む

Q二次関数のグラフ

二次関数のグラフが上手に書けません。どうしてもガタガタになります。
何かコツのようなものはありますか?

Aベストアンサー

放物線をグラフ用紙にかき込む場合と推測しますが、
例えばy=x^2なら整数だけだと点の数が少ないし
間隔もあいています。
そこで、座標が小数である(0.5、0.25)(1.5、2.25)
(2.5、6.25)もとって結んでみてはどうでしょうか?
そして、曲線を引くときはためらわず、力を抜いて一気に
かくといいです。(全体として大きなUの文字を書く
ような感じで)

QA a = new A(){}; の構文の意味が分からない。

下記サイトのコードを読んでいて、

ResponseListener listener = new ResponseListener() {
//略
};

という書き方があったのですが、どういう意味になるのでしょうか?
インスタンスの作り方は単に

A a = new A();

だと思うのですが…。

http://www.snmp4j.org/doc/org/snmp4j/Snmp.html

Aベストアンサー

無名クラスと呼ばれるものよ。
私も良くやるわ。

ちなみに
A a = new A();
はできないわよ。
Aはインターフェースだからね。


上記の場合、正式に実装するなら、
ResponseListenerをimplementsした
MyResponseListener(仮名)を別途作成し、
それを
ResponseListener listener = new MyResponseListener();
とする必要があるわ。
でも、このMyResponseListenerは
今ここでしか使わない、他からまったく参照する必要のない
超ローカルなクラスなのよ。
このメソッドが終了すればGCにかけてもいいわけ。
そんな場合、わざわざクラスを1つ作る必要なくて
その場でちょちょいとやってしまうことができるのよ。
それが無名クラスっていう実装方法よ。

http://www.javaroad.jp/java_class15.htm

FileFilterやCompare、Runnableなんかで
他のクラスで再利用しないときは良くやるわ。

無名クラスと呼ばれるものよ。
私も良くやるわ。

ちなみに
A a = new A();
はできないわよ。
Aはインターフェースだからね。


上記の場合、正式に実装するなら、
ResponseListenerをimplementsした
MyResponseListener(仮名)を別途作成し、
それを
ResponseListener listener = new MyResponseListener();
とする必要があるわ。
でも、このMyResponseListenerは
今ここでしか使わない、他からまったく参照する必要のない
超ローカルなクラスなのよ。
このメソッドが終了すればGCにかけても...続きを読む


人気Q&Aランキング

おすすめ情報