卒論kickoff 2003/07/16 1G00P139-1 若槻聡一郎 発表の流れ ・描画班の目的 ・キックオフ前にやったこと ・Juno-2について(説明、デモ) ・今後やってみたいこと 描画班の目的 快適な描画環境を実現したい 制約充足処理のアプリケーションを製作し たい →このような目的を同時に満たす描画ツー ルとしてudrawを製作した キックオフ前にやったこと Java、XMLを用いた簡単なGUIの作成 Juno-2を使ってみる Juno-2 先に挙げたように、制約充足処理のアプリ ケーションを用いた快適な描画環境を実現 したい このように、ユーザーインターフェース分野 で制約処理を使った描画ツールとして TRIP、chorus、Pegasus、Juno-2などがあ る →その中で今回はJuno-2を紹介する Juno-2の外観 Juno-2の特徴 double-view editingを使っている 非線形制約を扱える ユーザーが制約を定義できる Juno-2 Languageの特徴 Juno-2言語はブロック構造を用いた言語 で、Algolに似た構文や制御構造を持つ型 の無い言語(untyped language)である データ構造はLispのそれとよく似ている(配 列やポインタはなく、スカラー値と文字列と 順序対(ordered pair)のみが与えられてい る) Juno-2 Languageの制約 Juno-2言語では制約を次のように表現す る Juno-2言語では制約を述語(predicate)と して扱う Juno-2言語の処理は述語変換(predicate transformer)によって定義する Juno-2のシステム構成 ユーザーが定義した制約 ライブラリ(Juno-2 Languageで記述) Juno-2(C言語で記述) 基本制約 Juno-2の制約ソルバーは次の6つの基本制約 (primitive constraints)からなる ・x=y ・x=y+z ・x=y*z ・ x = tan(y) ・ x = exp(y) ・ x = (y, z) 述語変換の例 PRED Hor(a, b) IS (E ax, bx, y :: a = (ax, y) AND b = (bx, y)) END; ※Hor(a, b)という制約は実際にはa = (ax, y) AND b = (bx, y) という基本制約に変 換されて使われる PROC(procedure) 処理のみを行う 構文 PROC P(<args>) IS <command> END; PROCの例 PROC DrawLine(a, b) IS PS.MoveTo(a); PS.LineTo(b); PS.Stroke() END; PRED(predicate) 制約をかける 構文 PRED Q(<args>) IS <constraint> END; PREDの例 PRED Colinear(a, b, c) IS (a, b) PARA (a, c) END; FUNC(function) ある制約を満たすような値(の組)を返す 構文 FUNC <res> = F(<args>) IS <constraint> END; FUNCの例 FUNC midpoint = Middle(a, b) IS midpoint = (0.5, 0) REL (a, b) END; 今後やってみたいこと Hybrid CCを使ってアニメーションを簡単に 作りたい 物理系のシミュレータ interactiveなアニメーション 参考文献 [1] The Juno-2 Constraint-Based Drawing Editor. Allan Heyton and Greg Nelson, December, 1994. [2] Juno-2 Language Definition. Allan Heyton and Greg Nelson, June 30, 1997.
© Copyright 2024 ExpyDoc