blog.鶯梭庵

二〇一七年 葉月 廿日 日曜日

ORI-REVO で回転楕円体を折る・その1 [/origami]

来月のワークショップのための準備をしている。三谷さんの作品を使おうと思って、許可をいただいた。当初は三谷さんの『立体折り紙アート』に掲載されている作品をそのまま使うつもりだったが、それでは能がないので、ORI-REVO を使って何か作ろうと思った。曲線折りを使いたいが、あまり難しいもので参加者が折れないと困るので、回転楕円体が適当ではないかと考えた。

ORI-REVO で楕円の半分を描いてやれば折り方を計算してくれるわけだが、手で入力するのは難しい。ORI-REVO では点列データを読み込むことができるので、点列データを生成するスクリプトを書くことにした。

楕円上の点の座標は、θを媒介変数として、

x = a cosθ

y = b cosθ

と書ける(a と b は 0 より大きい定数)。ORI-REVO に入力する場合、θの範囲は 90°から -90°まで、a と b のうち大きい方の値を 200 とする。a/b の値を e として、変数として与えられるようにしたい。e が 1 なら球、1 より小さいと縦長、1 より大きいと横長になる。

以上でスクプリトが書ける。私はここのところ node.js をいじっているので、node のスクリプトを書いてみた(エラー処理は省略)。


var e = process.argv[2] || 1;

var x, y, deg, rad;

var coods = '';

const pi = Math.PI;

const yoko = e > 1;

for ( deg = 90; deg >= -90; deg -= 6 ) {

rad = deg * pi / 180;

x = Math.cos(rad) * 200;

y = Math.sin(rad) * 200;

yoko ? y /= e : x *= e;

coods += (x + ' ' + y + '\n');

}

require('fs').writeFileSync('daen.polyline', coods);


これを daen.js という名前で保存しておいて、コマンドラインから


node daen.js 0.75


とかすると、daen.polyline ファイルが生成される。それを ORI-REVO で開けば、以下のようになる。


楕円のデータを読み込んだ ORI-REVO のスクリーンショット


その2へ続く

さんのコメント:

・HTMLタグは使えません。

・電子メールアドレスを含めないでください。

・コメントには全角文字を含めて下さい。

・長さの上限はおよそ800字です。

[この記事だけを読む。] [このカテゴリをまとめて読む。] [最新の記事を読む。]

羽鳥 公士郎