「JavaFXの座標系と座標変換」の版間の差分

提供: tknotebook
移動: 案内検索
(ローカル座標)
(JavaFXの座標系)
20行: 20行:
  
 
Scene(ウィンドウ) の左上が座標系の原点で、そこから右方向にX軸が、下方向にY軸が伸びます。
 
Scene(ウィンドウ) の左上が座標系の原点で、そこから右方向にX軸が、下方向にY軸が伸びます。
 +
画面に潜る方向がZ軸の正方向になります。
 
軸目盛の単位はピクセルです。
 
軸目盛の単位はピクセルです。
  
 
3Dカメラを用いない Scene では、Scene とワールド座標の関係は変えられません。固定です。
 
3Dカメラを用いない Scene では、Scene とワールド座標の関係は変えられません。固定です。
 +
3Dカメラに関しては「変換」の説明が終わってから説明します。
  
 
==ローカル座標==
 
==ローカル座標==

2016年3月26日 (土) 00:50時点における版

メインページ>コンピュータの部屋#JavaFX>JavaFX Tips


JavaFXに関してたくさんの解説がネットや書籍に載っていますが、意外なことに JavaFXの座標系に関する解説が少ないようです。

この記事では JavaFx の座標系と、座標変換に関して解説します。

JavaFXの座標系

まず、JavaFxで使用されているワールド座標を示します。 ワールド座標とは、JavaFXのコントロールや図形が置かれる 座標空間です。

JavaFX ワールド座標.png
図1 JavaFXのワールド座標

図はシーンで3Dカメラを用いない場合の Scene で使われるワールド座標系です。 z軸も書いてあるのは、2Dグラフィックでも画面の深さ方向の座標(Z軸)が使われることがあるからです。

Scene(ウィンドウ) の左上が座標系の原点で、そこから右方向にX軸が、下方向にY軸が伸びます。 画面に潜る方向がZ軸の正方向になります。 軸目盛の単位はピクセルです。

3Dカメラを用いない Scene では、Scene とワールド座標の関係は変えられません。固定です。 3Dカメラに関しては「変換」の説明が終わってから説明します。

ローカル座標

Scene のルートコンテナに登録された個々のノード(コントロールやコンテナや図形)は、 自身のローカル座標を持ちます。

例えば、2次元図形の Rectangle は矩形の左上の座標をプロパティ x, y に保持しますが これはローカル座標です。

3次元図形の Box(箱型) や Sphere(球) はその中心が常に座標 (0, 0) になりますが、 (0、0) はローカル座標です。つまり3次元図形は自身のローカル座標の中を動くことができません。

ローカル座標は親ノードのローカル座標の中に置かれます。初期状態では親ノードのローカル座標と ノードのローカル座標は一致しています。つまり、ノードにTransform(変換)が無く、 layoutX, layoutYプロパティもゼロのままならば、子ノードと親ノードのローカル座標系は一致します。

つまりノード自身、およびSceneに至るまでの全ての直系の親ノードに Transform(変換)が無く、 layoutX, layoutYプロパティもゼロのままならば、ローカル座標はグローバル座標と一致します。

JavaFxではローカル座標系は図形に固定された座標系ととらえ、 ワールド座標系での図形の位置は、ワールド座標に対するローカル座標を変更する ことで行います。

つまり JavaFX のノード Transform(変換)+layoutX+LayoutY とはノードのグローバル座標に対する ローカル座標を決定することなのです。

鋭意作成中