建築でコンピュータ、する?
2025年4月27日(日) 08:48 JST
前回の記事(2011年度第7,8回GDL講習会)と前後してしまいましたが、第5、6回の講習会では、受講生の皆さんの腕試しということで、シェルコンテストを行いました。このコンテストは、ここまでに習った曲面の張り方、配列や傾く円柱の考え方などプログラミングによる三次元モデル作成のノウハウを使って、かっこいいシェル(曲面?)作品を作るといったものです。今回の記事では、エントリー作品を紹介したいと思います。
第7、8回目の講習では、「GDLコードを出力するC言語プログラム」について講習を行いました。二度手間じゃないの?と疑問に思う方もいるかもしれませんが、GDLは割と簡単に三次元モデルの作成ができるようになっていてとっつきやすい反面、複雑なことをしようとすると妙に難しくなってしまったり、テクニカルなプログラミング技術が求められたりしてしまいます。また、世の中にはC言語(C言語に限った話ではないのですが)で実装されたいろいろなアルゴリズム・処理が出回っています。こういったものを組み合わせて三次元モデリングに使えれば、必要な処理をプログラミングする手間が省けたり、組み合わせによって面白い形状ができたりといったようなメリットがあります。
というわけで、今回はC言語で計算した結果をGDLコードとして書きだす方法について紹介したいと思います。単にC言語プログラムから”BRICK 1, 2, 3”といったコードを書き出させても面白くありませんから、長方形を重ならないように配置したものを用意し、それをGDLコードとして書きだすというプログラムを作成してみましょう。
第4回の講習では、始点と終点を繋ぐ円柱、通称「傾く円柱」のモデリングについて学びました。GDL講習会の様子を眺めていると、この「傾く円柱」は講習の最初の山場であるといえます。「傾く円柱」のモデリングは、昨年度の講習にあるように、座標系を回転させることでZ軸方向に伸びる円柱が始点と終点とを繋ぐように傾けるわけですが、回転の仕方は二度回転を行うものと、一度の回転で行うものがあります。どちらの場合も現在座標系がどこに、どの向きにあり、どの軸に対してどのように回転するか、というのを正しくイメージするのはなかなか難しかったりします。
さて、傾けるモデルを円柱でなくH型鋼にしてみましょう。「傾く円柱」で作成したコードのCYLINDのところを同じ高さのH型鋼のモデル(PRISM)に書き換えてみてください。そうすると一度の回転で傾けたものは下図左のように、二度の回転で傾けたものは下図右のようになると思います。一度の回転で傾けたものは、回転軸の関係で、図のように、ウェブが鉛直にならず、傾いた状態になってしまいます。今回の記事では、一度の回転で傾けた「傾く円柱」に軸方向(高さ方向)の回転に関する制御を追加し、ウェブが鉛直になるようにした「傾くH型鋼」について紹介したいと思います。
第3回の講習では、配列によるメッシュの作成を学びました。昨年度の講習の第三回(こちらです)にあるメッシュの書き方では、X、Y方向に作成したグリッドに対してZの高さを決めていくといった手順でメッシュを作成しています。Zの高さを決める式をいろいろと変えてみることで様々なメッシュを作成することができます。今回の講習の宿題は、「Zの式を工夫して、オリジナルのシェルを作る」でしたが、それとは別にこの記事では、配列とループを使ったモデリングの仕方を紹介しようと思います。GW中にぜひ挑戦してみてください。
今回紹介するのは、「球」のモデリングです。球を描く関数はすでにSPHEREがありますが、今回講習した、配列とFORループを使って、LIN_関数で描いてみましょう。課題のポイントは、Z方向に進んでいく際にXとYの極座標半径が変化していく制御と、球の最後の一辺を別でFORループによって描くことです。
第2回の講習では、FORループによる繰り返しの処理を学びました。第2回の宿題は、「螺旋階段」のモデリングです。 この課題のポイントは、極座標への変換と蹴込み部分の作り方です。