2011年12月13日火曜日

mathematica での繰り返し処理における処理時間

mathematicaで 繰り返しの処理をする場合によく使うTableという処理ですが、
書き方によって処理時間がかなり違うのでメモ。
Table[m,{m,0,1,0.001}]は0.001刻みで、mを0~1まで列挙するという処理ですが
これを Table[m,{m,0,1,1/0000}と刻みを分数で書くと処理時間が急に長くなります。
なぜかは厳密にはわかりませんが、実用的なプログラムをmathematicaで書く場合
注意しないといけないと思った。このことについてwlfram社のリファレンスはあるの
でしょうか?ちょっと暇なときに探して見ます。

2011年12月6日火曜日

開発環境

卒論の開発環境としてecllipse上でprocessingをつかい、mathematicaと通信させて開発をおこなっています。環境構築に参考にしたサイトのまとめをしておきます。
processing on eclipseは詳しい情報がたくさんあるので、割愛。
以下、processing+openGL+mathematica on eclipseの環境構築を解説
http://thedoritos.blogspot.com/2011/01/opengl-processing-eclipse.html
・この記事の補足として、openGLに必要なjarファイル・す・べ・て・のneitive locationを
ここでつくったフォルダ(lib)にパスを指定しておきます。
ここに書いてあることを行えば、eclipse+processing +openGLが動きます。
次、mathematicaの導入。
まずは、openGLの時同様jarファイルを追加する必要がある。
mathematicaのパッケージの内容を表示→ system files →links →jlink→”JLink.jar”を、
eclipse のビルドパスから追加する。
ここで、mac ユーザーの場合、mathematicaのパッケージの内容を表示という所を
eclipse上からは開けない場合があります。
そのときは、シンボリックリンクを作成してする。
そして、仮のリンク先から、jarファイルを指定します。
で、以下のサンプルコードを書いてみましょう。
http://reference.wolfram.com/mathematica/JLink/tutorial/WritingJavaProgramsThatUseMathematica.html
ここで一番最初にででくるサンプルコードを書いて実行するのですが、
mathematicaのカーネルを指定するところが、少しややこしかったので、
そこだけここにコピペしておく。

mac
ml = MathLinkFactory.createKernelLink("-linkmode launch -linkname '/Applications/Mathematica.app/Contents/MacOS/MathKernel' -mathlink");
windows
  ml = MathLinkFactory.createKernelLink("-linkmode launch -linkname 'C:\\Program Files\\Wolfram
Research\\Mathematica\\8.0\\MathKernel.exe'");

改行されているので、そこは半角スペースが必要か、必要でないかは、試行錯誤してください。
ちょっと記憶が曖昧なので、思い出せません。
自分で作った、.mファイルから関数を呼び出す場合は、後述します。


2011年12月5日月曜日

bezier曲線

ベジェ曲線をいろんな太さので、チューブとして物質化(曲げ木で)
したいという願いのもと、スクリプトを書いていました。
さて、ベジェ曲線の定義はwikipedia等にある通り、バーンスタイン基底関数
を用いたものです。
wikipedia (ベジョ曲線)
でこれをスクリプトに落とし込むわけですが、4次のベジェ曲線とか5次とか
具体的な次元のベジェ曲線ではなくn次のベジェ曲線を定義するにはどのような
アルゴリズムがいいでしょうか?
ベジェ曲線は多項式で書かれているので再帰的定義が使えそうです。
さらにバーンスタイン基底関数は2項係数にt^i(1-t)^n-iをかけたものです。
(^は累乗)2項係数はパスカルの三角形で有名で、再帰的定義が容易に可能です。
2項定理(wikipedia)
具体的には、wikipediaにあるように、c[n,k]:=c[n-1,k-1]+c[n-1,k]と定義できます。
しかし、ここで注意したいのはスクリプトに落とし込む際は必ず、nが定数の場合を
定義しないと行けません。プログラムが停止しなくなります。なので

c[n_, 0] := 1; c[k_, k_] := 1;を加えて定義します。
そして、さらにここで説明を端折りますが、残りのt項とΣを考慮して計算すると、
bezier曲線は以下の写真のようにmathematicaで定義できます。

これでn次のベジェ曲線が数行で簡単に定義できました。
余談ですが、ベジェ曲線同士の交点をどうやって求めるか
というのは数学的にはdeterministic(決定論的)に解けない
らしいです。だからベジェ曲線の幾何的特性を生かして再帰的に
解くという論文がありました。もしかしたらいずれつかうかもしれない
ため、メモ
東京大学の先生の論文でした。

final project (undergraduate)ー卒論の一部

卒論は過去に作ったものをまとめますが、最後に研究として取り組むのは曲げ木です。
これは修士課程の始まりの研究でもあるので、卒論と同時にもはじまりでもあります。

曲げ木は多くの伝統的な手法があります。曲げわっぱや、お風呂の桶等、これらは
各々が独自の工法で作られ特徴も異なります。これは曲げわっぱといわれるものです。

一方でdigital fabrication技術を用いた曲げ木も存在します。
zip shapeは椅子を作る際に、パラメトリック曲線によってCADでデザインした
曲線がそもままfabricate(物質化)できる手法+システムです。zipShape(リンク)

僕も、zipShapeとは違ったアプローチで曲げ木を制作・研究します。
具体的には今後、アップしますが、合板に切り込みのパターンを入れることで
合板をゴムのように柔らかくできます。(下の写真は合板でできたサッカーボール)

それを利用し曲線の性質(曲率分布)によって図面を生成するシステムをつくります。
図面の生成は部材の生成を意味し、異なる弾性の合板をパターンによって生成します。
パターンに応じた応力分布を見たり、弾性をコントロールする手法は後回しですが、
ある程度パターンによって弾性を意図的に帰られるので、ある曲率分布によって
パラメトリック曲線(あるいは曲面)を分割し、分割された線上での曲率に応じて
合板に入れる切り込みのパターンを生成するシステムをつくります。

2011年10月20日木曜日

構造解析と形態生成そしてデジタルファブリケーション

デジタルファブリケーションはコンピュータによって物質を加工・生成します。
近年では、スクリプトでいろんな形がつくられ、物質化されますが、
この情報から物質化までが簡単になったぶん、作り手はそこの間に発生するエラーにも
多く遭遇することになります。構造的に弱すぎたり、組み立てできなかったり.....
一方、建築や機械設計などさまざまなエンジニアリングで取り入れられてる有限要素法
などの構造解析手法をさりげなく取り入れ、それを評価関数の用なものとして、
おもしろい形態を生成しているプロダクトもたくさん見られます。
しかし、なんかおかしい。その解析手法を用いた理由は?、その健全性は?
確かにこんなに厳密にやる必要がないかもしれない。(面白い形を生成する用途に限れば)
しかし、デジタルファブリケーションの面白いところは構造解析をして、
すぐにフィジカルな実験なり検証ができるところ、むしろ構造解析
や物質にかかわる部分を厳密に行うことこそが驚くべき結果を生む
気がしてならない。
これまでとは比べ物にならないスパンで、解析-検証を繰り返すことができる。
さらに、物質をどのように加工するかも精密にデジタルにコントロールすることができる。
つまり何が言いたいかというと、現在、 デジタルファブリケーションの分野では、
構造解析などは単に、形態生成のためのおかずの用に使われているだけものが多いが、
ここを厳密にしっかり取り組むことは非常に重要であるということ。 
なのでこれからテンソルをしっかりやります。

2011年4月19日火曜日

For modular structure , it is very important to analyze the deflection of each modules.

モジュラ構造物なるものを最近つくっています。近年、下の写真のようなモジュールを組み合わせて、形をつくり、デザインに応用する事例をよく目にします。下の写真のIQ-Lightは1972年に作られたものですが、,近年のdigital fabrication技術の発達、つまり3Dプリンターやレーザーカッター等のデジタル制御で物質を加工することのできる機械が高性能化し安価になることで、このようなモジュラー構造物は”単なる奇抜なデザイン”ではない様々な有用性を持つだろう。


さて、このようなIQlightなどのモジュラ構造物は接着剤などの特殊なコネクタを用いなくとも
構造物として安定している。その安定を保証するものは何か?それはモジュールの持つ”たわみ”
である。”たわみ”を利用することでテンセグリティーのように各々が相互に影響を与えあい、
構造物全体として安定したものとなる。
さて、今回私はこの”たわみ”が重要な役割を果たすであろうともくろみたわみを解析する
ソフトウェアをmathematicaで実装し、そして、4つのタイプのサッカーボールを紙で製作した。

この写真は、実際に制作した紙のボールである。サッカーボールは幾何学的には切頂二十面体
を膨らませてつくる構造である。私は切頂二十面体というジオメトリーは保持しつつ、”たわみ”
を各々変えてこの多面体を作ってみた。上の写真はすべて切頂二十面体であるが、各々が
異なる”たわみ”を持つ。”たわみ”の数理的な定義は今回は割愛するが、このたわみを
変えることでシッカリとボールとして機能するほど安定するものと、すぐに崩れてしまうものまで
様々な特性をもつボールをつくることができた。
現在は正多面体や準正多面体や菱形多面体などの対称性をもった多面体のみの”たわみ”
しか解析できないが、今後は有限要素法を用いて、いかなるポリゴンを指定してもモジュールで
そのポリゴンを製作でき、たわみの解析を可能にするようなシステムをつくりたい。
こんなのもつくったよ。



2010年10月26日火曜日

interactive weaving papers



僕の研究室の先輩である岩岡さんとの共作です。

岩岡さんはこのweaving papers を制作しました。

先輩のweb::http://web.sfc.keio.ac.jp/~iwaoka/web/

僕はこの紙に電子回路を組み込んで、ソフトウェア

を構築しました。 3Dのブレッドボードのように自由に

電子回路を編むことができる。 詳しくはのちほど・・

ラベル

フォロワー

ラベル

自己紹介

自分の写真
数学ともの造りに興味があります。 電子工作とかもします。 Key ward : digitalfabrication, cellular automata

ラベル