hirax.net::Keywords::「C言語」のブログ



1999-03-25[n年前へ]

電界計算をしてみたい[有限要素法編その1] 

有限と微小のパン

 今回のサブタイトルは一目瞭然であるが、森博嗣のミステリのタイトルそのままである。

森博嗣 著 「有限と微小のパン」

 何故、「電界計算をしてみたい-有限要素法編その1-」が「有限と微小のパン」に繋がるのか。もちろん、"有限要素法"と"有限と微小のパン"の「有限」をかけた駄洒落ではない。有限要素法を考えるとき、私は森博嗣に足を向けては寝ることができない。それが、なぜかは下の本を見ればわかる。

森博嗣 著 「C言語による有限要素法入門」

 これは、学生時代に有限要素法を勉強するために使った本である。「森 博嗣 著」と書いてあるのがわかるだろうか。いや、まさかこの本の作者がミステリを量産するとは想像もしなかった。ビックリである。講談社ノベルズと森北出版の両方から本を出している人は他にはいそうにない。

 本題と関係のない話はここまでにしておく。今回はMathematicaで有限要素法を用いて静電界計算を行いたい。とりあえず、ソルバーとプリ・プロセッサまでつくる。その応用は続きの回で行いたい。Mathematicaで有限要素法を勉強するには、森北出版の依田 潔 著「Mathematicaによる電磁界シミュレーション入門」を参考にした。任意の電荷配置のPoisson方程式を解くようにしてある。

 今回使用したMathematicaのNotebookをHTMLで出力したものをここに示す。Notebook中でエラーが表示されているところは初期設定の変数をきちんと設定してやれば、エラーは出ないはずである。

次回に詳しく計算モデルの説明を行うので、今回は計算モデルの詳細については記述しない。Notebook内に、モデルの詳細は記述してある。

 このNotebookを使った計算、出力例を以下に示す。

電界計算の例

平行平板電極の間に誘電体層があるモデル

平板電極と三角柱電極の間に誘電体層があるモデル

平板電極と円柱電極の間に誘電体層があるモデル

分割要素

分割要素

分割要素

電位表示(色がきちんとしたhueでないことに注意)

電位表示(色がきちんとしたhueでないことに注意)

電位表示(色がきちんとしたhueでないことに注意)

半分の領域の電位を鳥瞰図にしたもの

半分の領域の電位を鳥瞰図にしたもの

半分の領域の電位を鳥瞰図にしたもの

 Mathematica3.0のHTML出力は大変便利だが、漢字が化けるのが困りものだ。しかも、ちょっと似た漢字に化けてしまうからわかりにくい。今回のNotebook中で化けた漢字を以下に示す。

  • 油界 <- 電界
  • 堰素 <- 要素
  • 誘油 <- 誘電
  • 姦み込む <- 組み込む
  • 表傭 <- 表面
  • 壓さ <- 高さ
  • 堆心 <- 重心
  • 肖似 <- 近似
  • 内占 <- 内部
  • 傭積 <- 面積
  • 回寂 <- 回転
  • 進当 <- 適当
  • 懷瞰 <- 鳥瞰


中国語みたいな化け方である。しかも、意味としても何か変な化け方である。いつか、この対処方法と理由を考えてみたい。それにしても、週末の遊び道具としてはMathematicaは素晴らしいと思う。

2000-04-07[n年前へ]

Canon Simplex + 

オリジナルとコピーの追復曲

 野田秀樹、NODA MAPの新作「カノン」が上演されている。観に行きたいのだが、距離のせいかなかなか見に行けそうにない。
 観ていないので内容は知らないのだが、タイトルのカノンは「規範」を意味するギリシャ語のkanonだろう。英語で言えばcanonである。辞書でカノン(canon)を調べてみると、

  1. 規範、原則、標準、規準、根本原理 類似語 = "criterion"
  2. 基本的重要文献
  3. 真作品
  4. 教会法
  5. 聖書正典、正経
  6. 音楽形式のカノン、追復曲
  7. 48ポイントの活字
というような言葉が出てくる。「これはC言語のバイブルだ」などの言い方はよくすることがあるが、それに誓いニュアンスだろうか?
 ちなみに、音楽形式としてのカノン=追複曲は、「主題としての一声部が応答としての他声部に模倣される形式」とある。「かえるの歌が聞こえてくるよ…」はその単純な例である。一つのメロディから導き出された旋律が重なり合っていくわけだ。あるいは、山下達郎の「クリスマスイヴ」の中間部のパッヘルベルのカノンといった方がわかりやすいだろうか。
 音楽形式の「カノン」では、最初の旋律が主題であり原典である。そして、その模倣旋律が組合わさって、魅力的な音楽が作られていく。

 ところで、「カノン」という言葉の意味の大きな割合を占める「聖書」という言葉を考えた時、音楽形式である「カノン」と似たようなものがある。
 それは印刷技術である。と、書くと、唐突に感じるかもしれない。しかし、聖書の複製をきっかけとして広まった技術が、印刷技術である。それほど、関係がないわけではない。印刷技術は、グーテンベルク(ちなみに、今年はグーテンベルク= Gutenberg, Johann Gensfleischの生誕600年目である)の「42行聖書」から始った原典を複製する技術である。
 印刷技術は、一つの原典から複数の複製物が作り出されていく。それは、一つの旋律から導き出された複数の旋律が追いかけていく、音楽のカノンそのものである。印刷技術はもうひとつの「カノン」なのである。
 

