LablGL でオロイド
ここを見て思い出したのだが, 昔 lablGL でオロイドを描いて転がして遊んだことがあった. オロイドとは,「2つの直角円錐を底面で貼り合わせ,軸を通る断面(正方形になっている)を 90 度ずらしてできる立体」で 一度転がすだけで全ての面を接地させられるなどといった不思議な性質を持っている. せっかくなので当時のコードを掘り出してきて動かしてみた.
例によって,Objective Label(OLabl)で書かれた 8 年ほど前のコードなのでそのままでは動かない. 特に,LablGL ではその名の通りラベル付き引数がふんだんに使用されているため, 現在の Objective Caml で動かすには大幅な変更が必要となる. また,当時とは LablGL の実装もだいぶ異なるため,その点でも変更が必要だ. 主な変更としては,
OLabl | OCaml | |
---|---|---|
ラベル付き引数 | let f pos:(x,y) = ... |
let f ~pos:(x,y) = ... |
省略可能引数 | let f ?:pos [< (0,0) >] = ... |
let f ?(pos=(0,0)) = ... |
とりあえず,動くものができたので画像だけ載せておく. なお,冒頭の記事では Glut を使用していたが,ここでは LablTk とTogl を使用している.