SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Java 3Dの変換処理を理解する

Java 3D API解説

捜査結果 2

回転、次に平行移動

 次に、平行移動と回転の順番を逆にしてみましょう。図11は、図9と同じパラメータ値を使用して、順番を逆にした場合の、7個のオブジェクトの回転と平行移動の結果です。

図11 回転、次に平行移動
図11 回転、次に平行移動

2つの立方体が同じ位置にある

 図11の左上のイメージは、最初に平行移動を適用せずに回転のみを適用した結果です。このイメージに最初は違和感を覚えるかもしれませんが、よく考えてみれば、これは当然の状態です。図11の左上のイメージには、同じサイズの2つの立方体が表示されており、両方とも3D空間の原点が中心です(原点を中心にして6個の細長いColorCubeオブジェクトも存在します)。

 青色の面を持つ立方体は、3本の軸すべてについて回転されています。赤色の面を持つ立方体は、回転されていません。その結果、このイメージに示されているように、2つの立方体が交差します。青色の立方体から突き出た赤色の立方体の部分のみが、可視状態です(Java 3Dでは、2つのオブジェクトがまったく同じ空間を占有することを回避する手段はありません)。

7個の立方体の平行移動

 図11の左下のイメージは、回転に続いて、図9と同じ距離および同じ方向で平行移動を適用した場合の結果です。

 図11の左下のイメージと図9の左下のイメージを比べると、2つのイメージは大きく異なることがわかります。

 平行移動を適用すると、各立方体(赤色の立方体を除く)は、立方体に属する軸に沿って平行移動されます。平行移動が行われたときに、図9および図11内の軸はそれぞれ異なる方向を指していたため、2つの各ケースにおいて、立方体は3D空間内の異なる位置に移動したのです。

変換行列

 コマンド行画面に表示される変換行列の解釈については、学習者の課題とします。

平行移動、回転、平行移動、および拡大縮小

 図12は、次の操作の結果です。

  • 7個の立方体の平行移動
  • 7個の立方体の回転
  • 7個の立方体のうちの4つを再び平行移動
  • その4つの拡大縮小

 したがって、図12は、このレッスンのトピックである4種類すべての変換を示しています。

図12 平行移動、回転、平行移動、および拡大縮小
図12 平行移動、回転、平行移動、および拡大縮小

平行移動および回転

 図12の左上のイメージは、平行移動に続けて回転を実行した結果です。図7に示されていたように、このユニバースには8個のColorCubeオブジェクトがあります。1つは、z軸に対して垂直な(ユーザーの視点に一致)赤色の面を持つオブジェクトです。図7から明らかなように、このオブジェクトには平行移動は適用されません。このため、常に原点を中心とする赤色の四角形のように見えます。

 残りの7個のColorCubeオブジェクトは、それぞれが3つのオブジェクトから成る2つのグループ(2組の3D軸のシミュレートに使用)と、青色の面がz軸に対して垂直になるように最初は方向付けられている1つのオブジェクトに分けられます。

平行移動変換および回転変換は8個のオブジェクトのうち7個に影響する

 図7からわかるように、最初の平行移動と回転は、この7個すべてのColorCubeオブジェクトに同じように影響します。その結果、最初の平行移動と回転の後、7個のオブジェクトはすべて、3D空間の同じ位置に同じ方向で配置されます。

 この時点で、3D軸をシミュレートする6個のColorCubeオブジェクトは(ペアで)同じ空間を占有しているため、互いのペアを視覚的に区別することはできません。さらにこれらのオブジェクトは、青色の面を持つ立方体と同じ点を中心とするため、図12の上側のイメージに示されているように、立方体の4つの面から突き出ているように見えます。

7個のオブジェクトのうち4つを平行移動および拡大縮小

 図12の下のイメージは、x軸に沿って新たな平行移動を行ったうえで、x次元で拡大縮小する拡大縮小変換を行った結果です。

 図7からわかるように、この2つの変換は、4つのColorCubeオブジェクトにのみ影響します。影響を受けるのは、青色の面を持つオブジェクトと、1組の3D軸をシミュレートするのに使用される、1組の3オブジェクトです。この4つのオブジェクトへの変換は、まったく同じように行われます。つまり、x軸に沿って平行移動が行われ、x次元で拡大縮小が行われます。

3つのオブジェクトはそのまま残る

 3つのColorCubeオブジェクトから成る1組はこの2つの変換の影響を受けないため、この3つのオブジェクトは、図12の左下のイメージに示すように、現在のサイズと方向のまま、現在の位置にそのまま残ります(イメージの右上部分にある3つの細長いColorCubeオブジェクトが、これに該当します)。

4つのオブジェクトは平行移動される

 他の4つのオブジェクトは、それぞれのx軸方向に平行移動されます。4つのオブジェクトの方向はすべて同じであるため、すべてのオブジェクトが同じ方向に同じ距離だけ平行移動されます。したがって、これらはひとかたまりのまま、3D空間の同じ位置が引き続き中心となります。

重要

 Java 3Dでオブジェクトを平行移動または回転する場合、その平行移動または回転は、目的のオブジェクトに属する軸を基準に行われます。ユニバースに属する軸を基準にしては行われません。したがって、オブジェクトが回転されて、その軸がユニバースの軸に平行でなくなった状態で、続けてx方向に平行移動を行うと、オブジェクトはユニバースのx軸に対して平行には移動しません。

 このケースでは、4つのColorCubeオブジェクトは、下、左、そしてユーザーに向かってわずかに前方に移動します。x方向に最大の長さを持つ、平行移動後の細長いColorCubeオブジェクトが、平行移動されずにイメージの右上にそのまま残っている対応する細長いColorCubeオブジェクトと一直線上に並ぶことに注意してください。これは、この2つのオブジェクトに属するx軸が一致するためです。以前に同一の平行移動および回転が行われているため、これらは一致するのです。

次のページ
説明およびサンプルコード 1

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Richard Baldwin(Richard Baldwin)

大学教授(テキサス州オースティン、Austin Community College)、およびプライベートコンサルタント。Java、C#、およびXMLの組み合わせに特に注目している。JavaアプリケーションとC#アプリケーションの、プラットフォームや言語に依存しない多くの利点に加えて、Java、C#、およびXMLの組み合わせは、Web上で構造化情報を提供するうえでの主要な原動力になると信じている。これまで多くのコンサルティ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2145 2010/01/05 11:13

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー