このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
rotate3d
R2022aマウスを使用した 3 次元の視点の回転
構文
rotate3d on
rotate3d off
rotate3d
rotate3d(figure_handle,...)
rotate3d(axes_handle,...)
h = rotate3d(figure_handle)
説明
rotate3d on は、回転モードをオンにし、現在の Figure 内のすべての座標軸で回転を有効にします。
rotate3d off は、回転モードをオフにし、現在の Figure での座標軸の対話型の回転を無効にします。R2018b 以降、回転モードに関係なく一部の回転操作が既定で有効になっています。これらの既定の操作を無効にするには、関数 disableDefaultInteractivity を使用します。
rotate3d は、現在の Figure での座標軸の対話型の回転を切り替えます。
rotate3d(figure_handle,...) は、現在の Figure ではなく、指定した Figure の回転を有効にします。
rotate3d(axes_handle,...) は、指定された座標軸でのみ回転モードをオンにします。
h = rotate3d(figure_handle) は、モードの動作をカスタマイズするために、Figure の figure_handle の rotate3d モード オブジェクトを返します。
回転モード オブジェクトの使用
回転モード オブジェクトには次のプロパティがあります。
FigureHandle <handle>— 関連する Figure ハンドル。これは読み取り専用のプロパティは設定できません。Enable'on'|'off'— この Figure のモードが Figure 上で現在有効かどうかを指定します。RotateStyle'orbit'|'box'— 回転のメソッドを設定します。'orbit'は Axes 全体を回転し、'box'は Axes のプロット ボックスの外枠を回転します。UseLegacyExplorationModes'off'(既定の設定) | on/off logical 値 – レガシ モード。'on'または'off'、もしくは数値または logical1(true) または0(false) として指定します。'on'の値はtrueと等価であり、'off'はfalseと等価です。したがって、このプロパティの値を logical 値として使用できます。値はmatlab.lang.OnOffSwitchState型の on/off logical 値として格納されます。このプロパティを
'on'に設定すると、従来の Figure のモードの動作と一致するように UI figure の操作モードの動作が変更されます。詳細については、enableLegacyExplorationModesを参照してください。このプロパティを'on'に設定した後に'off'に戻すことはできません。このプロパティは、関数uifigureを使用して、または MATLAB® Online™ で作成された Figure の rotate3d オブジェクトにのみ適用されます。
Rotate3D モード コールバック
rotate3d モード操作のために次のコールバックをプログラムできます。
ButtonDownFilter <function_handle>—ButtonDownイベントをインターセプトする関数プログラマの定義により、アプリケーションは返すコールバックによって、回転操作を取り消せます。入力の関数ハンドルは、2 つの暗黙の引数で関数を参照する必要があります (ハンドルのコールバックと同様)。
function [res] = myfunction(obj,event_obj) % obj handle to the object that has been clicked on % event_obj handle to event data object (empty in this release) % res [output] logical flag to determine whether the rotate % operation should take place or the 'ButtonDownFcn' % property of the object should take precedence
ActionPreCallback <function_handle>— 回転前に実行される関数このコールバックを回転操作を開始するときに受け取るよう設定します。入力の関数ハンドルは、グラフィックス オブジェクトのコールバックと同様に、2 つの暗黙的な引数をもつ関数を参照する必要があります。
function myfunction(obj,event_obj) % obj handle to the figure that has been clicked on % event_obj object containing struct of event data
このイベント データには、以下のフィールドがあります。
AxesAxes のハンドルは、移動されます。
ActionPostCallback <function_handle>— 回転後に実行される関数このコールバックを回転操作を終了したときに受け取るよう設定します。入力の関数ハンドルは、グラフィックス オブジェクトのコールバックと同様に、2 つの暗黙的な引数をもつ関数を参照する必要があります。
function myfunction(obj,event_obj) % obj handle to the figure that has been clicked on % event_obj object containing struct of event data (same as the % event data of the 'ActionPreCallback' callback)
Rotate3D モード ユーティリティ関数
移動モードにおける次の関数は、そのプロパティのいくつかをクエリして設定します。
flags = isAllowAxesRotate(h,axes)— Axes を回転する権限をクエリする関数関数
isAllowAxesRotateの入力として、rotate3d オブジェクトhと Axes ハンドルのベクトルaxesを呼び出すと、Axes ハンドル ベクトルと同じ次元の logical 配列が返されます。この配列は、その Axes オブジェクトで回転操作が利用可能であるかを示します。setAllowAxesRotate(h,axes,flag)— Axes の移動権限を設定する関数関数
setAllowAxesRotateの入力として、rotate3d オブジェクトh, Axes ハンドル ベクトルaxes, 論理スカラーflagを呼び出すと、この Axes オブジェクト上で回転操作を有効/無効のいずれかに設定します。
例
ヒント
回転モードが有効な場合、rotate3d はマウスが操作されている間、Axes と それが含まれるオブジェクトの回転を継続します。現在の axes の方位角と高度を示す数値情報は、回転中、Figure の左下隅に現れます。マウス ボタンを離すと、動画ボックスと数値情報は消去されます。これは、関数 camorbit とは異なります。rotate3d ツールは Axes の View プロパティを修正しますが、関数 camorbit は縦横比を固定し、Axes の CameraTarget、CameraPosition、および CameraUpVector プロパティを修正します。詳細については、Axes のプロパティ を参照してください。
Figure の [ツール] メニューまたは Figure のツール バーから 3 次元回転を有効にできます。
rotate3d モード オブジェクトを作成したなら、他の Axes 動作のカスタマイズに使用することもできます。また、移動モード オブジェクトのコールバック関数も順次変更できます。
メモ
対話型モードでは Figure コールバックを変更しないでください。モードがアクティブな場合 (移動中、ズーム中の場合など)、Figure のコールバックのいずれかを変更しようとすると警告が表示され、操作は失敗します。この規則の 1 つの例外は、Figure の WindowButtonMotionFcn コールバックであり、これはモード内から変更できます。したがって、Figure のコールバックを更新する UI を作成する場合は、これを行う前に、どの対話モードがアクティブになっているか、何らかの方法でその UI で追跡する必要があります。
1 つのモード オブジェクトを通じて別の 3 次元回転動作を別の subplot Axes に割り当て、関数 linkaxes を使用してそれらをリンクした場合、リンクした Axes 上でのマウス操作による処理は、他の Axes に設定した動作に影響を受けません。
代替方法
プロットの 3 次元回転モードを有効/無効にするには、ツール バーの 3 次元回転ツールを使用するか、Figure の [ツール] メニューから [3 次元回転] を選択します。
バージョン履歴
R2006a より前に導入