Advanced Geometry
with Splines

Charles Pooh, Wolfram Research

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

Wolfram Geometric Computation

A core part of the Wolfram Language

Comprehensive set of integrated tools and solutions

Modeling, analyzing, visualizing and synthesizing geometry

Tailored to everyone’s needs from beginners to advanced

Multi-Paradigm Modeling

Model geometric regions using meshes

Constructive solid geometry, Implicit representation and more

Combine and transform regions to create new ones

Comprehensive Data Exchange

Increase workflow efficiency

A wide range of 3D geometric and modeling formats — STL, OBJ, DAE …

Exchange data with external services through APIs

High-Quality Graphics

Render geometric regions with insightful structure or realistic appearance.

Use our document-based notebook interface

Dynamically interact with 2D and 3D renderings of your model

Insightful Visualization

Visualizing your data and functions over geometric regions.

Rich collection of highly automated plots

Computational Geometry

Extensive collection of state-of-the-art geometric algorithms

Analyze and understand spatial structures

Advanced Mesh Processing

Flexible and efficient mesh processing pipeline

Construct triangle and polygon meshes

Remove topological or geometrical errors

Re-meshing to improve the mesh quality

Geometry Everywhere

Solve equations and problems with geometric constraints.

Bridge domains and analyze geometry using graphs

Reconstruct geometry from images

QuadraticOptimization[Norm[x1-x2]^2,{x1∈,x2∈},{x1,x2},];

Show[,,Graphics3D[{Line[{x1,x2}],Blue,PointSize[0.025],Point[{x1,x2}]}/. Last[%]]]

3D Printing

Bring your ideas to life in the real world with 3D printing

Create 3D printable models from plots and geometric modeling

Immediately print on your own 3D printer

Printout3D[, "Sculpteo"]

Games, AR & VR

Create interactive simulations for games, AR and VR

Interoperability with both Wolfram Engine and Unity game engine

Programmatic CAD

Create 3D CAD Objects

Full control over the modeling process

Make designs that are defined by configurable parameters

CSGRegion["Difference",{Cylinder[{{0,0,-15},{0,0,15}},10],CSGRegion["Union",{Cylinder[{{-9,-10,0},{-9,10,0}},5],Cylinder[{{9,-10,0},{9,10,0}},5],Cuboid[{-12,-10,0},{-4,10,10}],Cuboid[{12,-10,0},{4,10,10}],Cylinder[{{0,0,-8},{0,0,16}},8],Cylinder[{{0,0,-16},{0,0,16}},4],Cylinder[{{0,-14,8},{0,14,8}},2],CSGRegion["Difference",{Cuboid[{-11,-12,8},{11,12,18}],Cylinder[{{0,-14,8},{0,14,8}},4]}]}]}];CSGRegion["Union",{%,Translate[Rotate[Rotate[%,180Degree,{1,0,0}],90Degree,{0,0,1}],{0,0,16}],CSGRegion["Union",{Cylinder[{{0,-12,8},{0,12,8}},1.5],Cylinder[{{-12,0,8},{12,0,8}},1.5],Ball[{0,0,8},4]}]}]

Splines

Piecewise polynomial parametric curves or surfaces

Simplicity and accuracy of evaluation

Approximate complex shapes through curve fitting

Manipulate[Graphics[{Blue,BSplineCurve[pts,SplineDegree->3]}],{{pts,{{0,0},{1,1},{2,-1},{3,0},{4,-2},{5,1}}},{-2,-2},{2,2},Locator},AutorunSequencing->{{3,5},4,2}]

Modeling with Splines

BSplineCurve — NURB curve

BSplineSurface — NURB surface

BoundarySplineRegion — NURB region

cpts=Table[{i,j,RandomReal[{-1,1}]},{i,5},{j,5}];
b=Graphics3D[{Opacity[0.6],BSplineSurface[cpts]}];
Show[Graphics3D[{PointSize[Medium],Red,Map[Point,cpts],Gray,Line[cpts],Line[Transpose[cpts]]}],b,Boxed->False]

Geometry with Splines

Spline-base regions work just like any other region

Deeply integrated in the Wolfram Language

curve=Region[BSplineCurve[{{0,0},{1,1},{2,-1},{3,0}}, SplineDegree->2]]

ArcLength[curve]

surface=Region[BSplineSurface[Table[{i,j,RandomReal[{-1,1}]},{i,5},{j,5}]]]

Area[surface]

Future

Modeling — Splines and more geometric regions

Analysis — Spline subsystems  (meshes, splines, …)

Verticals — CAD, AR/VR, …

Usability — Auto visualization, Performance, …

BooleanRegion[Xor,{Disk[{-1/3,0}],Disk[{1/3,0}]}]

Integration —  Wolfram Compiler, Data structures, …

Education —  Documentation, Courses, Books, …

Office Hour: Geometry
Friday, 1 PM - 2 PM

Wolfram R&D Youtube Channel
youtube.com/@WolframRD

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