3Dタートルグラフィックス関数解説

このドキュメントは Obsolete です。 最新版を見てください。

あらまし

Java言語からタートルグラフィックスで 3Dオブジェクトを作成するための、 特定用途専用グラフィクスライブラリです。独自形式で出力し、 Papervision3D で解釈・表示します。 Processing という言語の 3D部分と、 できるだけ同じ名前で描画関数を用意しています。 しかし、いくつかの関数は簡略化されていますし、当然ながら、 アニメーションやインタラクション関係の関数はありません。

座標系

x軸は右向き、y軸は上向き、z軸は奥向きにのびています。(つまり、左手系です。)
ToDo: Processingと同様に y軸下向きにする。(カメラと文字列の向きを変える)

ToDo: 長さの単位、初期サイズ、カメラの初期位置、ピクセル等倍

関数一覧

初期設定・その他

static void start();
描画の開始のときに呼び出します。
static void finish();
描画の終了のときに呼び出します。

色・属性設定

ブックカバー作成用関数と共通なので、 そちらを見て下さい。

色関連のユーティリティ

ブックカバー作成用関数と共通なので、 そちらを見て下さい。

乱数その他のユーティリティ

ブックカバー作成用関数と共通なので、 そちらを見て下さい。

タートルグラフィックス関数

“カメ”は最初ページの真ん中 (0, 0, 0)に ペンを下げた状態で x軸の正の向き(右)を向いて、z軸の負の向き(手前)を上にしています。

static void turn(double angle);
右方向に angle度回転します。 (左方向に回転するときは負の数を渡します。)
static void bank(double angle);
進行方向を軸として反時計回りに angle度傾きます。 (時計回りに傾くときは負の数を渡します。)
static void pitch(double angle);
下向きにangle度折れます。 (上方向に折れるときは負の数を渡します。)
static void forward(double len);
現在、向いている向きに lenだけ移動します。
static void backward(double len);
現在の向きと逆向きに線を描画せずに lenだけ移動します。
static void penUp();
ペンを上げます。(この状態で移動しても線を描きません。)
static void penDown();
ペンを下げます。(この状態で移動すると線を描きます。)
static void go(double x, double y, double z);
現在の位置に関係なく、(x, y)に移動します。この間、ペンの状態に関係なく、 線は描きません。
static void ribbonMode()
“リボン”モードでカメを動かします。 つまり、描画する帯の真ん中に一匹のカメがいて、 カメを動かすと幅を持った線を描画するイメージです。
static void ribbonWidth(double w);
“リボン”モードでリボンの幅を変更します。
static void lineMode()
ribbonMode(), ribbonWidth(0)を続けて呼び出すのと同等です。 (デフォルトのモードです。)
static void triangleMode()
“三角”モードでカメを動かします。つまり、 帯の右端と左端に一匹ずつカメがいて、別々にカメを動かしながら三角形を描画していくイメージです。
static void rightTurtle()
“三角”モードで以降の命令が右のカメに対してのものであることを示します。
static void leftTurtle()
“三角”モードで以降の命令が左のカメに対してのものであることを示します。
static void yourTurn()
“三角”モードで以降の命令がもう一方のカメに対してのものであることを示します。

座標変換関係

static void resetMatrix();
座標系を最初のものに戻します。
static void scale(double x, double y, double z);
以降の描画に使用する座標系を縦方向に x, 横方向に y, 奥行き方向に zだけ拡大します。
static void translate(double x, double y, double z);
以降の描画に使用する座標系を (x, y, z)だけ平行移動します。
static void rotate(double angle);
rotateZと同じです。
static void rotateX(double angle);
以降の描画に使用する座標系を原点を中心に x軸を回転軸として、theta(単位ラジアン)回転します。
static void rotateY(double angle);
以降の描画に使用する座標系を原点を中心に y軸を回転軸として、theta(単位ラジアン)回転します。
static void rotateZ(double angle);
以降の描画に使用する座標系を原点を中心に z軸を回転軸として、theta(単位ラジアン)回転します。

画像、他

static void image(String url, double x, double y, double z, double w, double h);
インターネット上の画像を 左上の頂点の座標が (x, y, z)、幅 w, 高さ h の長方形内に描画します。
static void object(String url, double x, double y, double z, double w, double h, double d);
インターネット上のオブジェクトを 中心の頂点の座標が (x, y, z)、幅 w, 高さ h, 奥行き d の直方体内に描画します。
static void text(String data, double x, double y, double z);
文字列 strを座標 (x, y, z)に表示します。

折れ線・曲線

座標が 3次元になっただけで、ブックカバー作成用関数と共通です。

static void curve(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3, double x4, double y4, double z4);
(未実装)
static void bezier(double x1, double y1, double z1, double cx1, double cy1, double cz1, double cx2, double cy2, double cz2, double x2, double y2, double z2);
(未実装)
static void beginShape();
図形の定義を開始します。
static void endShape();
beginShapeで定義を開始した図形の定義を終了します。 ToDo: closeが 0以外のときは、図形を閉じ多角形を描きます。 closeが 0のときは、閉じずに折れ線になります。
static void vertex(double x, double y, double z);
beginShapeで定義を開始した図形に頂点 (x, y)を追加します。
static void qbezierVertex(double cx, double cy, double cz, double x, double y, double z);
beginShapeで定義を開始した図形に2次ベジエ曲線を追加します。
static void bezierVertex(double cx1, double cy1, double cz1, double cx2, double cy2, double cz2, double x, double y, double z);
(未実装)
static void curveVertex(double x, double y, double z);
(未実装)

基本図形

ブックカバー作成用関数と共通です。 (座標変換がなければ) z=0 の平面に描画します。

static void rect(double x, double y, double w, double h);
左上の頂点の座標が (x, y)、幅 w、 高さ h の長方形を描きます。
static void roundRect(double x, double y, double w, double h, double rw, double rh);
左上の頂点の座標が (x, y)、幅 w、 高さ h の角の丸い長方形を描きます。
static void ellipse(double x, double y, double w, double h);
中心の座標が (x, y)、幅 w、 高さ h の楕円を描きます。

その他


Koji Kagawa