Transcript 卒論キックオフ
卒論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.