可視化手法 | ![]() ![]() |
対象物に対するカメラの移動
カメラは、軸で定義された3次元空間のどの位置にも移動することができます。カメラの方向は、その位置に関係なくターゲットに向けられたままです。カメラが移動すると、MATLABはカメラの表示角度を変えて、対象物を包む長方形全体を表示するようにします。
対象物内部へのカメラの移動
対象物の内部を通してカメラを移動することによって、接近効果を生み出すことができます。そのためには、CameraPosition
プロパティを連続的に変更しながら、それをターゲット方向に移動します。カメラは空間を移動するので、カメラのターゲットを通過すると方向を変えます。CameraViewAngleMode
を manual
に設定することにより、カメラを移動するたびに、MATLABによる対象物の自動サイズ調整を変更します。
CameraPosition
および CameraTarget
を更新すると、移動する方向に変化を続け、対象物を通り過ぎても、そのまま続きます。
Projection
を perspective
に設定すると、透視の歪み量は、カメラがターゲットに近付くに連れて大きくなり、遠ざかるに連れて小さくなります。
例題 - ターゲットへの接近と遠ざかり
カメラを表示軸に沿って移動するためには、CameraPosition
プロパティに対して新しい座標を計算する必要があります。これは、カメラの位置とカメラのターゲットとの間の距離の一部を(ターゲットに接近するために)減算するか(ターゲットから遠ざかるために)加算することによって実現します。
関数 movecamera
は、引数distが正ならば対象物に接近し、distが負ならば遠ざかるような、新しい CameraPosition
を計算します。
function movecamera(dist) %dist in the range [-1 1] set(gca,'CameraViewAngleMode','manual') newcp = cpos - dist * (cpos - ctarg); set(gca,'CameraPosition',newcp) function out = cpos out = get(gca,'CameraPosition'); function out = ctarg out = get(gca,'CameraTarget');
CameraViewAngleMode
を manual
に設定すると、MATLABのstretch-to-fill挙動を変更し、そのため縦横比に突然の変化が生じる場合があります。stretch-to-fillの詳細については、縦横比 を参照してください。
![]() | デフォルトの視点の設定 | 対象物のサイズの変更 | ![]() |