- - PR -
Graphics2Dの中身を知りたい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-31 07:02
例えば、Math.rondomは、どのような計算で作られているのか、などのjavaで用意されているクラスやインターフェースの中身を知りたいのですが、どこをどう探したら、それを見ることがでいるのでしょうか。一番知りたいのは、Graphics2Dのrotateの中身です。宜しくお願いします。
| ||||||||
|
投稿日時: 2004-10-31 11:10
ゴールデンさん、こんにちは。
■Math.rondomっていうのは無いですが、java.util.Randomクラスのこと でしょうか? これは、SDKをインストールしたときに、ソースも選択していれば Javaのホームディレクトリに src.zipというのがあると思いますが、 これを展開すれば、java/util/Random.javaで閲覧できます。 ■Graphics2Dは abstractクラスで、通常は sun.java2d.SunGraphics2D が具象クラスです。ただしこれは上記 src.zipには含まれていないので、 どうしてもソースが見たければ、Community Source Licenseに同意 して別途 Java VMごとソースをダウンロードしてくる必要があります。 ※でも想像がつくように、回転は java.awt.geom.AffineTransform#rotate() 呼んでるだけですから、特別にダウンロードしなくとも src.zip中の java/awt/geom/AffineTransform.javaを見れば良いわけです。 で、rondomも affineも、やってることは書店で売られている アルゴリズム事典に書かれているものです。 | ||||||||
|
投稿日時: 2004-10-31 12:41
Kissingerさん、ありがとうございます。
srcという中にあることを知らなくて、いろいろ探して見つからなかったので…、 それと、以前Graphics2Dを使って図形を回転することを教えていただいたのですが、今、Graphics3Dを使わないで画像キューブをマウスドラッグで回転させることをやっています。ふつうの計算では、その中で、図形を回転することでの空白ピクセルの穴ができてしまうので、それをGraphics2Dのrotateのように、空白ピクセルの出ない計算を書きたいのです。なので中身を見たいのです。javaによる図形処理入門という本で、勉強しましたが、画像キューブの回転は書かれていないので、アルゴリズムの本を読めばそのようなことはだいたい載っているのでしょうか。 | ||||||||
|
投稿日時: 2004-10-31 13:24
unibon です。こんにちわ。
Graphics2D は abstract なクラスであり、rotate メソッドも abstract なメソッドなので、src.zip の中には実装コードは含まれていません。SunGraphics2D クラスなどの実装クラスのなかにコードがありますが、これは別途契約(無料)して、ダウンロードする必要があります。 http://wwws.sun.com/software/communitysource/j2se/java2/download.html ただ、こういうものは見ても分かりやすくはなってないかもしれません。 また、ビットマップの rotate などは、もしかしたら、OS(Windows 等)が持つ API に委ねているだけで、そもそもコードは持ってないかもしれません。でも、アクセラレーターをまったく使わないモードもサポートしなければならないので、地道な1ピクセル毎の転送もあるのかな? 回転の原理だけならアルゴリズムの本にも載っているはずです。 | ||||||||
|
投稿日時: 2004-10-31 14:54
unibonさん、ありがとうございます。
「javaによる図形処理入門」の本にあるように、頂点を指定して、fillPolygonで面を作るものや、回転の原理は分かって、もうやってみて、できました。ただ、画像キューブとなると、頂点を指定したキューブと違って、1つ1つのピクセルを回転させるので、計算上、表示させたとき、空白のピクセルが生まれてしまうのです。知りたいのは、回転の原理ではなくて、空白のピクセルを出さない計算方法です。それはアルゴリズムの本にだいたい載っているのでしょうか。 | ||||||||
|
投稿日時: 2004-10-31 15:30
ゴールデンさん、
私は以前、ゴールデンさんの質問に対して、空白のピクセルが 空かないようにする方法を回答したのですが、読んでいただい たでしょうか? もし未だお読みで無いようでしたら、一度読んでみてください。 | ||||||||
|
投稿日時: 2004-10-31 16:23
Kissingerさん、ありがとうございます。
マーチン・ファウラーの『リファクタリング』という本でしょうか。 教えていただいたのに、まだ読んでいないので、次に購入してみたいと思います。 ありがとうございました。 | ||||||||
|
投稿日時: 2004-10-31 16:44
いや、それはどうしたらわかりやすいプログラムが書けるかについて 書いたもので、空白とは関係ありません。 8月22日 の 12時過ぎのを引用しておきますので、よければ 参考にしてください。
なお、この方法は Java3Dどころか、Java2Dすら必要ありません。 コードは異なりますが、原理的には JDK 1.1.xでも実現可能です。 |