Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Implicit surface
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Surface in 3D space defined by an implicit function of three variables}} [[File:Torus-40-15.svg|thumb|Implicit surface torus {{math|1=(''R'' = 40, ''a'' = 15)}}.]] [[File:Impl-flaeche-geschl2.svg|thumb|Implicit surface of genus 2.]] [[File:Impl-flaeche-weinglas.svg|150px|thumb|Implicit non-algebraic surface (''wineglass'').]] In [[mathematics]], an '''implicit surface''' is a [[Surface (geometry)|surface]] in [[Euclidean space]] defined by an equation : <math>F(x,y,z)=0.</math> An ''implicit surface'' is the set of [[Zero of a function|zeros]] of a [[Function of several real variables|function of three variables]]. ''[[Implicit function|Implicit]]'' means that the equation is not solved for {{mvar|x}} or {{mvar|y}} or {{mvar|z}}. The graph of a function is usually described by an equation <math>z=f(x,y)</math> and is called an ''explicit'' representation. The third essential description of a surface is the ''[[Parametric equation|parametric]]'' one: <math>(x(s,t),y(s,t), z(s,t))</math>, where the {{mvar|x}}-, {{mvar|y}}- and {{mvar|z}}-coordinates of surface points are represented by three functions <math>x(s,t)\, , y(s,t)\, , z(s,t)</math> depending on common parameters <math>s,t</math>. Generally the change of representations is simple only when the explicit representation <math>z=f(x,y)</math> is given: <math>z-f(x,y)=0</math> (implicit), <math> (s,t,f(s,t)) </math> (parametric). ''Examples'': #The [[Plane (geometry)|plane]] <math> x+2y-3z+1=0.</math> #The [[Sphere (geometry)|sphere]] <math> x^2+y^2+z^2-4=0.</math> #The [[Torus (mathematics)|torus]] <math>(x^2+y^2+z^2+R^2-a^2)^2-4R^2(x^2+y^2)=0. </math> #A surface of [[Genus (mathematics)|genus]] 2: <math>2y(y^2-3x^2)(1-z^2)+(x^2+y^2)^2-(9z^2-1)(1-z^2)=0</math> (see diagram). #The [[surface of revolution]] <math> x^2+y^2-(\ln(z+3.2))^2-0.02=0</math> (see diagram ''wineglass''). For a plane, a sphere, and a torus there exist simple parametric representations. This is not true for the fourth example. The [[implicit function theorem]] describes conditions under which an equation <math>F(x,y,z)=0</math> can be solved (at least implicitly) for {{mvar|x}}, {{mvar|y}} or {{mvar|z}}. But in general the solution may not be made explicit. This theorem is the key to the computation of essential geometric features of a surface: [[tangent plane]]s, [[surface normals]], [[Gaussian curvature|curvatures]] (see below). But they have an essential drawback: their visualization is difficult. If <math>F(x,y,z)</math> is polynomial in {{mvar|x}}, {{mvar|y}} and {{mvar|z}}, the surface is called [[Algebraic surface|algebraic]]. Example 5 is ''non''-algebraic. Despite difficulty of visualization, implicit surfaces provide relatively simple techniques to generate theoretically (e.g. [[Steiner surface]]) and practically (see below) interesting surfaces. == Formulas == Throughout the following considerations the implicit surface is represented by an equation <math>F(x,y,z)=0</math> where function <math>F</math> meets the necessary conditions of differentiability. The [[partial derivative]]s of <math>F</math> are <math>F_x,F_y,F_z,F_{xx},\ldots</math>. === Tangent plane and normal vector === A surface point <math>(x_0, y_0,z_0)</math> is called '''regular''' [[if and only if]] the [[gradient]] of <math>F</math> at <math>(x_0, y_0,z_0)</math> is not the zero vector <math>(0, 0, 0)</math>, meaning :<math> (F_x(x_0,y_0,z_0),F_y(x_0,y_0,z_0),F_z(x_0,y_0,z_0))\ne (0,0,0)</math>. If the surface point <math>(x_0, y_0,z_0)</math> is ''not'' regular, it is called '''singular'''. The equation of the tangent plane at a regular point <math>(x_0,y_0,z_0)</math> is :<math>F_x(x_0,y_0,z_0)(x-x_0)+F_y(x_0,y_0,z_0)(y-y_0)+F_z(x_0,y_0,z_0)(z-z_0)=0,</math> and a ''normal vector'' is :<math> \mathbf n(x_0,y_0,z_0)=(F_x(x_0,y_0,z_0),F_y(x_0,y_0,z_0),F_z(x_0,y_0,z_0))^T.</math> === Normal curvature === In order to keep the formula simple the arguments <math>(x_0,y_0,z_0)</math> are omitted: : <math>\kappa_n = \frac{\mathbf v^\top H_F\mathbf v}{\|\operatorname{grad} F\|}</math> is the normal curvature of the surface at a regular point for the unit tangent direction <math> \mathbf v</math>. <math>H_F</math> is the [[Hessian matrix]] of <math>F</math> (matrix of the second derivatives). The proof of this formula relies (as in the case of an implicit curve) on the implicit function theorem and the formula for the normal curvature of a [[parametric surface]]. == Applications of implicit surfaces == As in the case of implicit curves it is an easy task to generate implicit surfaces with desired shapes by applying algebraic operations (addition, multiplication) on simple primitives. [[File:Epotfl-4ladung.svg|thumb|Equipotential surface of 4 point charges]] === Equipotential surface of point charges === {{Main article|Equipotential}} The electrical potential of a point charge <math>q_i</math> at point <math>\mathbf p_i=(x_i,y_i,z_i)</math> generates at point <math> \mathbf p=(x,y,z)</math> the potential (omitting physical constants) : <math>F_i(x,y,z)=\frac{q_i}{\|\mathbf p -\mathbf p_i\|}.</math> The equipotential surface for the potential value <math>c</math> is the implicit surface <math> F_i(x,y,z)-c=0 </math> which is a sphere with center at point <math>\mathbf p_i</math>. The potential of <math>4</math> point charges is represented by : <math>F(x,y,z)=\frac{q_1}{\|\mathbf p -\mathbf p_1\|}+ \frac{q_2}{\|\mathbf p -\mathbf p_2\|}+ \frac{q_3}{\|\mathbf p -\mathbf p_3\|}+\frac{q_4}{\|\mathbf p -\mathbf p_4\|}.</math> For the picture the four charges equal 1 and are located at the points <math>(\pm 1,\pm 1,0)</math>. The displayed surface is the equipotential surface (implicit surface) <math>F(x,y,z)-2.8=0</math>. === Constant distance product surface === A Cassini oval can be defined as the point set for which the product of the distances to two given points is constant (in contrast, for an ellipse the ''sum'' is constant). In a similar way implicit surfaces can be defined by a constant distance product to several fixed points. In the diagram ''metamorphoses'' the upper left surface is generated by this rule: With : <math> \begin{align} F(x,y,z) = {} & \sqrt{(x-1)^2+y^2+z^2}\cdot \sqrt{(x+1)^2+y^2+z^2} \\ & \quad \cdot \sqrt{x^2+(y-1)^2+z^2}\cdot\sqrt{x^2+(y+1)^2+z^2} \end{align} </math> the constant distance product surface <math>F(x,y,z)-1.1=0</math> is displayed. [[File:Metamorphose-torus-4ppfl.svg|400px|thumb|Metamorphoses between two implicit surfaces: a torus and a constant distance product surface.]] === Metamorphoses of implicit surfaces === A further simple method to generate new implicit surfaces is called ''metamorphosis'' or ''[[homotopy]]'' of implicit surfaces: For two implicit surfaces <math>F_0(x,y,z)=0, F_1(x,y,z)=0</math> (in the diagram: a constant distance product surface and a torus) one defines new surfaces using the design parameter <math> \mu \in [0,1]</math>: :<math>F_\mu (x,y,z)=\mu F_1(x,y,z)+(1-\mu)\,F_0(x,y,z)=0</math> In the diagram the design parameter is successively <math>\mu=0, \, 0.33, \, 0.66, \, 1</math> . [[File:Approx-3tori.svg|240px|thumb|Approximation of three tori ([[parallel projection]])]] [[File:Approx-3tori-pov.png|280px|thumb|[[POV-Ray]] image (central projection) of an approximation of three tori.]] === Smooth approximations of several implicit surfaces === <math>\Pi</math>-surfaces <ref name="RaposoGomes2019">{{cite news|author1=Adriano N. Raposo|author2=Abel J.P. Gomes|title=Pi-surfaces: products of implicit surfaces towards constructive composition of 3D objects|date=2019|publisher=WSCG 2019 27. International Conference in Central Europe on Computer Graphics, Visualization and Computer Vision|arxiv=1906.06751}}</ref> can be used to approximate any given smooth and bounded object in <math>R^3</math> whose surface is defined by a single polynomial as a product of subsidiary polynomials. In other words, we can design any smooth object with a single algebraic surface. Let us denote the defining polynomials as <math>f_i\in\mathbb{R}[x_1,\ldots,x_n](i=1,\ldots,k)</math>. Then, the approximating object is defined by the polynomial :<math>F(x,y,z) = \prod_i f_i(x,y,z) - r</math><ref name="RaposoGomes2019"/> where <math>r\in\mathbb{R}</math> stands for the blending parameter that controls the approximating error. Analogously to the smooth approximation with implicit curves, the equation :<math>F(x,y,z)=F_1(x,y,z)\cdot F_2(x,y,z)\cdot F_3(x,y,z) -r= 0</math> represents for suitable parameters <math>c</math> smooth approximations of three intersecting tori with equations : <math> \begin{align} F_1=(x^2+y^2+z^2+R^2-a^2)^2-4R^2(x^2+y^2)=0, \\[3pt] F_2=(x^2+y^2+z^2+R^2-a^2)^2-4R^2(x^2+z^2)=0, \\[3pt] F_3=(x^2+y^2+z^2+R^2-a^2)^2-4R^2(y^2+z^2)=0. \end{align} </math> (In the diagram the parameters are <math> R=1, \, a=0.2, \, r=0.01.</math>) [[File:Metamorphose-kugel-6pfl.png|400px|thumb|POV-Ray image: metamorphoses between a sphere and a constant distance product surface (6 points).]] == Visualization of implicit surfaces == There are various algorithms for [[rendering (computer graphics)|rendering]] implicit surfaces,<ref name="BloomenthalBajaj1997">{{cite book|author1=Jules Bloomenthal|author2=Chandrajit Bajaj|author3=Brian Wyvill|title=Introduction to Implicit Surfaces|url=https://books.google.com/books?id=T3SSqIVnS4YC&q=%22implicit+surface%22+rendering|date=15 August 1997|publisher=Morgan Kaufmann|isbn=978-1-55860-233-5}}</ref> including the [[marching cubes algorithm]].<ref name="Stephenson2004">{{cite book|author=Ian Stephenson|title=Production Rendering: Design and Implementation|url=https://books.google.com/books?id=krTfLA5b940C|date=1 December 2004|publisher=Springer Science & Business Media|isbn=978-1-85233-821-3}}</ref> Essentially there are two ideas for visualizing an implicit surface: One generates a net of polygons which is visualized (see [[surface triangulation]]) and the second relies on [[Ray tracing (graphics)|ray tracing]] which determines intersection points of rays with the surface.<ref>Eric Haines, Tomas Akenine-Moller: ''Ray Tracing Gems'', Springer, 2019, {{ISBN|978-1-4842-4427-2}}</ref> The intersection points can be approximated by ''sphere tracing'', using a [[signed distance function]] to find the distance to the surface.<ref>{{Cite book|last1=Hardy|first1=Alexandre|url=https://books.google.com/books?id=IGtIWmM2GWIC&dq=%22sphere+tracing%22&pg=PA369|title=Mathematical Tools in Computer Graphics with C# Implementations|last2=Steeb|first2=Willi-Hans|date=2008|publisher=World Scientific|isbn=978-981-279-102-3|language=en}}</ref> == External links == === Implicit surface software === ==== Free implicit surface software ==== Open-source or free software supporting algebraic implicit surface modelling: * [http://k3dsurf.sourceforge.net/ K3DSurf] — A program to visualize and manipulate Mathematical models in 3-6 dimensions. K3DSurf supports Parametric equations and Isosurfaces * '''[[CGAL]]''' (Computational Geometry Algorithms Library), written in C++, has strong support for implicit surface modeling (Boolean operations on implicit surfaces, Surface meshing for visualization, Implicit curve arrangements). * '''[[PyVista]]'''<ref>PyVista: https://github.com/pyvista/pyvista/blob/main/LICENSE</ref>{{better source|date=January 2025}}, a Python wrapper around [[VTK]] for easier handling of implicit surfaces. Simplified API for rendering and manipulating implicit surfaces. It can integrate with [[numpy]]. * Some '''[[Blender (software)|Blender]]''' add-ons (metaballs and volumetric modeling for implicit surfaces, and scripting support for custom implicit functions). * '''[[SculptsFEM]]'''{{citation needed|date=January 2025}} (for solving PDEs on implicit surfaces, Implicit curve generation) * ImpliSolid<ref>ImpliSolid [https://github.com/sohale/implisolid]</ref> (open-source), supports sharp edges. * '''[[Houdini]]''' (supports implicit surface modeling using SDFs and procedural techniques). Houdini Apprentice License is free.<ref>cgwiki: Volumes: Houdini & CG tips: https://tokeru.com/cgwiki/HoudiniVolumes.html (accessed on 20 January 2025)</ref> * '''[[POV-Ray]]''' (Persistence of Vision Raytracer) has built-in support for defining complex implicit surfaces.<ref>https://www.povray.org/documentation/view/3.7.0/301/</ref> * Vision-based surface reconstruction use implicit functions for statistical modelling of surfaces: SDFStudio,<ref>SDFStudio: [https://github.com/autonomousvision/sdfstudio]</ref> Geo-Neus,<ref>Geo-Neus [https://github.com/GhiXu/Geo-Neus]</ref> PointSDF,<ref>PointSDF: [https://github.com/mvandermerwe/PointSDF]</ref> etc. * Various other software exist for polygonization of implicit surfaces, in context of [[Marching cubes]], and in general [[Image-based meshing]] and [[Category:Mesh generation]], but they are not necessary based on an algebraic close-form field. ==== Industrial or commercial software using implicit surface software ==== * '''[[Altair Inspire]]'''<ref>(Stochastic) Lattice Design using Implicit Modeling in Altair by Patrick J. Flynn</ref><ref>Welch, Ken. "Altair Inspire 2023: ... Implicit Modeling Solution." Altair Blog, 30 November 2023. Available at: [https://altair.com/blog/executive-insights/altair-inspire-2023-the-markets-best-in-class-implicit-modeling-solution]. Accessed 20 January 2025.</ref>{{better source|reason=Source that are independent from the software authors are requested per the policy [[WP:OR]]|date=January 2025}} * '''Studio RM''', a [[Geologic modelling]] software by [[Datamine Software]]. * '''[[Maple (software)|Maple]]''' has a library for plotting implicit surfaces. == See also == * [[Implicit curve]] == References == <references /> ==Further reading== *Gomes, A., Voiculescu, I., Jorge, J., Wyvill, B., Galbraith, C.: ''[https://books.google.com/books?id=mEmzjKMDlcAC&q=%22marching+cubes%22 Implicit Curves and Surfaces: Mathematics, Data Structures and Algorithms]'', 2009, Springer-Verlag London, {{ISBN|978-1-84882-405-8}} *Thorpe: ''Elementary Topics in Differential Geometry'', Springer-Verlag, New York, 1979, {{ISBN|0-387-90357-7}} {{Dimension topics}} [[Category:Surfaces]] [[Category:Computer-aided design]] [[Category:Geometry processing]] [[Category:Implicit surface modeling]] {{Mesh generation}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Better source
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite news
(
edit
)
Template:Dimension topics
(
edit
)
Template:ISBN
(
edit
)
Template:Main article
(
edit
)
Template:Math
(
edit
)
Template:Mesh generation
(
edit
)
Template:Mvar
(
edit
)
Template:Short description
(
edit
)