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"]