グーテンベルクの「42行聖書」

 本来、「カノン」という言葉は「規準、原典、教典」を指すわけであるが、同時に、この「カノン」という言葉には「複製」という匂いがつきまとう。先の追復曲=カノン、そして印刷された聖書もそうだ。

 グーテンベルクの「42行聖書」は200部程度印刷された。それらはいずれも色々な装飾がされ、同じ物は一つとしてない。どれも個性豊かなものである。音楽の「追復曲=カノン」でも、輪唱のようなごく単純なカノンを除けば、旋律は魅力的に変化されていく。旋律はどれも個性豊かなものである。個性がなければ、それはとてもつまらない輪唱に終わってしまう。

 きっと、NODA MAPの「カノン」では野田秀樹の「言葉を繰り返し、次々と意味を転じさせて、そして、何者かを描写していく力」が発揮されるのだろう。考えてみれば、野田秀樹の「言葉を操るやり方」もカノンそのものである。模倣から始まったモノであっても、何かが新たに加えられていくならば、それは模倣でなくなって、きっといつかは原典になるのだと思う。逆に、あまりに原点としての「カノン」を守ろうとしたものは、それは単なる「コピー」に終わる。

 さて、ところで「コピー」という言葉と「canon」という言葉を考えるとき、ある企業(が頭の中に浮かぶ。「Xerox」というオリジナル旋律に派生する企業である。

 原典とされた「Xerox(富士ゼロックス)」はかつて、丸善石油のCM「オー・モーレツ!」を原典として、「モーレツからビューティフルへ」というCMを作り上げた。それは素晴らしい本歌取りである。60年代を代表する「オー・モーレツ!」という「キャッチ・コピー」を、「コピー」して、さらに変化させることで70年代へ繋がる「モーレツからビューティフルへ」という「キャッチ・コピー」を作り上げたのである。それはもう、一つの哲学であるといって良いと思う。

 一方の企業は80年代に苺の「コピー」にミルクをかけてみせ、「本物と"コピー"の違いは見分けられない」というCMを作り上げた。原典と「コピー」に違いがあるのか?という問いかけである。それもまた一つの哲学だろう。

 原典にこだわりすぎ、単なる「コピー」に終わるか、それとも、何者かを加え「本歌取り」としての「カノン」にすることができるか、それは「Vision」の有無にかかっている、のかもしれない。本当の「カノン」になるかは、「Vision」次第だ。そんなに深い意図はないし、適当に書いてみただけだけれど。

 うーん、今回はやっぱり、「スクラップ」行きだな。(BGM & Title ゴルトベルグ変奏曲による14のカノンJ.S.Bach)
 

2002-08-25[n年前へ]

オッパイ星人の力学  巨乳アナライザー 編 

有限要素法でおっぱい変形シミュレーション

 地球を侵略しようとしているオッパイ星人達は、世界各地のありとあらゆる町に潜んでいる。そして、街を歩く「可哀相な子羊(巨乳)」の揺れ動く胸に視線をロックインさせ、その視線を不自然なまでに上下左右にスイングさせている。

 ワタシは地球を、そして可哀相な子羊(巨乳)達をこの手で守るために、そんなオッパイ星人達と日夜人知れず戦い続けている。東に「可哀相な子羊(巨乳)」がいると聞けば、「巨乳ビジョン」を装着して出動し子羊を見守り、西に強風が吹くと聞けば、青少年達のために「風圧を頼りに疑似オッパイの研究」をしてきた。雨ニモマケズ、風ニモマケズ、田舎の母はオネガイダカラカラヤメロトイヒ、ヒトリノトキニハナミダヲナガシ、ミンナニオッパイニンゲントヨバレつつも、それでもワタシは戦い続けてきたのである。

 そして、単純な「半円モデル(松坂季実子項)+バストに関するフックの法則」の研究から始まったオッパイ星人との戦記は「オッパイ星人胸のヤング率編」「揺れる胸の動き編」パラメータ励振編」「バスト曲線方程式編」「仏の手にも煩悩 編」「あなたのオッパイ星人度編」「求む未来のヒロイン編」「禁断の最終兵器 編」と長く続き、今ではワタシは高度な画像処理技術を駆使した「巨乳ビジョン」を開発したことにより、街中で目にしたオッパイの大きさ・形状を定量的に把握することさえできるようになった。

 しかし、「巨乳ビジョン」を装着し街中をパトロールし、可哀相な子羊達をワタシのこの手で守ろうとしたとたんワタシは気づいたのである。街中に「可哀相な子羊達(巨乳)」がやたら歩いているのである。「可哀相な子羊達(巨乳)」が多すぎるのだ。あまりに大きな谷間が多すぎて、一体どの谷間をガードすれば良いのやら、皆目見当がつかないのである。いつの間にか、街中には「天使のブラ」やら「ウォーターパッド」やら、「シェルフカップ」などが溢れてしまい、外見からだけではその中身は何がなんだかよく判らなくなってしまったのだ。「巨乳ビジョン」を装着したワタシは、そんな谷間を見ながら途方に暮れてしまったのである。

 真のオッパイ星人ならともかく、BreastTest IIなどの「オッパイ・テスト」でも満点を取れないワタシは単に大きさに惑わされてしまったりして、どれがホンモノだかニセモノだか皆目見当がつかない。こんなことでは、自然食グルメ志向であって、ホンモノ・ニセモノなど即座に知ることができるだろうオッパイ星人達に勝つことなどできるはずがない。そこで、色んな矯正(天使のブラ・詰め物…)がされている時に、一体バストはどんな形状になるのかを詳細に調べて、「どんな谷間が自然で、どんな谷間が不自然か」を調べてみることにした。まず今回は、さまざまな矯正技術が駆使されている場合にもバストの構造・形状をより詳細に知ることのできるように、バストの形状変形を有限要素法(FiniteElement Method = FEM)を使って計算する「巨乳アナライザー」を作ってみることにしたのである。
 

森博嗣 著、 C言語による有限要素法入門
 学生時代に、ボーリングした穴の形状変化を計算するために、有限要素法(FiniteElement Method = FEM)を勉強した。その時に参考書代わりに使った「森博嗣著、 C言語による有限要素法入門」。
 まさか、その後この本の作者がミステリーを量産し、そしてまさか自分がFEMでオッパイの計算をし、「巨乳アナライザー」なんかに挑戦することになるとは思いもしなかったのである。時の流れはオソロシく、そして時にほろ哀しいものなのだ。
 

 まずは、立っている女性のバスト部がどう変形するかを計算してみた。判りやすいように、モデルとしては二つの場合

  1. 小振りな微乳の場合
  2. 大振りな巨乳の場合
を計算してみた。以前、「バスト曲線方程式 編」で「水風船モデル」を用いて「表面の皮膚のみが弾性を持つ」として計算をしてみたが、今回は「バストの部分全てが弾性を持つ」として計算してみたわけである。その結果が下の二つの図である。いずれの図も立っている女性のバスト部の断面であり、縦軸は鉛直軸であり、ちょうど女性の胸前面に一致し、水平軸は女性の正面方向である。
 
FEM(Finite Element Method)によるバスト変形計算例
(立っている女性のバスト部の断面)
小振りなバスト(微乳)の場合
それほど垂れない
大振りなバスト(巨乳)の場合
自然に垂れてしまう

 大振りなバスト(巨乳)の場合、重力の影響で下に大きく垂れてしまっていることが判る。これでは、確かにブラジャーをつけるのが自然だろう。それに対して、小振りなバスト(微乳)の場合には、それほどは垂れていないのである。これなら、ブラジャー無しでも大丈夫だろう、いや、そもそも「少なくともオッパイが垂れるのを防止するためには」ブラジャーを着ける必要もないだろう。

 そして、単にバストの大きさだけでなく、hirax.netが提唱する「バストに関するヤング率(若いと力に対して伸びが小さいが、年をとると伸びが大きくなってしまう)」の考えに基づき、ヤングなバスト(=「堅い」バスト)とそうでない柔らかいバストの場合の比較をしてみたのが、下の比較図である。左のバスト中の水色の部分は少し堅い(=ヤングな)物性を持っていて、少し「堅い」バストになっている。それに対して、右側は先ほどの平均的なヤング率を持つバストなのである。
 

堅いオッパイ、柔らかいオッパイ
「堅い」オッパイの場合
全然垂れない
柔らかいオッパイの場合
垂れる

 右側に示したノーマルなバストでは重力の影響を強く受けて垂れてしまうのに対して、やたらヤングなヤング率を持つバストの場合には不自然なほどに形が崩れていないことが判るだろう。まるで、アニメやマンガに描かれる女の子のようなバストになってしまっているのである。逆に言えば、アニメやマンガに描かれている女の子は「やたらにヤング(=やたらに肉が堅い)」という物性を持っていることが判るのである。

そして、せっかく今回有限要素法を用い始めたのだから、もう少し複雑なものを計算してみた。それが下の中央である。小振りなバスト(微乳)を大きくするために、バスト内部に少し「堅い(=ヤングな)」物質を入れてみたのである。もちろん、「柔らかい(=アダルトな)」物質を入れてみても良いのだけれど、それではどうしても大きくなった分、下へ垂れてしまう。ここでは、「大きい巨乳」と「きれいな美乳」を両立させるために、あえて自然のバストよりも不自然なくらいヤングな物質をバスト内部に入れて、バストアップしてみたわけである。ちなみに、下の左側はバストアップ前の「小振りなバスト(微乳)」であり、右側は自然度100%の柔らかい巨乳の場合である。
 

オッパイ内部に堅い物質を挿入する
小振りなバスト(微乳)
 

自然のオッパイ内部に
少し「堅い=ヤングな」物質を
入れてみる
自然100%の
柔らかいオッパイの場合

 中央の少し「堅い(=ヤングな)」物質を入れてみた場合、バストアップしつつそれほど不自然でない垂れ方をしており、「大きい巨乳」と「きれいな美乳」が両立していることが判る。逆に、このような形状のバストを見かけたならば、そのバスト内部に隠されている「ヤングなバストアップ層」の存在を感じ取ることができるのだ。

 つまり、今回開発を開始した「巨乳アナライザー」により、バスト内部の構造によってバストがどんな外形状に変形するかをこれから色々と解析し続けていくならば、「バストの外見を見ればその内部に一体どんな構造が隠されているかを感じ取ることができる」ようにすらなるハズなのだ。そうすれば、「天使のブラ」やら「ウォーターパッド」やら、「シェルフカップ」などのせいで街中に溢れる数え切れない大きな谷間の中から、オッパイ星人に狙われそうな「可哀相な子羊(巨乳)」を見つけ出し、ワタシのこの手でその巨乳を子羊を守ることができるようになるのである。

 そしてまた、バスト内部の構造を見ただけで知ることができるワタシは、街中を歩く女性に「そのウォーターパッドなかなか良いですね!どんな感じなんですか?」と賛辞の言葉をかけることだってできるようになるのである。そんな意見を聞くことができれば、その言葉をかけられる方だってきっとウレシイはずなのでる。

 そしてそれだけでない、「巨乳ビジョン」+「巨乳アナライザー」により、チラっと見ただけでバスト内部の脂肪組織のヤング率(=柔らかさ)の分布すら感じ取ることができるようになったあかつきには、ワタシは街中を歩く女性に「おや?キミの右のバストの少し奥に、ちょっと堅いしこりがあるようですね。念のため乳ガンの検査をしてはいかがでしょう。」とアドバイスすることだってできるかもしれない。オッパイ星人に襲われそうな可愛そうな子羊達を守るだけでなくて、世界の全女性のための乳ガン早期発見にだって貢献できるようになるかもしれないのである。

 こんなワタシを、「巨乳ビジョン」を装着し「巨乳アナライザー」を駆使して街中で人知れず戦うワタシを、人が感謝することは決してないだろうが、雨ニモマケズ風ニモマケズ、ワタシはこれからも戦っていこうと気持ちも新たに誓うのである。

2004-02-06[n年前へ]

PDLSバージョンアップ 

 PhotoshopのプラグインをC言語などで簡単に作成することのできる環境のPDLSをバージョンアップしてみました。今回の変更点は、
(1) 「作業過程を記録したマクロ」内で変数(定数)宣言を使うことができるようにし、マクロを関数(DLL作成関数と同様にパラメータを外部から指定することができる)として使うことができるようにした
(2) マクロからマクロ(関数化されたものも、あるいは、されていないものも)を呼び出せるようにした
(3) 関数化されたマクロをGUIから実行時する際にはパラメータ選択ダイアログを出して、マクロ内で定義された変数の値を実行時に自由に変えられるようにした。すなわち、DLLとして作成した機能拡張と同様にマクロで作成した機能拡張関数においてもユーザーインタフェースが使えるようになった
というところです。

 Photoshopを使いつつ、画像処理のプログラミングを簡単にやってみたい方は使ってみるのも面白いかもしれません。また、比較的大きなサイズの二次元データ(画像)を扱う機会が多い方でしたら、とりあえず鳥瞰図プラグインやセル表示プラグインを使うためだけに使ってみても、意外に便利で重宝するんじゃないかと思います。

 また、FilterFactoryなどとは違って、16bitのCMYKモードやLabモードでも使うことができるので、そういったモードで数式処理プラグインでも使って、FilterFactoryっぽく使ってみるのも意外に面白いかもしれません。

 ちなみに、動作環境はPhotoshop6.0以降で、CS(8.0)でも動作確認済みです。

2004-08-07[n年前へ]

メモリ管理機能追加 

SurfaceplotGL Photoshopのプラグインを「通常のDLLを作るのと同じやりかた」で簡易に作成できるPDLSをバージョンアップ(9.6MB)しました。また、導入資料も少しだけ追記しました。添付プラグインも若干バージョンアップしたり、追加したりしています。右の画像はSurfaceplotGLプラグイン処理画面です。

 今回のバージョンアップでの大きな変更点は「New」「Delete」プラグインを追加し、「メモリ管理機能」を追加したことです。処理対象画像のサイズをフィルタ内で変更しつつ処理をしたり、マクロ内(もしくはマクロで作成した関数内)のみで有効なローカルメモリを(元処理対象画像と組み合わせながら)確保し、画像処理対象をそのローカルメモリに変更したり、ということができるようになります。例えば、マクロで(もちろんGUIからでも)

Def{FrameFile=C:\hoege.bmp}New{ // 左上端から128,128ピクセルの位置を原点として // 256*256のサイズ1チャンネル分を流用しながら // 新たなチャンネルを1チャンネル作成して、処理対象 // とする}LoadFromFile{ SourceFile=FrameFile // 新しく作成したチャンネルにファイルを読み込む // プリクラ処理のフレームとして使う}Impose{ // チャンネル間で合成処理をおこなって、プリクラ風の // 処理をする}Delete{ //メモリ解放して、 // プリクラ処理のフレームとして使ったエリアを捨てる}
 なんていう風に使ったりできるわけです。GUIから自動作成されたマクロ内で自由にメモリを確保・解放できるため、DLLとしてC言語などから作成したDLLと同様に、マクロで作成した関数を「それのみで閉じた完結した処理」として再利用することが容易になります。

 Photoshop等が仕事に欠かせなかったり、画像に限らず二次元の比較的大きなデータを処理したかったりする方はきっと重宝するのではないか、と思います。単にSurfaceplot等のプラグインを使ってみるだけでも良いでしょうし、C言語をほとんど知らない人でも、数分でPhotoshopのプラグインを量産できるのもお勧めなポイントです。ドキュメントが不足しているのはいつもの通りですが、使ってみたい方がある程度いるようでしたら、いっそのこと直接デモする説明会開催もアリですし。

 ちなみに、Adobe Photoshop 6.0以降Photoshop Elements, PaintShop Proでの動作を確認しています。



■Powered by yagm.net