Parallel curve


A parallel of a curve is the envelope of a family of congruent circles centered on the curve. It generalises the concept of parallel (straight) lines. It can also be defined as a curve whose points are at a constant normal distance from a given curve.[1] These two definitions are not entirely equivalent as the latter assumes smoothness, whereas the former does not.[2]
In computer-aided design the preferred term for a parallel curve is offset curve.[2][3][4] (In other geometric contexts, the term offset can also refer to translation.[5]) Offset curves are important, for example, in numerically controlled machining, where they describe, for example, the shape of the cut made by a round cutting tool of a two-axis machine. The shape of the cut is offset from the trajectory of the cutter by a constant distance in the direction normal to the cutter trajectory at every point.[6]
In the area of 2D computer graphics known as vector graphics, the (approximate) computation of parallel curves is involved in one of the fundamental drawing operations, called stroking, which is typically applied to polylines or polybeziers (themselves called paths) in that field.[7]
Except in the case of a line or circle, the parallel curves have a more complicated mathematical structure than the progenitor curve.[1] For example, even if the progenitor curve is smooth, its offsets may not be so; this property is illustrated in the top figure, using a sine curve as progenitor curve.[2] In general, even if a curve is rational, its offsets may not be so. For example, the offsets of a parabola are rational curves, but the offsets of an ellipse or of a hyperbola are not rational, even though these progenitor curves themselves are rational.[3]
The notion also generalizes to 3D surfaces, where it is called an offset surface or parallel surface.[8] Increasing a solid volume by a (constant) distance offset is sometimes called dilation.[9] The opposite operation is sometimes called shelling.[8] Offset surfaces are important in numerically controlled machining, where they describe the shape of the cut made by a ball nose end mill of a three-axis machine.[10] Other shapes of cutting bits can be modelled mathematically by general offset surfaces.[11]
Parallel curve of a parametrically given curve
If there is a regular parametric representation of the given curve available, the second definition of a parallel curve (s. above) leads to the following parametric representation of the parallel curve with distance Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle |d| } :
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d(t)=\vec x(t)+d\vec n(t)} with the unit normal .
In cartesian coordinates:
The distance parameter may be negative. In this case, one gets a parallel curve on the opposite side of the curve (see diagram on the parallel curves of a circle). One can easily check that a parallel curve of a line is a parallel line in the common sense, and the parallel curve of a circle is a concentric circle.
Geometric properties:[12]
- Failed to parse (Conversion error. Server ("https://wikimedia.org/api/rest_") reported: "Cannot get mml. Server problem."): {\displaystyle {\vec {x}}'_{d}(t)\parallel {\vec {x}}'(t),\quad } that means: the tangent vectors for a fixed parameter are parallel.
- Failed to parse (Conversion error. Server ("https://wikimedia.org/api/rest_") reported: "Cannot get mml. Server problem."): {\displaystyle k_{d}(t)={\frac {k(t)}{1+dk(t)}},\quad } with Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle k(t)} the curvature of the given curve and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle k_d(t)} the curvature of the parallel curve for parameter Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle t} .
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_d(t)=R(t) + d,\quad} with Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle R(t)} the radius of curvature of the given curve and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_d(t)} the radius of curvature of the parallel curve for parameter Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle t} .
- When they exist, the osculating circles to parallel curves at corresponding points are concentric. [13]
- As for parallel lines, a normal line to a curve is also normal to its parallels.
- When parallel curves are constructed they will have cusps when the distance from the curve matches the radius of curvature. These are the points where the curve touches the evolute.
- If the progenitor curve is a boundary of a planar set and its parallel curve is without self-intersections, then the latter is the boundary of the Minkowski sum of the planar set and the disk of the given radius.
If the given curve is polynomial (meaning that Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle x(t)} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle y(t)} are polynomials), then the parallel curves are usually not polynomial. In CAD area this is a drawback, because CAD systems use polynomials or rational curves. In order to get at least rational curves, the square root of the representation of the parallel curve has to be solvable. Such curves are called pythagorean hodograph curves and were investigated by R.T. Farouki.[14]
Parallel curves of an implicit curve
Generally the analytic representation of a parallel curve of an implicit curve is not possible. Only for the simple cases of lines and circles the parallel curves can be described easily. For example:
- Line Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \; f(x,y)=x+y-1=0\; } → distance function: Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \; h(x,y)=\frac{x+y-1}{\sqrt{2}}=d\; } (Hesse normalform)
- Circle Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \; f(x,y)=x^2+y^2-1=0\;} → distance function: Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \; h(x,y)=\sqrt{x^2+y^2}-1=d\; .}
In general, presuming certain conditions, one can prove the existence of an oriented distance function . In practice one has to treat it numerically.[15] Considering parallel curves the following is true:
- The parallel curve for distance d is the level set Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle h(x,y)=d} of the corresponding oriented distance function Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle h} .
Properties of the distance function:[12][16]
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle | \operatorname{grad} h (\vec x)|=1 \; ,}
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle h(\vec x+d\operatorname{grad} h (\vec x)) = h(\vec x)+d \; ,}
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \operatorname{grad}h(\vec x+d\operatorname{grad}h (\vec x))= \operatorname{grad}h (\vec x) \; .}
Example:
The diagram shows parallel curves of the implicit curve with equation Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \; f(x,y)=x^4+y^4-1=0\; .}
Remark:
The curves Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \; f(x,y)=x^4+y^4-1=d\; }
are not parallel curves, because Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \; | \operatorname{grad} f (x,y)|=1 \;}
is not true in the area of interest.
Further examples

