What’s New in Geometry

Charles Pooh, Wolfram Research

(RowDefault[, (Spacer1), , (Spacer1), ])  #WolframTechConf

What’s New in Geometry

This talk will cover

Usability

Basic Regions

Region Transformations

Region Reconstruction

Constructive Solid Geometry

Usability: Geometric Transformations

GeometricTransformation, Rotate, Translate, Scale can be used for geometric regions.

reg=Rotate[Rectangle[],30 Degree];

RegionQ[reg]

Perimeter[reg]

Usability: Working Precision

Support of WorkingPrecision in most geometric functions.

reg=ImplicitRegion[x^2+y^2+z^2<=1&&(x-1/2)^2+y^2+z^2<=1,{x,y,z}];

Volume[reg]

reg=ImplicitRegion[x^2+y^2-z^2<=1&&x^2-y^2+z^2<=1,{x,y,z}];

Volume[reg]

Options[Volume,WorkingPrecision]

Basic Regions: Torus

Graphics3D[Torus[],Boxed->False]

RegionQ[Torus[]]

RegionDimension[Torus[]]

Area[Torus[]]

Basic Regions: FilledTorus

Graphics3D[FilledTorus[],Boxed->False]

RegionQ[FilledTorus[]]

RegionDimension[FilledTorus[]]

Volume[FilledTorus[]]

Region Transformations: RegionCongruent

({{, , , , , , , , }, {, , "translate", , "rotate", , "reflect", , }})

RegionCongruent[,]

FindRegionTransform[,]

Region Transformations: RegionSimilar

({{, , , , , , , , , , }, {, , "translate", , "rotate", , "reflect", , "scale", , }})

RegionSimilar[Rectangle[],Parallelogram[{0,0},{{2,0},{0,2}}]]

FindRegionTransform[Rectangle[],Parallelogram[{0,0},{{2,0},{2,2}}]]

Region Reconstruction

({{, , , , }})

({{, , , (Spacer1), , , }, {"oriented points", , "mesh", , "oriented points", , "mesh"}, {"2D", , , , "3D", , }})

({{({{, , , , }}), (Spacer1), }, {"2D", , "3D"}})

Region Reconstruction: RegionFit

({{, , , , }})

data =Point[ ];

FittedRegion[data,"Cylinder"]

Graphics3D[{data,FittedRegion[data,"Cylinder"]}]

Histogram[FittedRegion[data,"Cylinder","Distances"]]

Region Reconstruction: RegionFit

Possible 2D specifications include:

({{      , , "Line", infinite line}, {      , , "Circle", circle}})

Possible 3D specifications include:

({{      , , "Line", infinite line}, {      , , "Circle", circle}, {      , , "Plane", plane}, {      , , "Sphere", sphere}, {      , , "Cylinder", cylinder}, {      , , "Cone", cone}})

Region Reconstruction: ConcaveHull

({{({{, , , , }}), (Spacer1), }, {"2D", , "3D"}})

pts=Point[Flatten[Table[{i,j,1/4Sin[j^2+i]},{i,0,Pi,0.1},{j,0,Pi,0.1}],1]];

Graphics3D[pts]

ConcaveHullMesh[pts ]

Region Reconstruction: ConcaveHull

({{({{, , , , }}), (Spacer1), }, {"2D", , "3D"}})

pts=Point[RandomSample[ExampleData[{"Geometry3D","StanfordBunny"},"VertexData"],3000]];

Graphics3D[pts]

Manipulate[ConcaveHullMesh[pts,α],{{α,0.01},0.001,0.05}]

Region Reconstruction: GradientFittedMesh

({{, , , (Spacer1), , , }, {"oriented points", , "mesh", , "oriented points", , "mesh"}, {"2D", , , , "3D", , }})

pts =Point[ExampleData[{"Geometry3D","Beethoven"},"VertexData"],VertexNormals->ExampleData[{"Geometry3D","Beethoven"},"VertexNormals"]];

Graphics3D[pts]

GradientFittedMesh[pts]

Constructive Solid Geometry

({{, , , , }})

CSGRegion

CSGRegion is also known as constructive solid geometry (CSG) object.

Typically used to construct solid geometric regions by using nested combinations of union, intersection and subtraction of simple geometric primitives.

cylinder=Cylinder[{{0., 0., -0.6}, {0., 0., 0.6}}, 0.3];

CSGRegion["Union", {cylinder, 
       Rotate[cylinder,{{0,0,1},{1,0,0}}], Rotate[cylinder,{{0,0,1},{0,1,0}}]}]

CSGRegion: Operations

The following Boolean operators can be used:

({{      , , "Intersection"}, {      , , "Difference"}, {      , , "Union"}})

CSGRegion[#, {Rotate[cylinder,{{0,0,1},{1,0,0}}],Rotate[cylinder,{{0,0,1},{0,1,0}}]}] & /@ {"Intersection","Difference","Union"}

CSGRegion: 2D Regions

The following 2D solids regions are supported:

({{      , , Disk}, {      , , Ellipsoid}, {      , , Parallelogram}, {      , , Rectangle}, {      , , Triangle}, {      , , RegularPolygon}, {      , , Simplex}, {      , , StadiumShape}})

CSGRegion["Union",{Disk[],Rectangle[]}]

CSGRegion: 3D Regions

The following 3D solids regions are supported:

({{      , , Ball}, {      , , CapsuleShape}, {      , , Cone}, {      , , Cube}, {      , , Cuboid}, {      , , Cylinder}, {      , , Dodecahedron}, {      , , Ellipsoid}, {      , , Icosahedron}, {      , , Octahedron}, {      , , Parallelepiped}, {      , , Prism}, {      , , Pyramid}, {      , , Simplex}, {      , , Tetrahedron}, {      , , Torus}})

CSGRegion: CAD Modeling

CSGRegion["Union",{Cylinder[{{0,0,0},{0,0,3}},2],Cuboid[{-2,-5,0},{2,0,1}],Cuboid[{-2,-5,0},{2,-4,3}]}]

CSGRegion["Union",{Cylinder[{{0,0,-1},{0,0,4}},1],Cylinder[{{0,0,2.5},{0,0,4}},1.5],Cylinder[{{0,-6,3},{0,-4,3}},1.2]}]

CSGRegion["Difference",{%%,%}]

New in 13

Usability

Basic Regions

Region Transformations

Region Reconstruction

Constructive Solid Geometry

Coming Soon ...

Usability

Surface Reconstruction

Spline Modeling

Integration with Wolfram Compiler

Connectivity to External Systems

Physically Based Rendering in 3D Graphics      
Friday 11:00 AM CDT

Progress in Graphs & Networks
Friday 11:30 AM CDT

Constructive Solid Geometry
Friday 12:00 AM CDT

Office Hour: Geometry
Friday 1:00 PM CDT

Office Hour: Graphs & Networks
Friday 2:00 PM CDT

(RowDefault[, (Spacer1), , (Spacer1), ])  #WolframTechConf