Implicit curve

From HandWiki
Short description: Plane curve defined by an implicit equation
Cassini ovals:
(1) a=1.1, c=1 (above),
(2) a=c=1 (middle),
(3) a=1, c=1.05 (below)
Implicit curve: [math]\displaystyle{ \sin(x+y)-\cos(xy)+1=0 }[/math]
Implicit curve [math]\displaystyle{ \sin(x+y)-\cos(xy)+1=0 }[/math] as level curves of the surface [math]\displaystyle{ z=\sin(x+y)-\cos(xy)+1 }[/math]

In mathematics, an implicit curve is a plane curve defined by an implicit equation relating two coordinate variables, commonly x and y. For example, the unit circle is defined by the implicit equation [math]\displaystyle{ x^2+y^2=1 }[/math]. In general, every implicit curve is defined by an equation of the form

[math]\displaystyle{ F(x,y)=0 }[/math]

for some function F of two variables. Hence an implicit curve can be considered as the set of zeros of a function of two variables. Implicit means that the equation is not expressed as a solution for either x in terms of y or vice versa.

If [math]\displaystyle{ F(x,y) }[/math] is a polynomial in two variables, the corresponding curve is called an algebraic curve, and specific methods are available for studying it.

Plane curves can be represented in Cartesian coordinates (x, y coordinates) by any of three methods, one of which is the implicit equation given above. The graph of a function is usually described by an equation [math]\displaystyle{ y=f(x) }[/math] in which the functional form is explicitly stated; this is called an explicit representation. The third essential description of a curve is the parametric one, where the x- and y-coordinates of curve points are represented by two functions x(t), y(t) both of whose functional forms are explicitly stated, and which are dependent on a common parameter [math]\displaystyle{ t. }[/math]

Examples of implicit curves include:

  1. a line: [math]\displaystyle{ x+2y-3=0 , }[/math]
  2. a circle: [math]\displaystyle{ x^2+y^2-4=0 , }[/math]
  3. the semicubical parabola: [math]\displaystyle{ x^3-y^2=0 , }[/math]
  4. Cassini ovals [math]\displaystyle{ (x^2+y^2)^2-2c^2(x^2-y^2)-(a^4-c^4)=0 }[/math] (see diagram),
  5. [math]\displaystyle{ \sin(x+y)-\cos(xy)+1=0 }[/math] (see diagram).

The first four examples are algebraic curves, but the last one is not algebraic. The first three examples possess simple parametric representations, which is not true for the fourth and fifth examples. The fifth example shows the possibly complicated geometric structure of an implicit curve.

The implicit function theorem describes conditions under which an equation [math]\displaystyle{ F(x,y)=0 }[/math] can be solved implicitly for x and/or y – that is, under which one can validly write [math]\displaystyle{ x=g(y) }[/math] or [math]\displaystyle{ y=f(x) }[/math]. This theorem is the key for the computation of essential geometric features of the curve: tangents, normals, and curvature. In practice implicit curves have an essential drawback: their visualization is difficult. But there are computer programs enabling one to display an implicit curve. Special properties of implicit curves make them essential tools in geometry and computer graphics.

An implicit curve with an equation [math]\displaystyle{ F(x,y)=0 }[/math] can be considered as the level curve of level 0 of the surface [math]\displaystyle{ z=F(x,y) }[/math] (see third diagram).

Slope and curvature

In general, implicit curves fail the vertical line test (meaning that some values of x are associated with more than one value of y) and so are not necessarily graphs of functions. However, the implicit function theorem gives conditions under which an implicit curve locally is given by the graph of a function (so in particular it has no self-intersections). If the defining relations are sufficiently smooth then, in such regions, implicit curves have well defined slopes, tangent lines, normal vectors, and curvature.

There are several possible ways to compute these quantities for a given implicit curve. One method is to use implicit differentiation to compute the derivatives of y with respect to x. Alternatively, for a curve defined by the implicit equation [math]\displaystyle{ F(x,y)=0 }[/math], one can express these formulas directly in terms of the partial derivatives of [math]\displaystyle{ F }[/math]. In what follows, the partial derivatives are denoted [math]\displaystyle{ F_x }[/math] (for the derivative with respect to x), [math]\displaystyle{ F_y }[/math], [math]\displaystyle{ F_{xx} }[/math] (for the second partial with respect to x), [math]\displaystyle{ F_{xy} }[/math] (for the mixed second partial), [math]\displaystyle{ F_{yy}. }[/math]

Tangent and normal vector

A curve point [math]\displaystyle{ (x_0, y_0) }[/math] is regular if the first partial derivatives [math]\displaystyle{ F_x(x_0,y_0) }[/math] and [math]\displaystyle{ F_y(x_0,y_0) }[/math] are not both equal to 0.

The equation of the tangent line at a regular point [math]\displaystyle{ (x_0,y_0) }[/math] is

