データ構造体 PLOT および PLOT3D
|
説明
|
|
|
重要: このページでは、2-D や 3-D のプロットで Maple が使用する内部的な構造体について説明します。一般のプロットを生成する場合は、plot コマンドや plot3d コマンド、または plots パッケージ内のコマンドを使用することをお勧めします。
|
•
|
Maple のプロット関数には plot、plot3d などの種類があり、これによって生成される PLOT や PLOT3D といったデータ構造体には、表示する画像について記述されています。plots[display] コマンドは _PLOTARRAY 構造も生成しますが、これによってプロットの配列が表されます。このようなデータ構造体は Maple prettyprinter が認識し、これで他の Maple オブジェクトと同様の形式でプロットが出力されます。この構造体は Maple の式のため、他のすべての式と同様に操作、保存、出力が可能です。このセクションの残りのページでは、データ構造の形式と内容について説明します。データ構造体は Maple lprint コマンドで表示確認できます。
|
•
|
各グラフィック画像は、PLOT(...)、PLOT3D(...) または _PLOTARRAY(...) 形式の関数呼び出しで表示されます。これらの関数呼び出し内のデータ値でこれから線描する オブジェクト (点や線など) およびこのオブジェクトの線描方法を制御する オプション (軸のスタイルや色など) を指定します。_PLOTARRAY 構造体は、最初の引数として、PLOT または PLOT3D 構造体が含まれるリストで成り立つリストを持ちます。
|
|
たとえば、PLOT(CURVES([[0, 0], [0, 1], [0.5, 0.5], [0, 0]]), COLOR(RGB, 0, 0, 1)) とすると、2-D の青い三角形を表します。この例のように、オブジェクトとオプションはすべて名前の各文字を大文字で指定する関数呼び出しで表現します。
|
•
|
Maple 10 またはそれ以降のデータ構造体名には、名前の先頭に下線が付いています。
|
•
|
TRANSPARENCY, _GLOSSINESS および _AXIS[n] の各構造体は、インターフェイスによっては利用可能でない場合があります。
|
•
|
同じオプション構造体が異なる値によって 2 回以上指定されると、通常は最後に指定された値が使用されます。
|
|
2-D プロット
|
|
|
2-D プロットには、曲線、点、多角形、テキストの 4 種類のオブジェクトタイプがあります。以下の説明で使用する x と y は、浮動小数点値を表しています。
|
•
|
CURVES([[x11, y11], ...[x1n, y1n]], [[x21, y21], ...[x2n, y2n]], ...[[xm1, ym1], ...[xmn, ymn]])
|
|
CURVES 構造体は、一連の曲線を定義し、各曲線は最大 4 つの複数の線セグメントを構成します (例とは異なり、各曲線のセグメント数を統一する必要はありません)。
|
•
|
POINTS([x1, y1], [x2, y2],...[xn, yn])
|
|
POINTS 構造体は、2 つか 3 つの空間 (z 値も指定される場合) に配置する点のセットを定義します。空間ごとに 1 つずつ記号が線描されます。この記号は SYMBOL オプション値に基づいて選択されます (オプションの項で説明します)。
|
•
|
POLYGONS([[x11, y11], ...[xln, yln]], [[x21, y21], ...[x2n, y2n]], ...[[xm1, ym1], ...[xmn, ymn]])
|
|
POLYGONS 構造体は複数の多角形を定義します。それぞれの多角形は凸面形か、3-D の場合は平面にする必要があります。
|
•
|
TEXT([x, y], string, horizontal, vertical)
|
|
horizontal 値には、キーワード ALIGNLEFT または ALIGNRIGHT のいずれかを指定することができ、いずれの場合も [x,y] の左か右の位置に文字列が配置されます。同様に、vertical にはキーワード ALIGNABOVE または ALIGNBELOW のいずれかを指定できます。horizontal と vertical のいずれかまたは両方を省略すると、文字列は該当する次元の中央に位置合わせされます。
|
|
|
2-D プロットオプション
|
|
|
2-D プロットのレンダリングを制御するオプションは多数あります。以下に例を示します。
|
|
AXESLABELS 構造体には x 軸と y 軸のラベル付けに使用する文字列を 2 種類含める必要があります。また、この構造体にはラベルのレンダリングで使用するフォントを定義する FONT オブジェクトを含めることもできます。
|
|
軸の数、配置、目盛りのラベル付けを指定することができます。ここには値を 2 種類 (x 軸用とy軸用) 含める必要があります。値には、整数、数のリスト、方程式のリスト、または特殊値の DEFAULT が使用できます。値が整数の場合、ドライバは目盛りの位置を少なくとも指定されたラベルと同数だけ選択します。値が数のリストの場合、目盛りとラベルはこれらの値とまったく同じに指定されます。方程式のリストが指定された場合、各方程式の左辺は数値、右辺は文字列にする必要があります。指定された数値ごとに目盛りが付けられ、ラベルは対応した文字列で指定されます。また、AXESTICKS には目盛りラベルのレンダリングで使用するフォントを定義する FONT オブジェクトを含めることもできます。
|
|
プロットの軸を基準として線描される線の種類を制御します。BOX、FRAME、 NORMAL、NONE、DEFAULT という 5 種類の値を指定することができます。 BOX 軸はプロットを囲む長方形のボックスと、左側と下側に目盛りとラベルが付いた線で構成されます。FRAME 軸のスタイルの場合、該当する目盛りとラベルの付いたボックス型の軸の左側と下側にのみ線描されます。NORMAL スタイルでは軸上のゼロの位置で交差するような 2 本の軸線が線描されます。軸の範囲に 0 がない場合、軸同士はその範囲の下限で交差します。NONE スタイルを選択すると結果のプロットで線もラベルも表示されず、DEFAULT スタイルはデバイスに応じた軸スタイルが選択されます。
|
|
単独の軸に関する情報を指定します。整数 n (1 は x 軸、2 は y 軸を表す) で方向を指定します。_AXIS[n] 構造体には以下のいずれかのサブ構造体を含めることができます。
|
|
プロットの最上部に配置するキャプションを指定します。c には任意の式、文字列、または _TYPESET 構造体を指定できます。CAPTION オブジェクトには、キャプションのレンダリングに使用するフォントを定義する FONT オブジェクトも含めることができます。
|
|
軸の色を指定します。次に、一般的な COLOR 構造体について説明します。
|
|
-- _GRIDLINES(t) or _GRIDLINES(t, s)
|
|
この構造体は _GRIDLINES(t) または _GRIDLINES(t, s) の形式を取ることができます。ここでの t は前述した AXESTICKS 構造体で許容されるいずれかの値で、s は、以下のサブ構造体の 1 つ以上の列です。
|
COLOR(n)
|
LINESTYLE(l)
|
THICKNESS(n)
|
_MAJORLINES(n)
|
_SUBTICKS(t)
|
|
|
|
COLOR、LINESTYLE、および THICKNESS の各構造体は、LINESTYLE がグリッド線ではなく目盛りを表示するように指定するための追加の引数 _TICKS を使用することを除くと、同じパラメータを持つ一般的なプロット構造体と同じ形式をとります。_MAJORLINES(n) 構造体を使用すると、正の整数を表す n 番目のグリッド線を主要線として表示する指定になります。_SUBTICKS(t) 構造体は t が true に設定されている場合のみサブ目盛りを表示します。
|
|
軸の位置を指定します。この n は -1、0、または 1 で、それぞれ「低」、「原点」、「高」を表します。n が -1 または 1 のとき、軸は表示範囲の下方または上方に配置されます。n が 0 の場合、軸は原点か、原点が表示範囲にない場合は値にもっとも近い場所に表示されます。
|
|
軸のスケーリング方式を指定します。ここで n が 0 の場合は線形軸、1 の場合は対数軸を表します。
|
|
COLOR 構造体の指定には、RGB、HSV、HUE の 3 通りがあります。RGB 色指定では、各色に対する浮動小数点値を指定する必要があります。3 つの値はいずれも最終色に含まれる赤、緑、青の各色の光を 0 から 1 までの数値で指定する必要があります。たとえば、COLOR(RGB, 1.0, 0.0, 0.0) は赤、COLOR(RGB, 1.0, 1.0, 0.0) は黄色になります。HSV 色指定でも各色の数値を指定する必要があります。最初の値の小数部分は色を表し、残りの 2 種類の値で色の純度 (彩度) と明度を表します。2 番目と 3 番目の値は 0 から 1 までの数値にする必要があります。 HUE 色指定では浮動小数点値を 1 つだけ指定する必要があり、この指定は値の小数部分を基準に色のスペクトル間を循環します。たとえば、COLOR(HUE, 0.9) は紫、COLOR(HUE, 0.0) は赤をそれぞれ表します。COLOR(HUE, x) は COLOR(HSV, x, 0.9, 1.0) と等価です。
|
|
TEXT オブジェクトのレンダリングで使用するフォントを指定します。フォントはファミリー、タイプフェイス、級数で指定します。有効なファミリーとタイプフェイスの組み合わせは以下のとおりです (デフォルトのタイプフェイスは省略可能です)。
|
SYMBOL
|
|
TIMES
|
ROMAN
|
|
BOLD
|
|
ITALIC
|
|
BOLDITALIC
|
COURIER
|
DEFAULT
|
|
BOLD
|
|
OBLIQUE
|
|
BOLDOBLIQUE
|
HELVETICA
|
DEFAULT
|
|
BOLD
|
|
OBLIQUE
|
|
BOLDOBLIQUE
|
|
|
|
2-D プロットの曲線を識別する凡例を表示します。判例の l には任意の式、文字列、または _TYPESET 構造体を指定できます。
|
|
凡例のスタイルを指定します。ls には構造体 FONT または LOCATION の列を指定できます。
|
|
セグメントを線描するときに使用するダッシュのパターンを指定します。1 つの画像内にある複数の曲線を区別するためによく使用されます (後述のローカルオプションの説明を参照してください)。線のスタイルの値には、1 から 7 までの整数を指定しますが、対応パターンは次のようになります。1: 実線、2: 破線、3: 点線、4: 一点鎖線、5: 長鎖線、6: 空白点線、7: 空白鎖線。
|
|
CONSTRAINED または UNCONSTRAINED のいずれかの値をとります。スケーリングが制限される場合、画像に適用するすべての変形は x と y の各次元で同率にしなければなりません。DEFAULT は、通常は制限を適用しないデバイスのスケーリング方法を選択する場合に使用できます。
|
|
この STYLE オプション設定によって TEXT 以外のオブジェクトのプロットにおける実際のレンダリングを制御します。2-D では、POINT、LINE、PATCH、および PATCHNOGRID の 4 種類のスタイルが設定できます。デフォルトの PATCH スタイルでは、点を記号として、線をセグメントとして、さらには多角形を塗りつぶした縁付きの領域としてそれぞれレンダリングします。PATCHNOGRID スタイルの場合は多角形の縁取りを省略します。LINE スタイルでは多角形内部の塗りつぶしを省略します。POINT スタイルでは、曲線セグメントの端点を線描し、多角形の頂点を記号として線描します。スタイルは style に前述のキーワードのいずれかを指定した関数呼び出しの STYLE(style) または、PLOT 構造体を追加して指定することができます。
|
|
点の線描時に使用する記号を指定します。現在サポートされる値は、 _ASTERISK, BOX、CROSS、CIRCLE、POINT、_DIAGONALCROSS、 DIAMOND、および DEFAULT です。_SOLIDBOX、_SOLIDCIRCLE、_SOLIDDIAMOND の値は 2-D プロットでのみ使用できます。SYMBOL の第 2 引数でプロット時に使用する記号の大きさ (ポイント数) を指定できます。この値は負以外の整数にする必要があります。
|
|
グラフィックスプリミティブ (軸線以外) からの画像結果における任意の線セグメントの線描を制御します。線の太さは負以外の整数で設定する必要があります。正の値は徐々に太くなる線を指定する場合に使用し、特殊値の 0 はデバイス幅に合わせたデフォルトの太さの線を指定する場合に使用します。
|
|
プロットの最上部に配置する表題を指定し、t は任意の式、文字列、または _TYPESET 構造体です。TITLE オブジェクトには表題のレンダリングに使用するフォントを定義する FONT オブジェクトを含めることもできます。
|
|
プロットオブジェクトの透明度を制御します。透明度を TRANSPARENCY(n) と指定する場合、n は 0.0 から 1.0 までの範囲にある浮動小数点数値か、名前が DEFAULT になります。値が 0.0 だと「透明ではない」ことを意味し、1.0 は「完全に透明」の意味になります。
|
|
タイプセットおよび連結するテキストを指定します。t は任意式列か文字列です。
|
•
|
VIEW(xmin..xmax, ymin..ymax)
|
|
表示する x-y 面のサブ範囲を指定する 2 つの範囲を含める必要があります。いずれの範囲も DEFAULT に置き換えることができ、この場合は画像にすべての要素を含むように選択されます。
|
|
ローカルオプション - 上記の各オプションは、有効な場合、POINTS、 CURVES、TEXT、または POLYGONS の各オブジェクト内にも指定することができますが、その場合、そのオブジェクトのレンダリングに関するグローバルオプションは上書きされます。COLOR オプションをオブジェクトに使用すると、さらに詳しい書式設定ができます。オブジェクトに複数のサブオブジェクト (複数の点、線、多角形など) がある場合、ある一つの色の値を各オブジェクトに指定することができます。たとえば、CURVES([[0, 0], [1, 1]], [[0, 0], [0, 1]], COLOR(RGB, 1, 0, 0, 0, 1, 0)) とすると、赤と緑の 2 本の線が線描されます。
|
|
|
3-D プロット
|
|
|
上記のオブジェクトとオプションは、LEGEND と明らかな拡張がある場合 (3 種類の軸のラベルを必要とする 3 つの値を持つ頂点など) を除くと、3-D プロットでも使用できます。以下の各種オブジェクトとオプションがサポートされます。
|
|
_AXIS[n] 構造で n に 3 を指定した場合は、n が 1 または 2 の場合と同様に動作し、z 軸の情報を指定するために使用されます。ただし、3-D プロットではサブ構造の _GRIDLINES は無視されます。
|
|
GRID 構造は、平面の長方形 (位置合わせ済み) の領域上で均一な抽出を行うことで定義されたサーフェスを表します。GRID 構造体は GRID(a..b, c..d, A) の形式を取り、ここで a..b は x の範囲、c..d は y の範囲、A は 2 次元の配列でデータ型は float[8] です。m x n のグリッドの場合、要素 A[i, j] はグリッド点 (i, j) において i が 1..m、j が 1..n の各範囲を持つ関数値です。配列 A は、[[z11,...z1n], [z21,...z2n],...[zm1...zmn]] という形式で置き換えることができます。この zij はグリッド点 (i, j) における関数値です。
|
|
ISOSURFACE 構造は、3-D 空間の通常のグリッドで抽出した関数のサンプルを含み、これは関数のサーフェスで 0 に近似する 3-D サーフェスとしてレンダリングされます。ISOSURFACE 構造は ISOSURFACE(A) の形式を取り、ここで A は 4 次元の配列でデータ型は float[8] です。m x n x p のグリッドがある場合、A[i, j, k, 1..3] は、座標 (x, y, z) のグリッド点が (i, j, k) となり、A[i, j, k, 4] は、i が 1..m、j が 1..n、および k が 1..p の各範囲を持つこのグリッド点での関数値となります。 配列 A は、m リストのリストで置き換えることができます。また各サブリストは、p 個の要素を持つ n 個のリストがあり、それぞれリスト [xijk, yijk, zijk, fijk] の形式で座標 (x, y, z) を表し、グリッド点 (i, j, k) における関数値を持ちます。
|
|
MESH 構造は、値を持つグリッドによって定義されたサーフェスを表します。MESH 構造は の形式を取り、ここで A は 3 次元の配列でデータ型は float[8] です。m x n のグリッドがある場合、A[i, j, 1]、A[i, j, 2] および A[i, j, 3] の各要素は、グリッド点 (i, j) で、i が 1..m、j が 1..n の範囲の座標 x-、y-、z- を持ちます。配列 A は、[[[x11, y11, z11],...[x1n, y1n, z1n]], [[x21, y21, z21],...[x2n, y2n, z2n]],...[[xm1, ym1, zm1]...[xmn, ymn, zmn]] の形式で置き換えることができますが、この [xij, yij, zij] がグリッド点 (i, j) の場所を示します。
|
|
|
3-D プロットオプション
|
|
|
あるシーンの周囲光を指定します。0 から 1 までの 3 つの数値を含む必要があります。周囲光を構成する赤、緑、青の各コンポーネントの強度を指定します。
|
|
COLOR は、以下のような 3-D プロット用のキーワードをいくつか追加することができます。
|
|
XYZSHADING、XYSHADING、および ZSHADING は、オブジェクトの色をその座標を基準にするように指定できます。XYZSHADING を指定すると色は x、y、z の座標を基準とし、サーフェス上で変化します。XYSHADING では色は x および y 座標を基準とし、サーフェス上で変化します。ZSHADING では色は z 座標を基準とし、サーフェス上で変化します。
|
|
ZHUE および ZGREYSCALE は、ZSHADING を変形した形式です。ZHUE では、ある地点の色は対応する z 座標を基準に値 HUE と線形に関連付けられます (範囲: 0 - 1)。ZGREYSCALE では、z 座標の相対値でプロットのある地点に表示される赤、緑、青の各色が均等に影響を受け、したがってプロット全体がグレースケールでレンダリングされます。
|
|
プロットするサーフェスの光沢度を制御します。光沢度は _GLOSSINESS(g) として指定され、g は 0.0 から 1.0 までの浮動小数点か、名前 DEFAULT になります。値を 0.0 にすると光はまったく反射しません。値を 1.0 にすると最大の反射度になります。デフォルト値は 0.0 です。反射は、ある地点の光源が LIGHT 構造または LIGHTMODEL 構造で有効化された場合にのみレンダリングされます。
|
|
GRID オブジェクトまたは MESH オブジェクトは、レンダリング中に長方形に分解され、その後、さらに三角形に分割されます。サーフェス上にグリッドを重ね合わせると、長方形または三角形を表示できます。GRIDSTYLE(TRIANGULAR) とすると、三角形グリッドが表示され、GRIDSTYLE(RECTANGULAR) では、長方形グリッドを形成する対角線が省略されます。
|
•
|
LIGHT(phi, theta, r, g, b)
|
|
シーンの照明となる直接光の方向と強度を指定します。最初の 2 種類の数値は、度数で角度を示した極座標における光源に向かう方角を指定します。続く 3 種類の数値で光の強度を AMBIENTLIGHT と同様に指定します。
|
|
この指定により、複数のユーザー定義の照明方式から選択できるようになります。許容される方式は、USER、LIGHT_1、LIGHT_2、LIGHT_3 および LIGHT_4 です。USER を選択すると、オプションの LIGHT または AMBIENTLIGHT の指定の光の定義が使用されます。
|
•
|
ORIENTATION(theta, phi)
|
|
プロットの向きを定義する角度を指定します。theta(方位角) と phi (仰角) によって度数で球面座標を指定します。
|
|
表示するサーフェスの奥行きを指定します。r は 0..1 の範囲の実数です。値 1 は直交射影を表し、値 0 は広角に射影するレンダリングを表します。
|
|
3-D プロットではスタイルを指定する追加のキーワードオプションがいくつかあります。HIDDEN は、多角形の内部は線描しないが背景となるオブジェクトは表示しない指定です。CONTOUR および PATCHCONTOUR は、多角形に等高線とサーフェスを表示する指定です (パッチ表示の有無を含みます)。
|
|
|
アニメーション
|
|
|
ANIMATE 構造体には、プロットオブジェクトとオプションのリストが含まれます。リストごとにアニメーションのフレームが 1 つ定義され、フレームは連続したアニメーション形式で出力デバイスに表示されます。リストにオプションを指定すると、プロット全体に対するすべてのオプションが、フレームのレンダリング間に上書きされます。各フレームのリスト内にオプションを指定することにより、アニメーション中に光源と視点を移動することができます。
|
|
|
|