- The involutes of a given curve are a set of parallel curves. For example: the involutes of a circle are parallel spirals (see diagram).
And:[17]
- A parabola has as (two-sided) offsets rational curves of degree 6.
- A hyperbola or an ellipse has as (two-sided) offsets an algebraic curve of degree 8.
- A Bézier curve of degree n has as (two-sided) offsets algebraic curves of degree 4n − 2. In particular, a cubic Bezier curve has as (two-sided) offsets algebraic curves of degree 10.
Parallel curve to a curve with a corner

When determining the cutting path of part with a sharp corner for machining, you must define the parallel (offset) curve to a given curve that has a discontinuous normal at the corner. Even though the given curve is not smooth at the sharp corner, its parallel curve may be smooth with a continuous normal, or it may have cusps when the distance from the curve matches the radius of curvature at the sharp corner.
Normal fans
As described above, the parametric representation of a parallel curve, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d(t)} , to a given curver, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(t)} , with distance is:
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d(t) = \vec x(t) + d\vec n(t)} with the unit normal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(t)} .
At a sharp corner (Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle t = t_c} ), the normal to Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(t_c)} given by Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(t_c)} is discontinuous, meaning the one-sided limit of the normal from the left Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(t_c^-)} is unequal to the limit from the right Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(t_c^+)} . Mathematically,
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(t_c^-) = \lim_{t \to t_c^-}\vec n(t) \ne \vec n(t_c^+) = \lim_{t \to t_c^+}\vec n(t)} .

