-
- Page 8
-
- 説明およびサンプルコード 2
- Java3D010クラスの開始
- Sceneクラスのコンストラクタの開始
- 一時的なTransformGroupオブジェクト
- ビッグバン
- 2つのColorCubeオブジェクトを作成および準備する
- blueCubeGroupに可視軸を追加する
- 変換階層を構成する
- 拡大縮小変換を作成および表示する
- 平行移動変換を作成および表示する
- 回転変換を作成および表示する
- 新しい3D軸にも回転を適用する
- 別の3D軸を作成および追加する
- もう1つの平行移動変換を作成および表示する
- 階層の完了
- コンストラクタとクラスの完了
- プログラムの実行
- まとめ
- 次の課題
- ダウンロード
- 参考資料
- 完全なプログラムリスト
- 著作権情報
全般的な背景情報 2
平行移動
オブジェクトの平行移動とは、3D空間内のある位置から3D空間内の別の位置へオブジェクトを移動することです(その方法については、後述します)。オブジェクトの平行移動は、オブジェクトを定義するすべての点を平行移動することによって行われます。点を平行移動するには、点を定義するx、y、zの各座標値にオフセットを追加します。
たとえば、元の点の座標がx1、y1、z1で、オフセットがtx、ty、tzの場合、点の新しい位置の座標は、次で表されます。
x2 = x1 + tx y2 = y1 + ty z2 = z1 + tz
拡大縮小
オブジェクトの拡大縮小とは、オブジェクトを表すすべての点の位置を、非常に限定的な方法で変更することです。必ずというわけではありませんが、拡大縮小変換は一般にオブジェクトのサイズを変更するものであり、オブジェクトが大きくなったり、小さくなったりします(1または-1という係数による拡大縮小では、サイズが変わらないことに注意してください)。拡大縮小変換を行うには、オブジェクトを定義するすべての点のx、y、zの各座標値に、同じスケール係数または異なるスケール係数を乗算します。
座標値を乗算するのに使用するスケール係数が同一の場合、オブジェクトは単純に大きくなるか、または小さくなります(スケール係数が負の場合は、軸に対して反転します)。各軸に適用されるスケール係数が異なる場合、オブジェクトはいずれかの次元で押しつぶされたようになったり、場合によっては軸に対して反転する場合もありますが、多くの場合、同じオブジェクトを表現したものであると認識できます。
拡大縮小変換で使用されるスケール係数は、原点が基準です。たとえば、スケール係数が2.0の場合、新しい点の座標値は、元の点から原点までの距離の2倍になります。
元の点の座標がx1、y1、z1で、スケール係数がsx、sy、szの場合、点の新しい位置の座標は、次で表されます。
x2 = x1 * sx y2 = y1 * sy z2 = z1 * sx
回転
回転は、平行移動や拡大縮小ほど直感的ではなく、理解するにはある程度の三角法の知識が必要です。しかし、その仕組みを理解していなくても、決められた手順で回転変換を作成し、使用することは可能です。
次の方程式は、2D空間の原点を中心とする点の回転を表しており、「Planar transformations」(稿末の「参考資料」を参照)に記載されています。vは、回転の角度を表します。
x2 = x1 * cos(v) - y1 * sin(v) y2 = x1 * sin(v) + y1 * cos(v)
この方程式は、「Spatial transformations」(稿末の「参考資料」を参照)で、3Dに拡張されます。3Dでは、物事が非常に複雑になります。2Dの場合は、xy平面でのみ回転が可能です。つまり、原点を中心に回転できます。しかし、3Dにおける回転は、xy、yz、zxのいずれかの平面に限定されません。いずれかの軸、または3つのすべての軸を中心に回転させることすら可能です。そのため、3組の回転方程式が存在します。この3組の方程式については、変換の行列方程式と合わせて後で示します。
正の回転角
この式を導いた執筆者によると、軸を中心に反時計回りを正の回転角としています。これは、軸の正方向の端に位置して原点を見た場合、その軸を中心とする正の回転角が反時計回りであることを意味します。
行列
以前のレッスン「Understanding Transforms in Java 2D」では(稿末の「参考資料」を参照)、行列を使用してJava 2Dの変換を実行する方法について説明しました。「同次座標」についても説明しました。
記事「Planar transformations」(稿末の「参考資料」を参照)には、図5に示す行列方程式が記載されています。この行列方程式を解くことで、2Dの平行移動、拡大縮小、回転の各変換を実現できます。

この記事は参考になりましたか?
- japan.internet.com翻訳記事連載記事一覧
- この記事の著者
-
japan.internet.com(ジャパンインターネットコム)
japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Richard Baldwin(Richard Baldwin)
大学教授(テキサス州オースティン、Austin Community College)、およびプライベートコンサルタント。Java、C#、およびXMLの組み合わせに特に注目している。JavaアプリケーションとC#アプリケーションの、プラットフォームや言語に依存しない多くの利点に加えて、Java、C#、およびXMLの組み合わせは、Web上で構造化情報を提供するうえでの主要な原動力になると信じている。これまで多くのコンサルティ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