[math]\displaystyle{ F_x(x_0,y_0)(x-x_0)+F_y(x_0,y_0)(y-y_0)=0, }[/math]

so the slope of the tangent line, and hence the slope of the curve at that point, is

[math]\displaystyle{ \text{slope} =-\frac{F_x(x_0,y_0)}{F_y(x_0,y_0)}. }[/math]

If [math]\displaystyle{ F_y(x,y)=0 \ne F_x(x,y) }[/math] at [math]\displaystyle{ (x_0,y_0), }[/math] the curve is vertical at that point, while if both [math]\displaystyle{ F_y(x,y)=0 }[/math] and [math]\displaystyle{ F_x(x,y)=0 }[/math] at that point then the curve is not differentiable there, but instead is a singular point – either a cusp or a point where the curve intersects itself.

A normal vector to the curve at the point is given by

[math]\displaystyle{ \mathbf{n}(x_0,y_0) = (F_x(x_0,y_0), F_y(x_0,y_0)) }[/math]

(here written as a row vector).

Curvature

For readability of the formulas, the arguments [math]\displaystyle{ (x_0,y_0) }[/math] are omitted. The curvature [math]\displaystyle{ \kappa }[/math] at a regular point is given by the formula

[math]\displaystyle{ \kappa = \frac{-F_y^2F_{xx}+2F_xF_yF_{xy}-F_x^2F_{yy}}{(F_x^2+F_y^2)^{3/2}} }[/math].[1]

Derivation of the formulas

The implicit function theorem guarantees within a neighborhood of a point [math]\displaystyle{ (x_0,y_0) }[/math] the existence of a function [math]\displaystyle{ f }[/math] such that [math]\displaystyle{ F(x,f(x))=0 }[/math]. By the chain rule, the derivatives of function [math]\displaystyle{ f }[/math] are