However, we can define a normal fan[11] Failed to parse (Conversion error. Server ("https://wikimedia.org/api/rest_") reported: "Cannot get mml. Server problem."): {\displaystyle {\vec {n}}_{f}(\alpha )} that provides an interpolant between Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(t_c^-)} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(t_c^+)} , and use Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n_f(\alpha)} in place of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(t_c)} at the sharp corner:
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n_f(\alpha) = \frac{(1 - \alpha)\vec n(t_c^-) + \alpha\vec n(t_c^+)}{\lVert (1 - \alpha)\vec n(t_c^-) + \alpha\vec n(t_c^+) \rVert},\quad} where Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle 0 < \alpha < 1} .
The resulting definition of the parallel curve Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d(t)} provides the desired behavior:
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d(t) = \begin{cases} \vec x(t) + d\vec n(t), & \text{if }t < t_c\text{ or }t > t_c \\ \vec x(t_c) + d\vec n_f(\alpha), & \text{if }t = t_c\text{ where }0 < \alpha < 1 \end{cases}}
Algorithms
[icon] | This section needs expansion. You can help by adding to it. (August 2014) |
In general, the parallel curve of a Bézier curve is not another Bézier curve, a result proved by Tiller and Hanson in 1984.[18] Thus, in practice, approximation techniques are used. Any desired level of accuracy is possible by repeatedly subdividing the curve, though better techniques require fewer subdivisions to attain the same level of accuracy. A 1997 survey by Elber, Lee and Kim[19] is widely cited, though better techniques have been proposed more recently. A modern technique based on curve fitting, with references and comparisons to other algorithms, as well as open source JavaScript source code, was published in a blog post[20] in September 2022.
Another efficient algorithm for offsetting is the level approach described by Kimmel and Bruckstein (1993).[21]
Parallel (offset) surfaces
Offset surfaces are important in numerically controlled machining, where they describe the shape of the cut made by a ball nose end mill of a three-axis mill.[10] If there is a regular parametric representation Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(u,v) = (x(u,v),y(u,v),z(u,v))} of the given surface available, the second definition of a parallel curve (see above) generalizes to the following parametric representation of the parallel surface with distance Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle |d| } :
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d(u,v)=\vec x(u,v)+d\vec n(u,v)} with the unit normal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n_d(u,v) = {{{\partial \vec x \over \partial u} \times {\partial \vec x \over \partial v}} \over {|{{\partial \vec x \over \partial u} \times {\partial \vec x \over \partial v}}|}}} .
Distance parameter Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle d} may be negative, too. In this case one gets a parallel surface on the opposite side of the surface (see similar diagram on the parallel curves of a circle). One easily checks: a parallel surface of a plane is a parallel plane in the common sense and the parallel surface of a sphere is a concentric sphere.
Geometric properties:[22]
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle {\partial \vec x_d \over \partial u} \parallel {\partial \vec x \over \partial u}, \quad {\partial \vec x_d \over \partial v} \parallel {\partial \vec x \over \partial v}, \quad} that means: the tangent vectors for fixed parameters are parallel.
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n_d(u,v) = \pm\vec n(u,v), \quad} that means: the normal vectors for fixed parameters match direction.
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_d = (1 + d S)^{-1} S, \quad} where Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_d} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S} are the shape operators for Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x} , respectively.
- The principal curvatures are the eigenvalues of the shape operator, the principal curvature directions are its eigenvectors, the Gaussian curvature is its determinant, and the mean curvature is half its trace.
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_d^{-1} = S^{-1} + d I, \quad} where Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_d^{-1}} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S^{-1}} are the inverses of the shape operators for Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x} , respectively.
- The principal radii of curvature are the eigenvalues of the inverse of the shape operator, the principal curvature directions are its eigenvectors, the reciprocal of the Gaussian curvature is its determinant, and the mean radius of curvature is half its trace.
Note the similarity to the geometric properties of parallel curves.
Generalizations
The problem generalizes fairly obviously to higher dimensions e.g. to offset surfaces, and slightly less trivially to pipe surfaces.[23] Note that the terminology for the higher-dimensional versions varies even more widely than in the planar case, e.g. other authors speak of parallel fibers, ribbons, and tubes.[24] For curves embedded in 3D surfaces the offset may be taken along a geodesic.[25]
Another way to generalize it is (even in 2D) to consider a variable distance, e.g. parametrized by another curve.[22] One can for example stroke (envelope) with an ellipse instead of circle[22] as it is possible for example in METAFONT.[26]

