What’s New in 
Geometry

Charles Pooh, Wolfram Research

Join the Conversation #WolframTechConf

What’s New in Geometric Computation

New Region Constructors

New and Improved Solvers over Regions

New Visualization over Regions

New 3D Printing Features

Basic Regions: 2D

Basic Regions: 3D

Basic Regions: nD

Basic Regions: Bounding Regions

Mathematica® 11 provides bounding regions for points and meshes in any dimension for display, spatial query or spatial indexing purposes.

mesh=ExampleData[{"Geometry3D","SpaceShuttle"},"Region"]

BoundingRegion[mesh,"MinBall"]

Show[{mesh,Graphics3D[{Opacity[0.5],%}]}]

showMeshGrid[mesh_,names_]:=Grid[Partition[Framed[Show[{mesh,Graphics3D[{Opacity[.5],BoundingRegion[mesh,#]}]},PlotLabel->#,PlotRange->{{-8,10},{-8,8},{-6,10}},Method->{"ShrinkWrap"->False}],RoundingRadius->10,Background->Lighter[Gray,0.9],FrameMargins->10,FrameStyle->GrayLevel[0.5]]&/@names,2,2,1]]
showMeshGrid[mesh,{"MinCuboid","MinBall","FastCylinder","FastCapsule"}]

Mesh-Based Regions: From Arrays

Generating color tetrominoes and building chessboards or arbitrary geometric shapes from patterns is easy in Version 11.

arrays = {(({{1, 0, 0, 0}, {1, 0, 0, 0}, {1, 0, 0, 0}, {1, 0, 0, 0}})), (({{1, 1, 0, 0}, {0, 1, 0, 0}, {0, 1, 0, 0}, {0, 0, 0, 0}})), (({{1, 1, 0, 0}, {1, 0, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0}})), (({{0, 1, 0, 0}, {1, 1, 0, 0}, {0, 1, 0, 0}, {0, 0, 0, 0}})),
   (({{1, 0, 0, 0}, {1, 1, 0, 0}, {0, 1, 0, 0}, {0, 0, 0, 0}})), (({{1, 1, 0, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}})), (({{1, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}))};

col=ColorData[97,"ColorList"];

Table[ArrayMesh[arrays[[i]],MeshCellStyle->{2->col[[i]]}],{i,7}]

Mesh-Based Regions: From Images

Version 11 introduces the ImageMesh function for conversion from 2D and 3D images to meshes.

orig = EntityValue[(Entity["Great Salt Lake", Entity["Lake","GreatSaltLake::yw8cf"], "Entity[\"Lake\", \"GreatSaltLake::yw8cf\"]", "lake"]), "Image"];

img = RegionBinarize[orig, , 1/5];

GraphicsRow[{orig, img}]

ImageMesh[img]

img=Import["ExampleData/CTengine.tiff","Image3D"]

ImageMesh[img]

Mesh-Based Regions: From Files

Mesh-Based Regions: Curated Regions

Direct access to a large volume of curated 3D regions, specially organized and created for the Wolfram (Language^™).

LinguisticAssistant["Region"]

KnotData["Trefoil","Region"]

ChemicalData["Caffeine","Region"]

GeoElevationData[LinguisticAssistant,Automatic,"Region"]

Roll, Pitch and Yaw Rotations

iShow[trans_]:=Show[trans,Method->{"ShrinkWrap"->False},PlotRange->8, ImageSize->{300,300}];
plane=ExampleData[{"Geometry3D","SpaceShuttle"},"Region"];
Manipulate[iShow[TransformedRegion[plane,AffineTransform@RollPitchYawMatrix[{r,p,y},{1,2,3}]]],{{r,0,"roll"},-Pi,Pi,Pi/32},{{p,0,"pitch"},-Pi,Pi,Pi/32},{{y,0,"yaw"},-Pi,Pi,Pi/32},SaveDefinitions->True]

Euler Rotations

ring3={Red,CapForm->None,Tube[{{-.1,0,0},{.1,0,0}},3],Line[{{{0,0,4},{0,0,3}},-{{0,0,4},{0,0,3}}}]};
ring2={Blue,CapForm->None,Tube[{{-.1,0,0},{.1,0,0}},2],Line[{{{0,3,0},{0,2,0}},-{{0,3,0},{0,2,0}}}]};
ring1={Green,CapForm->None,Tube[{{-.1,0,0},{.1,0,0}},1],Black,Arrow[{{-1,0,0},{1,0,0}}],Line[{{{0,0,1},{0,0,2}},-{{0,0,1},{0,0,2}}}]};
gimbal[{α_,β_,γ_}]:=
Graphics3D[{GeometricTransformation[ring3,EulerMatrix[{α,0,0}]],GeometricTransformation[ring2,EulerMatrix[{α,β,0}]],GeometricTransformation[ring1,EulerMatrix[{α,β,γ}]]},
ViewPoint->{1.3, -2.4, 2.},PlotRange->3.5,ImageSize->Medium];
gimbalframes=Table[gimbal[{i,i,i}],{i,0,2Pi,Pi/32}];
Manipulate[gimbalframes[[i]],{{i,1,"time"},1,Length[gimbalframes],1},SaveDefinitions->True]

Moment of Inertia

Explore new capabilities covering physical parameters of a rigid body, including rotational inertia.

wrench=ExampleData[{"Geometry3D","Wrench"},"Region"]

point={-8,-0.168,0};
Show[wrench,Graphics3D[{PointSize[Large],Point[point]}],ViewPoint->{0,-∞,0}]

ℐ=MomentOfInertia[wrench,point]

Region Moments

Support of polynomial moments of a region in Version 11 provides powerful and flexible tools to compare, classify and compute properties over regions.

RegionMoment[Disk[],{0,0}]

RegionMoment[CapsuleShape[],{2,0,0}]

RegionMoment[Cone[{{0,0,0},{0,0,1}},r],{2,0,0}]

Plotting over Regions

Wolfram Language functions for visualizing functions and data now support arbitrary regions for the most control over domains and slices.

Plot3D[Sin[x+Cos[y]],{x,y}∈Disk[{0,0},3]]

Symbolic PDEs over Regions

Version 11 adds extensive support for symbolic and numerical solutions of boundary value problems over regions.

leqn=(Laplacian[u[x,y], {x,y}])==0;

dcond = DirichletCondition[u[x, y]==Sin[6ArcTan[y/x]], True];

Ω=Disk[{0,0},3];

sol=DSolveValue[{leqn,dcond},u[x,y],{x,y}∈Ω]

Plot3D[sol,{x,y}∈Ω,PlotRange->All,PlotStyle->Hue[0.5],Exclusions->None]

Eigensystem over Regions

Compute the acoustic eigenvalues and eigenfunctions for an approximation of a cross section through a Mini.

img=Import["http://upload.wikimedia.org/wikipedia/commons/d/d3/Mini_cross_section.jpg"]

boundary=;

bdr=BoundaryDiscretizeGraphics[boundary]

{vals,funs}=NDEigensystem[{-Laplacian[u[x,y],{x,y}]},u[x,y],{x,y}∈bdr,6]

Show[img,ContourPlot[funs[[2]],{x,y}∈bdr,Axes->None,Frame->None,AspectRatio->Automatic,ColorFunction->Function[f,{Opacity[0.75],ColorData["TemperatureMap"][f]}]],ImageSize->Automatic]

Gallery of Plot Themes

mesh=Import["ExampleData/seashell.stl"];
label[{name_,__}]:=Style[name,Directive[11,Gray,FontFamily->"Helvetica"]];
label[name_]:=Style[name,Directive[11,Gray,FontFamily->"Helvetica"]];
iFrame[mesh_,theme_,opts:OptionsPattern[]]:=
Framed[Labeled[Show[MeshRegion[mesh,{ ImageSize->{145,145}},PlotTheme->theme],TicksStyle->10],label[theme],Top,FrameMargins->{{0,0},{0,0}}],FrameStyle->Directive[Thickness[4],Gray],RoundingRadius->5];
Grid[Partition[iFrame[mesh,#]&/@{"Lines","Polygons","SmoothShading","Monochrome","DarkMesh","LightMesh","Scientific","Detailed","Marketing","BoldColor","NeonColor","RoyalColor"},3,3,1,{}]]

Conclusion

Geometry Capabilities

New special regions including Annulus, SphericalShell, AffineSpace and more.

New mesh region constructors from arrays, images or meshes.

Built-in plot themes to easily tailor plots for mesh-based regions.

Comprehensive support of fixed-frame or moving-frame rotations in 3D.

Directly print 3D solid regions.

New and improved region properties, including moment of inertia for regions.

Enhanced support for solving partial differential equations over regions.

More Information

Geometry guide page

Marketing pages

Geometry Talks

Geometry Lab: From 3D Printing to Game Engines
          Wednesday 4:00-5:00PM
          Badger

3D Printing
          Wednesday 5:00-5:30PM
          Spartan / Golden Gopher

Meshes From Everywhere
          Thursday 9:30-10:00AM
          Spartan / Golden Gopher

Game Engines
          Friday 4:30-5:00PM
          Fighting Illini