[math]\displaystyle{ f'(x)=-\frac{F_x(x,f(x))}{F_y(x,f(x))} }[/math] and [math]\displaystyle{ f''(x)=\frac{-F_y^2F_{xx}+2F_xF_yF_{xy}-F_x^2F_{yy}}{F_y^3} }[/math]

(where the arguments [math]\displaystyle{ (x, f(x)) }[/math] on the right side of the second formula are omitted for ease of reading).

Inserting the derivatives of function [math]\displaystyle{ f }[/math] into the formulas for a tangent and curvature of the graph of the explicit equation [math]\displaystyle{ y = f(x) }[/math] yields

[math]\displaystyle{ y=f(x_0)+f'(x_0)(x-x_0) }[/math] (tangent)
[math]\displaystyle{ \kappa(x_0)=\frac{f''(x_0)}{(1+f'(x_0)^2)^{3/2}} }[/math] (curvature).

Advantage and disadvantage of implicit curves

Disadvantage

The essential disadvantage of an implicit curve is the lack of an easy possibility to calculate single points which is necessary for visualization of an implicit curve (see next section).

Advantages

  1. Implicit representations facilitate the computation of intersection points: If one curve is represented implicitly and the other parametrically the computation of intersection points needs only a simple (1-dimensional) Newton iteration, which is contrary to the cases implicit-implicit and parametric-parametric (see Intersection).
  2. An implicit representation [math]\displaystyle{ F(x,y)=0 }[/math] gives the possibility of separating points not on the curve by the sign of [math]\displaystyle{ F(x,y) }[/math]. This may be helpful for example applying the false position method instead of a Newton iteration.
  3. It is easy to generate curves which are almost geometrically similar to the given implicit curve [math]\displaystyle{ F(x,y)=0, }[/math] by just adding a small number: [math]\displaystyle{ F(x,y)-c=0 }[/math] (see section #Smooth approximations).

Applications of implicit curves

Smooth approximation of a convex polygon
Smooth approximation of 1)one half of a circle, 2) an intersection of two circles

Within mathematics implicit curves play a prominent role as algebraic curves. In addition, implicit curves are used for designing curves of desired geometrical shapes. Here are two examples.

Smooth approximations

Convex polygons

A smooth approximation of a convex polygon can be achieved in the following way: Let [math]\displaystyle{ g_i(x,y)=a_ix+b_iy+c_i=0, \ i=1,\dotsc,n }[/math] be the equations of the lines containing the edges of the polygon such that for an inner point of the polygon [math]\displaystyle{ g_i }[/math] is positive. Then a subset of the implicit curve

[math]\displaystyle{ F(x,y)=g_1(x,y)\cdots g_n(x,y)-c=0 }[/math]

with suitable small parameter [math]\displaystyle{ c }[/math] is a smooth (differentiable) approximation of the polygon. For example, the curves

[math]\displaystyle{ F(x,y)=(x+1)(-x+1)y(-x-y+2)(x-y+2)-c=0 }[/math] for [math]\displaystyle{ c= 0.03, \dotsc, 0.6 }[/math]

contain smooth approximations of a polygon with 5 edges (see diagram).

Pairs of lines

In case of two lines

[math]\displaystyle{ F(x,y)=g_1(x,y)g_2(x,y)-c=0 }[/math]

one gets

a pencil of parallel lines, if the given lines are parallel or
the pencil of hyperbolas, which have the given lines as asymptotes.

For example, the product of the coordinate axes variables yields the pencil of hyperbolas [math]\displaystyle{ xy-c=0, \ c\ne 0 }[/math], which have the coordinate axes as asymptotes.

Others

If one starts with simple implicit curves other than lines (circles, parabolas,...) one gets a wide range of interesting new curves. For example,

[math]\displaystyle{ F(x,y)=y(-x^2-y^2+1)-c=0 }[/math]

(product of a circle and the x-axis) yields smooth approximations of one half of a circle (see picture), and

[math]\displaystyle{ F(x,y)=(-x^2-(y+1)^2+4)(-x^2-(y-1)^2+4)-c=0 }[/math]

(product of two circles) yields smooth approximations of the intersection of two circles (see diagram).

Blending curves

Blending curve (red) of two circles

In CAD one uses implicit curves for the generation of blending curves,[2][3] which are special curves establishing a smooth transition between two given curves. For example,

[math]\displaystyle{ F(x,y)=(1-\mu)f_1f_2-\mu (g_1g_2)^3 =0 }[/math]

generates blending curves between the two circles

[math]\displaystyle{ f_1(x,y)=(x-x_1)^2+y^2-r_1^2=0 , }[/math]
[math]\displaystyle{ f_2(x,y)=(x-x_2)^2+y^2-r_2^2=0 . }[/math]

The method guarantees the continuity of the tangents and curvatures at the points of contact (see diagram). The two lines

[math]\displaystyle{ g_1(x,y)=x-x_1=0 , \ g_2(x,y)=x-x_2=0 }[/math]

determine the points of contact at the circles. Parameter [math]\displaystyle{ \mu }[/math] is a design parameter. In the diagram, [math]\displaystyle{ \mu= 0.05, \dotsc, 0.2 }[/math].

Equipotential curves of two point charges

Equipotential curves of two point charges at the blue points

Equipotential curves of two equal point charges at the points [math]\displaystyle{ P_1=(1,0), \; P_2=(-1,0) }[/math] can be represented by the equation

[math]\displaystyle{ f(x,y)=\frac{1}{|PP_1|}+\frac{1}{|PP_2|}-c }[/math]
[math]\displaystyle{ =\frac{1}{\sqrt{(x-1)^2+y^2}}+\frac{1}{\sqrt{(x+1)^2+y^2}}-c=0 . }[/math]

The curves are similar to Cassini ovals, but they are not such curves.

Visualization of an implicit curve

To visualize an implicit curve one usually determines a polygon on the curve and displays the polygon. For a parametric curve this is an easy task: One just computes the points of a sequence of parametric values. For an implicit curve one has to solve two subproblems:

  1. determination of a first curve point to a given starting point in the vicinity of the curve,
  2. determination of a curve point starting from a known curve point.

In both cases it is reasonable to assume [math]\displaystyle{ \operatorname{grad} F \ne (0,0) }[/math]. In practice this assumption is violated at single isolated points only.

Point algorithm

For the solution of both tasks mentioned above it is essential to have a computer program (which we will call [math]\displaystyle{ \mathsf{CPoint} }[/math]), which, when given a point [math]\displaystyle{ Q_0=(x_0,y_0) }[/math] near an implicit curve, finds a point [math]\displaystyle{ P }[/math] that is exactly on the curve:

(P1) for the start point is [math]\displaystyle{ j=0 }[/math]
(P2) repeat
[math]\displaystyle{ (x_{j+1},y_{j+1})= (x_j,y_j)- \frac{F(x_j,y_j)}{F_x(x_j,y_j)^2+F_y(x_j,y_j)^2}\, \left( F_x(x_j,y_j),F_y(x_j,y_j)\right) }[/math]
( Newton step for function [math]\displaystyle{ g(t)=F\left(x_j+tF_x(x_j,y_j),y_j+tF_y(x_j,y_j)\right) \ . }[/math])
(P3) until the distance between the points [math]\displaystyle{ (x_{j+1},y_{j+1}),\, (x_j,y_j) }[/math] is small enough.
(P4) [math]\displaystyle{ P=(x_{j+1},y_{j+1}) }[/math] is the curve point near the start point [math]\displaystyle{ Q_0 }[/math].

Tracing algorithm

to the tracing algorithm: starting points are green

In order to generate a nearly equally spaced polygon on the implicit curve one chooses a step length [math]\displaystyle{ s }[/math] and

(T1) chooses a suitable starting point in the vicinity of the curve
(T2) determines a first curve point [math]\displaystyle{ P_1 }[/math] using program [math]\displaystyle{ \mathsf{CPoint} }[/math]
(T3) determines the tangent (see above), chooses a starting point on the tangent using step length [math]\displaystyle{ s }[/math] (see diagram) and determines a second curve point [math]\displaystyle{ P_2 }[/math] using program [math]\displaystyle{ \mathsf{CPoint} }[/math] .
[math]\displaystyle{ \cdots }[/math]

Because the algorithm traces the implicit curve it is called a tracing algorithm. The algorithm traces only connected parts of the curve. If the implicit curve consists of several parts it has to be started several times with suitable starting points.

Example: An illustration of the raster algorithm applied to the implicit curve [math]\displaystyle{ F(x,y)=(3x^2-y^2)^2y^2-(x^2+y^2)^4=0 }[/math]. The curve (red) is what the algorithm is trying to draw. The raster points (black) are used as starting points to find the closest points on the curve (red circles). The spacing between each raster point is exaggerated to show the individual curve points; to more accurately trace the curve, more raster points would be used.[4]

Raster algorithm

If the implicit curve consists of several or even unknown parts, it may be better to use a rasterisation algorithm. Instead of exactly following the curve, a raster algorithm covers the entire curve in so many points that they blend together and look like the curve.

(R1) Generate a net of points (raster) on the area of interest of the x-y-plane.
(R2) For every point [math]\displaystyle{ P }[/math] in the raster, run the point algorithm [math]\displaystyle{ \mathsf{CPoint} }[/math] starting from P, then mark its output.

If the net is dense enough, the result approximates the connected parts of the implicit curve. If for further applications polygons on the curves are needed one can trace parts of interest by the tracing algorithm.

Implicit space curves

Any space curve which is defined by two equations

[math]\displaystyle{ \begin{matrix} F(x,y,z)=0, \\ G(x,y,z)=0 \end{matrix} }[/math]

is called an implicit space curve.

A curve point [math]\displaystyle{ (x_0,y_0,z_0) }[/math] is called regular if the cross product of the gradients [math]\displaystyle{ F }[/math] and [math]\displaystyle{ G }[/math] is not [math]\displaystyle{ (0,0,0) }[/math] at this point:

[math]\displaystyle{ \mathbf t(x_0,y_0,z_0)=\operatorname{grad}F(x_0,y_0,z_0)\times \operatorname{grad}G(x_0,y_0,z_0)\ne (0,0,0); }[/math]

otherwise it is called singular. Vector [math]\displaystyle{ \mathbf t(x_0,y_0,z_0) }[/math] is a tangent vector of the curve at point [math]\displaystyle{ (x_0,y_0,z_0). }[/math]

Intersection curve between a sphere and a cylinder

Examples:

[math]\displaystyle{ (1)\quad x+y+z-1=0 \ ,\ x-y+z-2=0 }[/math]

is a line.

[math]\displaystyle{ (2)\quad x^2+y^2+z^2-4=0 \ , \ x+y+z-1=0 }[/math]

is a plane section of a sphere, hence a circle.

[math]\displaystyle{ (3)\quad x^2+y^2-1=0 \ , \ x+y+z-1=0 }[/math]

is an ellipse (plane section of a cylinder).

[math]\displaystyle{ (4)\quad x^2+y^2+z^2-16=0 \ , \ (y-y_0)^2+z^2-9=0 }[/math]

is the intersection curve between a sphere and a cylinder.

For the computation of curve points and the visualization of an implicit space curve see Intersection.

See also

References

  1. Goldman, R. (2005). "Curvature formulas for implicit curves and surfaces". Computer Aided Geometric Design 22 (7): 632–658. doi:10.1016/j.cagd.2005.06.005. 
  2. C. Hoffmann & J. Hopcroft: The potential method for blending surfaces and corners in G. Farin (Ed) Geometric-Modeling, SIAM, Philadelphia, pp. 347-365
  3. E. Hartmann: Blending of implicit surfaces with functional splines, CAD,Butterworth-Heinemann, Volume 22 (8), 1990, p. 500-507
  4. G. Taubin: Distance Approximations for Rastering Implicit Curves. ACM Transactions on Graphics, Vol. 13, No. 1, 1994.
  • Gomes, A., Voiculescu, I., Jorge, J., Wyvill, B., Galbraith, C.: Implicit Curves and Surfaces: Mathematics, Data Structures and Algorithms, 2009, Springer-Verlag London, ISBN:978-1-84882-405-8
  • C:L: Bajaj, C.M. Hoffmann, R.E. Lynch: Tracing surface intersections, Comp. Aided Geom. Design 5 (1988), 285-307.
  • Geometry and Algorithms for COMPUTER AIDED DESIGN

External links