More recently Adobe Illustrator has added somewhat similar facility in version CS5, although the control points for the variable width are visually specified.[27] In contexts where it's important to distinguish between constant and variable distance offsetting the acronyms CDO and VDO are sometimes used.[9]
General offset curves
Assume you have a regular parametric representation of a curve, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(t) = (x(t),y(t))} , and you have a second curve that can be parameterized by its unit normal, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n)} , where the normal of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n) = \vec n} (this parameterization by normal exists for curves whose curvature is strictly positive or negative, and thus convex, smooth, and not straight). The parametric representation of the general offset curve of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(t)} offset by Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n)} is:
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d(t)=\vec x(t)+ \vec d(\vec n(t)), \quad} where Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(t)} is the unit normal of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(t)} .
Note that the trival offset, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n) = d\vec n} , gives you ordinary parallel (aka, offset) curves.
Geometric properties:[22]
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x'_d(t) \parallel \vec x'(t),\quad} that means: the tangent vectors for a fixed parameter are parallel.
- As for parallel lines, a normal to a curve is also normal to its general offsets.
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle k_d(t)=\dfrac{k(t)}{1+\dfrac{k(t)}{k_n(t)}},\quad} with Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle k_d(t)} the curvature of the general offset curve, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle k(t)} the curvature of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(t)} , and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle k_n(t)} the curvature of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n(t))} for parameter Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle t} .
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_d(t)=R(t) + R_n(t),\quad} with Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle R_d(t)} the radius of curvature of the general offset curve, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle R(t)} the radius of curvature of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(t)} , and the radius of curvature of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n(t))} for parameter Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle t} .
- When general offset curves are constructed they will have cusps when the curvature of the curve matches curvature of the offset. These are the points where the curve touches the evolute.
General offset surfaces
General offset surfaces describe the shape of cuts made by a variety of cutting bits used by three-axis end mills in numerically controlled machining.[11] Assume you have a regular parametric representation of a surface, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(u,v) = (x(u,v),y(u,v),z(u,v))} , and you have a second surface that can be parameterized by its unit normal, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n)} , where the normal of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n) = \vec n} (this parameterization by normal exists for surfaces whose Gaussian curvature is strictly positive, and thus convex, smooth, and not flat). The parametric representation of the general offset surface of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(t)} offset by Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n)} is:
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d(u,v)=\vec x(u,v)+ \vec d(\vec n(u,v)), \quad} where Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(u,v)} is the unit normal of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(u,v)} .
Note that the trival offset, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n) = d\vec n} , gives you ordinary parallel (aka, offset) surfaces.
Geometric properties:[22]
- As for parallel lines, the tangent plane of a surface is parallel to the tangent plane of its general offsets.
- As for parallel lines, a normal to a surface is also normal to its general offsets.
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_d = (1 + SS_n^{-1})^{-1} S, \quad} where Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_d, S,} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_n} are the shape operators for Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d, \vec x,} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n)} , respectively.
- The principal curvatures are the eigenvalues of the shape operator, the principal curvature directions are its eigenvectors, the Gaussian curvature is its determinant, and the mean curvature is half its trace.
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_d^{-1} = S^{-1} + S_n^{-1}, \quad} where Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_d^{-1}, S^{-1}} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_n^{-1}} are the inverses of the shape operators for Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d, \vec x,} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n)} , respectively.
- The principal radii of curvature are the eigenvalues of the inverse of the shape operator, the principal curvature directions are its eigenvectors, the reciprocal of the Gaussian curvature is its determinant, and the mean radius of curvature is half its trace.
Note the similarity to the geometric properties of general offset curves.
Derivation of geometric properties for general offsets
The geometric properties listed above for general offset curves and surfaces can be derived for offsets of arbitrary dimension. Assume you have a regular parametric representation of an n-dimensional surface, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(\vec u)} , where the dimension of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec u} is n-1. Also assume you have a second n-dimensional surface that can be parameterized by its unit normal, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n)} , where the normal of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n) = \vec n} (this parameterization by normal exists for surfaces whose Gaussian curvature is strictly positive, and thus convex, smooth, and not flat). The parametric representation of the general offset surface of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(\vec u)} offset by Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n)} is:
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d(\vec u) = \vec x(\vec u)+ \vec d(\vec n(\vec u)), \quad} where Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec n(\vec u)} is the unit normal of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(\vec u)} . (The trival offset, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n) = d\vec n} , gives you ordinary parallel surfaces.)
First, notice that the normal of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(\vec u) = } the normal of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n(\vec u)) = \vec n(\vec u),} by definition. Now, we'll apply the differential w.r.t. Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec u} to Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d} , which gives us its tangent vectors spanning its tangent plane.
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \partial\vec x_d(\vec u) = \partial\vec x(\vec u)+ \partial\vec d(\vec n(\vec u))}
Notice, the tangent vectors for Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d} are the sum of tangent vectors for Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(\vec u)} and its offset Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n)} , which share the same unit normal. Thus, the general offset surface shares the same tangent plane and normal with Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(\vec u)} and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n(\vec u))} . That aligns with the nature of envelopes.
We now consider the Weingarten equations for the shape operator, which can be written as Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \partial\vec n = -\partial\vec xS} . If Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S} is invertable, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \partial\vec x = -\partial\vec nS^{-1}} . Recall that the principal curvatures of a surface are the eigenvalues of the shape operator, the principal curvature directions are its eigenvectors, the Gauss curvature is its determinant, and the mean curvature is half its trace. The inverse of the shape operator holds these same values for the radii of curvature.
Substituting into the equation for the differential of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x_d} , we get:
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \partial\vec x_d = \partial\vec x - \partial\vec n S_n^{-1},\quad} where Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_n} is the shape operator for Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec d(\vec n(\vec u))} .
Next, we use the Weingarten equations again to replace Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \partial\vec n} :
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \partial\vec x_d = \partial\vec x + \partial\vec x S S_n^{-1},\quad} where Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S} is the shape operator for Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \vec x(\vec u)} .
Then, we solve for Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \partial\vec x} and multiple both sides by Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle -S} to get back to the Weingarten equations, this time for Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \partial\vec x_d} :
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \partial\vec x_d (I + S S_n^{-1})^{-1} = \partial\vec x,}
- Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle -\partial\vec x_d (I + S S_n^{-1})^{-1}S = -\partial\vec xS = \partial\vec n.}
Thus, Failed to parse (Conversion error. Server ("https://wikimedia.org/api/rest_") reported: "Cannot get mml. Server problem."): {\displaystyle S_{d}=(I+SS_{n}^{-1})^{-1}S} , and inverting both sides gives us, Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle S_d^{-1} = S^{-1} + S_n^{-1}} .
See also
- Bump mapping
- Distance function and signed distance function
- Distance field
- Offset printing
- Tubular neighborhood
References
- ^ 1.0 1.1 Willson, Frederick Newton (1898). Theoretical and Practical Graphics. Macmillan. p. 66. ISBN 978-1-113-74312-1.
- ^ 2.0 2.1 2.2 Devadoss, Satyan L.; O'Rourke, Joseph (2011). Discrete and Computational Geometry. Princeton University Press. pp. 128–129. ISBN 978-1-4008-3898-1.
- ^ 3.0 3.1 Sendra, J. Rafael; Winkler, Franz; Pérez Díaz, Sonia (2007). Rational Algebraic Curves: A Computer Algebra Approach. Springer Science & Business Media. p. 10. ISBN 978-3-540-73724-7.
- ^ Agoston, Max K. (2005). Computer Graphics and Geometric Modelling: Mathematics. Springer Science & Business Media. p. 586. ISBN 978-1-85233-817-6.
- ^ Vince, John (2006). Geometry for Computer Graphics: Formulae, Examples and Proofs. Springer Science & Business Media. p. 293. ISBN 978-1-84628-116-7.
- ^ Marsh, Duncan (2006). Applied Geometry for Computer Graphics and CAD (2nd ed.). Springer Science & Business Media. p. 107. ISBN 978-1-84628-109-9.
- ^ Mark Kilgard (2012-04-10). "CS 354 Vector Graphics & Path Rendering". www.slideshare.net. p. 28.
- ^ 8.0 8.1 Agoston, Max K. (2005). Computer Graphics and Geometric Modelling. Springer Science & Business Media. pp. 638–645. ISBN 978-1-85233-818-3.
- ^ 9.0 9.1 http://www.cc.gatech.edu/~jarek/papers/localVolume.pdf, p. 3
- ^ 10.0 10.1 Faux, I. D.; Pratt, Michael J. (1979). Computational Geometry for Design and Manufacture. Halsted Press. ISBN 978-0-47026-473-7. OCLC 4859052.
- ^ 11.0 11.1 11.2 Brechner, Eric (1990). Envelopes and tool paths for three-axis end milling (PhD). Rensselaer Polytechnic Institute.
- ^ 12.0 12.1 E. Hartmann: Geometry and Algorithms for COMPUTER AIDED DESIGN. S. 30.
- ^ Fiona O'Neill: Planar Bertrand Curves (with Pictures!).
- ^ Rida T. Farouki: Pythagorean-Hodograph Curves: Algebra and Geometry Inseparable (Geometry and Computing). Springer, 2008, ISBN 978-3-540-73397-3.
- ^ E. Hartmann: Geometry and Algorithms for COMPUTER AIDED DESIGN. S. 81, S. 30, 41, 44.
- ^ Thorpe, John A. (1994-10-27). Elementary Topics in Differential Geometry. New York Heidelberg: Springer Science & Business Media. ISBN 0-387-90357-7.
- ^ http://faculty.engineering.ucdavis.edu/farouki/wp-content/uploads/sites/41/2013/02/Introduction-to-PH-curves.pdf Archived 2015-06-05 at the Wayback Machine, p. 16 "taxonomy of offset curves"
- ^ Tiller, Wayne; Hanson, Eric (1984). "Offsets of Two-Dimensional Profiles". IEEE Computer Graphics and Applications. 4 (9): 36–46. doi:10.1109/mcg.1984.275995. S2CID 9046817.
- ^ Elber, Gershon; Lee, In-Kwon; Kim, Myung-Soo (May–Jun 1997). "Comparing offset curve approximation methods". IEEE Computer Graphics and Applications. 17 (3): 62–71. doi:10.1109/38.586019.
- ^ Levien, Raph (September 9, 2022). "Parallel curves of cubic Béziers". Retrieved September 9, 2022.
- ^ Kimmel, R.; Bruckstein, A.M. (1993). "Shape offsets via level sets" (PDF). Computer-Aided Design. 25 (3). Elsevier BV: 154–162. doi:10.1016/0010-4485(93)90040-u. ISSN 0010-4485. S2CID 8434463.
- ^ 22.0 22.1 22.2 22.3 22.4 Brechner, Eric L. (1992). "5. General Offset Curves and Surfaces". In Barnhill, Robert E. (ed.). Geometry Processing for Design and Manufacturing. SIAM. pp. 101–. ISBN 978-0-89871-280-3.
- ^ Pottmann, Helmut; Wallner, Johannes (2001). Computational Line Geometry. Springer Science & Business Media. pp. 303–304. ISBN 978-3-540-42058-3.
- ^ Chirikjian, Gregory S. (2009). Stochastic Models, Information Theory, and Lie Groups, Volume 1: Classical Results and Geometric Methods. Springer Science & Business Media. pp. 171–175. ISBN 978-0-8176-4803-9.
- ^ Sarfraz, Muhammad, ed. (2003). Advances in geometric modeling. Wiley. p. 72. ISBN 978-0-470-85937-7.
- ^ https://www.tug.org/TUGboat/tb16-3/tb48kinc.pdf [bare URL PDF]
- ^ http://design.tutsplus.com/tutorials/illustrator-cs5-variable-width-stroke-tool-perfect-for-making-tribal-designs--vector-4346 application of the generalized version in Adobe Illustrator CS5 (also video)
- Josef Hoschek: Offset curves in the plane. In: CAD. 17 (1985), S. 77–81.
- Takashi Maekawa: An overview of offset curves and surfaces. In: CAD. 31 (1999), S. 165–173.
Further reading
- Farouki, R. T.; Neff, C. A. (1990). "Analytic properties of plane offset curves". Computer Aided Geometric Design. 7 (1–4): 83–99. doi:10.1016/0167-8396(90)90023-K.
- Piegl, Les A. (1999). "Computing offsets of NURBS curves and surfaces". Computer-Aided Design. 31 (2): 147–156. CiteSeerX 10.1.1.360.2793. doi:10.1016/S0010-4485(98)00066-9.
- Porteous, Ian R. (2001). Geometric Differentiation: For the Intelligence of Curves and Surfaces (2nd ed.). Cambridge University Press. pp. 1–25. ISBN 978-0-521-00264-6.
- Patrikalakis, Nicholas M.; Maekawa, Takashi (2010) [2002]. Shape Interrogation for Computer Aided Design and Manufacturing. Springer Science & Business Media. Chapter 11. Offset Curves and Surfaces. ISBN 978-3-642-04074-0. Free online version.
- Anton, François; Emiris, Ioannis Z.; Mourrain, Bernard; Teillaud, Monique (May 2005). "The O set to an Algebraic Curve and an Application to Conics". International Conference on Computational Science and its Applications. Singapore: Springer Verlag. pp. 683–696.
- Farouki, Rida T. (2008). Pythagorean-Hodograph Curves: Algebra and Geometry Inseparable. Springer Science & Business Media. pp. 141–178. ISBN 978-3-540-73397-3. Pages listed are the general and introductory material.
- Au, C. K.; Ma, Y.-S. (2013). "Computation of Offset Curves Using a Distance Function: Addressing a Key Challenge in Cutting Tool Path Generation". In Ma, Y.-S. (ed.). Semantic Modeling and Interoperability in Product and Process Engineering: A Technology for Engineering Informatics. Springer Science & Business Media. pp. 259–273. ISBN 978-1-4471-5073-2.
External links
- Parallel curves on MathWorld
- Visual Dictionary of Plane Curves Xah Lee
- http://library.imageworks.com/pdfs/imageworks-library-offset-curve-deformation-from-Skeletal-Anima.pdf application to animation; patented as U.S. patent 8,400,455
- http://www2.uah.es/fsegundo/Otros/Offset/16-SanSegundoSendraSendra-1532.pdf