Wolfram 幾何学計算 | 試してみよう

コードはどれも,コード内をクリックして編集してから
+
を押せば,実行できます.
幾何学的モデリングと計算 Wolframの幾何学計算は,初心者から上級者まで万人のニーズに合った,幾何学のモデリング,分析,可視化,合成のための統合されたツールとソリューションの包括セットを提供します.

メッシュ領域の生成と使用

組込み関数を使って3Dメッシュを作成する:
実行
mesh=MengerMesh[2,3]
このメッシュの領域を測定する:
実行
SurfaceArea[mesh]
別の計算をする:
実行
Volume[mesh]
このメッシュを数値計算の領域として使う:
実行
Integrate[yz,{x,y,z}∈mesh]
点から複数のメッシュを計算する:
実行
SeedRandom[1324];​​points=RandomReal[{-1,1},{20,2}];​​{VoronoiMesh[points,Epilog{Red,Point[points]}],DelaunayMesh[points,Epilog{Red,Point[points]}]}

幾何学領域の特性の計算

領域をインポートする(評価には時間がかかるかもしれない):
実行
In[]:=
physicalregion=ResourceData["Stanford Dragon"]
この領域の重心についての回転慣性を計算する(単位密度を仮定する):
実行
In[]:=
ℐ=MomentOfInertia[physicalregion];
この領域の重心,主軸,主慣性モーメントを計算する:
実行
In[]:=
center=RegionCentroid[physicalregion];​​principalAxes=Eigenvectors[ℐ];​​principalMoments=Eigenvalues[ℐ];
固有値によって主軸をスケールして領域を可視化する:
実行
In[]:=
Show[physicalregion,Graphics3D[MapThread[{#1,Arrowheads[{-0.05`,0.05`}],Arrow[Tube[{-#2,#2}#30.5`+Threaded[center]]]}&,{{Red,Blue,Green},principalAxes,Normalize[principalMoments]}]]]
Out[]=

領域上で解く

幾何学的プリミティブの集合を定義する:
実行
In[]:=
primitives={Cuboid[{-3,-3,-.1},{3,3,.1}],Cylinder[{{-3,0,0},{3,0,0}},1],Cylinder[{{0,-3,0},{0,3,0}},1],Cylinder[{{0,0,-2},{0,0,2}},1]};
プリミティブを使って構造的立体幾何学領域を定義する:
実行
In[]:=
csgregion=CSGRegion["Difference",{CSGRegion["Union",Most[primitives]],Last[primitives]}]
幾何学領域をさまざまな方法で表す:
実行
In[]:=
booleanregion=BooleanRegion[(#1||#2||#3)&&!#4&,primitives];​​RegionConvert[booleanregion,"Implicit"]
微分方程式を解いて,この領域上の温度変化をモデル化する:
実行
In[]:=
sol=NDSolve​​
∂
t
u[x,y,z,t]==3
2
∇
{x,y,z}
u[x,y,z,t],​​DirichletCondition[u[x,y,z,t]==1,{x==3,x==-3,y==3,y==-3}],​​DirichletCondition[u[x,y,z,t]==5,
2
x
+
2
y
==1],​​u[x,y,z,0]==3,​​u,{t,0,25},{x,y,z}∈booleanregion;
特定の時点における解を可視化する:
実行
In[]:=
SliceContourPlot3DEvaluate[u[x,y,z,25]/.sol],{"ZStackedPlanes",Range[-1,1,0.2]},​​{x,y,z}∈Cuboid[{-3,-3,-3},{3,3,3}],
options

数値解をアニメーションにする(評価には時間がかかるかもしれない):
実行
In[]:=
ListAnimateTable​​RasterizeSliceContourPlot3DEvaluate[u[x,y,z,t]/.sol],"CenterPlanes",​​{x,-3,3},{y,-3,3},{z,-3,3},
options
,{t,0,5.,.1},​​ControlPlacement->Top

3Dモデルのインポート,修復,エキスポート,印刷

3Dモデルをインポートする:
実行
In[]:=
model=ResourceData["Stanford Bunny"]
このメッシュの底の穴を見付ける:
実行
In[]:=
FindMeshDefects[model,ViewPoint->{0.3,-1.3,-1.5}]
穴を修復する:
実行
In[]:=
repairedmodel=RepairMesh[model,ViewPoint->{0.3,-1.3,-1.5}]
モデルをファイルにエキスポートする:
実行
In[]:=
Export["example.stl",repairedmodel]
モデルを3D印刷サービスに送る:
実行
Printout3D[repairedmodel,"Sculpteo"]

総合幾何学を探る

幾何学的命題によって記述されたシーンのランダムな例を見付ける:
実行
scene=RandomInstance[​​GeometricScene[{a,b,c,o},{Triangle[{a,b,c}],CircleThrough[{a,b,c},o],o==Midpoint[{a,c}]}]​​]
シーンの既知の命題に関連する予想を調べる:
実行
conjectures=FindGeometricConjectures[scene]
指定されたシーンに関連付けられた推測のリストを取得する:
実行
conjectures["Conclusions"]