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へ続く

[この記事にコメントを書く。] [このカテゴリをまとめて読む。] [最新の記事を読む。]

RSS feed

カテゴリ

[/language] (98)
[/links] (254)
[/mac] (114)
[/music] (36)
[/origami] (406)
[/this_blog/ajax] (7)
[/this_blog/blosxom] (4)
[/this_blog/history] (12)
[/this_blog/perl] (9)

最新記事

パスワードについてのあなたの常識はもはや非常識かもしれない・その1 [/links]
ニューラルネットワークとディープラーニングで翻訳はどうなる・その5 [/language]
ニューラルネットワークとディープラーニングで翻訳はどうなる・その4 [/language]
HTTPS 対応 [/links]
ひらがな・カタカナ学習ウェブアプリ [/links]
日本語の「た」と英語の過去形 [/language]
ORI-REVO で回転楕円体を折る・その2 [/origami]
◇ ORI-REVO で回転楕円体を折る・その1 [/origami]
折り紙建築 [/origami]
折鶴に松図小柄 [/origami]
改訂版・たぶん、ほとんどの人は viewport meta タグの指定をまちがえてる・その6 [/links]
改訂版・たぶん、ほとんどの人は viewport meta タグの指定をまちがえてる・その5 [/links]
改訂版・たぶん、ほとんどの人は viewport meta タグの指定をまちがえてる・その4 [/links]
改訂版・たぶん、ほとんどの人は viewport meta タグの指定をまちがえてる・その3 [/links]
改訂版・たぶん、ほとんどの人は viewport meta タグの指定をまちがえてる・その2 [/links]

羽鳥 公士郎