はじめての親子ハイキングに挑戦!! >>

こんにちは。maximaやmathematicaなどで立体を表示する方法は調べてわかったのですが、2つ以上の立体の重なった部分のみを表示、或いは強調表示したりする方法が分からず困っています。例えば、x^2+y^2+z^2<=4とx^2+(y-1)^2+z^2<=1の表す立体の共通部分を表示するにはどうしたら良いでしょうか?
maxima、mathematicaどちらでも構わないのでご存知の人いらっしゃいましたらよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Mathematicaの場合について回答します。


x^2+y^2+z^2<=4とx^2+(y-1)^2+z^2<=1の共通部分ですので、論理積を取ればよいのです。

RegionPlot3D[x^2 + y^2 + z^2 <= 4 && x^2 + (y - 1)^2 + z^2 <= 1, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}]

この場合はx^2+(y-1)^2+z^2<=1だけの場合と変わりませんので、片方の中心位置や半径を変えた場合のほうがわかりやすいでしょう。

強調表示をしたい場合は、PlotStyleで元の2つの立体を半透明にしてShowで組み合わせるなどをすればよいでしょう。

Show[
RegionPlot3D[x^2 + y^2 + z^2 <= 4, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}, PlotStyle -> Opacity[0.3]],
RegionPlot3D[x^2 + (y - 1)^2 + z^2 <= 1, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}, PlotStyle -> Opacity[0.3]],
RegionPlot3D[x^2 + y^2 + z^2 <= 4 && x^2 + (y - 1)^2 + z^2 <= 1, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}]
]
    • good
    • 0
この回答へのお礼

確かにこの式では一方の球にもう一方が含まれていましたね... なるほど、今手元にMathematicaがないのですぐに結果をお伝えできませんが、ぜひこれで試してみようと思います!
maximaで似たような機能を持つ関数を探してみたのですが出てきませんでした。やはり製品ですね。素晴らしい!

ありがとうございました。

お礼日時:2012/12/07 19:39

 これはたぶん最後の手段ですが、AutoDesk社のAutoCad Reguler版は、そういう事ができます。



 AutoCadはもともと製図ソフトとして開発されましたが、今では3次元モデルを扱えるようになっています。maxima、mathematicaで定義された立体をAutoCadに取り込むためには、立体の表面データだけをDXFかShapeファイル形式(Textファイルです)で吐き出し、それをAutoCadに読ませ、内部でSolid化するという手順になります。

 立体の表面データの事をAutoCadではSurfaceモデルと呼び、それに中身を詰めた立体の事をSolidモデルと呼びますが、2つ以上のSolidモデルに対して、和,差,積のBoolean演算が可能です。

 同様な事が可能なものに、3DMAXと3DVIZがあり、これらはCG系のソフトです。案外、maxima、mathematicaと連携してる可能性はあるかも知れません。AutoCad Reguler版,3DMAX,3DVIZらの欠点は、「とても高い」という事です。

 なので、CG系のソフトに詳しい人にきいてみるのも、一つの手かなと思いました。
    • good
    • 0
この回答へのお礼

なるほど。私も一時3Dモデルとしてやろうと思いましたが敷居が高そうだったのであきらめていました。CG系の人は残念ながら周りにいないのですが、手が空いたときにこちらも試してみようと思います。
ありがとうございました。

お礼日時:2012/12/07 19:30

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング