Why Orientation Across a Seam Needs a Check
A surface assembled from parametrized patches has an orientation on each patch, determined by the order of its parameters. Those local choices must fit together along shared seams. Otherwise, the collection may describe the desired geometric surface while assigning inconsistent orientations to its pieces.
A seam is a curve that is part of the boundary of two adjacent patches. Along it, one patch approaches the curve from one side and the other patch approaches from the other side. Checking compatibility involves two related ideas: compare the patches’ oriented normals using a common reference direction, and check that the boundary directions induced along the seam point oppositely.
Oriented Normals and a Common Reference
Let a regular parametrized patch be given by \(\mathbf{r}(u,v)\). Its parameter-order normal is
The patch is regular wherever \(\mathbf{N}\ne\mathbf{0}\). Reversing the parameter order reverses the normal, since \(\mathbf{r}_v\times\mathbf{r}_u=-\mathbf{N}\). Thus, the normal records the orientation chosen by the parametrization, not just the geometric location of the patch.
Suppose two patches share a seam, and choose a reference vector \(\mathbf{a}\) along that seam. It must be nonzero and must not be perpendicular to either patch normal at the point being checked. The signs of \(\mathbf{N}_1\cdot\mathbf{a}\) and \(\mathbf{N}_2\cdot\mathbf{a}\) then tell whether each oriented normal points toward the same side of the reference direction. If the intended orientation is the side indicated by \(\mathbf{a}\), both dot products should be positive. If both are negative, both point to the opposite side. If the signs differ, the patches disagree relative to that reference.
The reference need not be perpendicular to the seam, and the two patch normals need not be parallel. For a smooth join, they should point in the same direction. At a crease, they may differ, while both still point toward the intended side. In either situation, \(\mathbf{a}\) must be chosen so its dot product with each normal is nonzero; a zero dot product gives no sign information.
The Seam-Direction Test
The normal comparison is useful, but matching signs against a reference alone does not establish that the orientations fit along the seam. For that, examine the direction each oriented patch assigns to its boundary at the seam.
For an oriented patch, let \(\boldsymbol{\nu}\) be an outward-pointing co-normal along its boundary: a tangent vector to the patch, perpendicular to the seam, and pointing outward from the patch’s parameter region. The induced boundary tangent direction is given, up to positive scaling, by
where \(\mathbf{n}\) is the patch’s oriented unit normal. This convention means that the ordered pair \((\boldsymbol{\nu},\mathbf{t})\) has the patch’s orientation: \(\boldsymbol{\nu}\times\mathbf{t}=\mathbf{n}\). The formula follows because \(\mathbf{n}\times\boldsymbol{\nu}\) is tangent to the patch and perpendicular to \(\boldsymbol{\nu}\), and \(\boldsymbol{\nu}\times(\mathbf{n}\times\boldsymbol{\nu})=\mathbf{n}\) when \(\boldsymbol{\nu}\) and \(\mathbf{n}\) are unit and perpendicular.
For two adjacent patches, their outward co-normals at a shared seam point toward opposite sides within the joined surface. If their seam directions are compatible, the induced boundary tangents must therefore oppose one another. This makes the seam-boundary test especially valuable at a crease, where simply asking whether the two normals are parallel would be inappropriate.
Worked Example: Two Coplanar Patches with Compatible Orientations
Worked Example: Two Coplanar Patches with Compatible Orientations
Consider the left and right halves of a rectangle in the plane \(z=0\):
The seam is the segment \((0,y,0)\), \(0\le y\le1\). First compute the normals:
Choose the common reference direction \(\mathbf{a}=(0,0,1)\). Then
Both patches point toward the same side. Now check their seam directions. On patch 1, the seam is at \(u=0\), so an outward co-normal is \(\boldsymbol{\nu}_1=(1,0,0)\). On patch 2, it is at \(s=0\), so an outward co-normal is \(\boldsymbol{\nu}_2=(-1,0,0)\). Hence
The induced seam directions are opposite, so the orientations are compatible. As a final check, both vectors are tangent to the seam, and \(\mathbf{t}_1+\mathbf{t}_2=(0,0,0)\).
Worked Example: Compatible Orientations at a Crease
Worked Example: Compatible Orientations at a Crease
Consider a horizontal patch meeting a sloping patch along the \(y\)-axis:
Both patches meet at \((0,y,0)\). Their parameter derivatives and normals are
The normals differ, as expected at a crease. Use the common reference direction \(\mathbf{a}=(0,0,1)\). Its dot products with the normals are
Thus both oriented normals have a positive component in the reference direction. For the seam test, patch 1 has outward co-normal \(\boldsymbol{\nu}_1=(1,0,0)\). Patch 2 has outward co-normal \(\boldsymbol{\nu}_2=(-1,0,-1)\), which is perpendicular to the seam tangent \((0,1,0)\), tangent to patch 2, and points away from the patch interior. The induced directions are
The second vector is a negative multiple of the first, so the two directions oppose one another. The orientations are compatible even though the normals are not identical. As checks, both induced vectors are tangent to the \(y\)-axis, and \(\mathbf{t}_1+\tfrac12\mathbf{t}_2=(0,0,0)\).
Worked Example: Detecting a Reversed Parameter Order
Worked Example: Detecting a Reversed Parameter Order
Keep the left patch from the first example, but parametrize the right half using the parameters in the opposite order:
The second parametrization covers the same right half, but its derivatives give
With reference direction \(\mathbf{a}=(0,0,1)\), the dot products are \(\mathbf{N}_1\cdot\mathbf{a}=1\) and \(\mathbf{N}_2\cdot\mathbf{a}=-1\). The signs disagree, so the patches do not face the same reference side.
The seam on patch 2 is \(t=0\), and its outward co-normal is \(\boldsymbol{\nu}_2=(-1,0,0)\). Its induced seam direction is
Patch 1 also induces \(\mathbf{t}_1=(0,1,0)\), so the seam directions agree rather than oppose. This is incompatible. If the right patch is instead parametrized by \(\widetilde{\mathbf{r}}_2(s,t)=(s,t,0)\), its normal is \((0,0,1)\), its induced seam direction is \((0,-1,0)\), and both checks pass.
As a final check on the correction, the new normal has dot product \(1\) with \(\mathbf{a}\), while the corrected seam directions sum to \((0,0,0)\). The geometric image did not change; only the parameter order, and therefore the orientation, changed.
Why the Boundary Directions Must Oppose
The seam-direction rule follows from how an oriented surface assigns a direction to its boundary. For each patch, let \(\boldsymbol{\nu}\) point outward within the patch and let \(\mathbf{n}\) be its oriented normal. The boundary tangent \(\mathbf{t}=\mathbf{n}\times\boldsymbol{\nu}\) satisfies \(\boldsymbol{\nu}\times\mathbf{t}=\mathbf{n}\), so it is precisely the direction required by the patch orientation and the outward-first convention.
At a shared seam, the two patches occupy opposite sides of that seam. Their outward co-normals therefore point toward opposite sides of the joined surface. For a single consistent orientation on the joined surface, traversing the seam as the boundary of one patch must be the reverse of traversing it as the boundary of the other. Thus the two induced boundary tangents must be negatives of one another. If they instead agree, one patch’s orientation is reversed relative to the other along the seam.
Common Mistake: Comparing the Shapes but Ignoring the Parameters
A frequent error is to conclude that two patches have compatible orientations because their images fit together without a gap. In the third example, both parameterizations describe the same two halves of the rectangle. Yet the second patch’s reversed parameter order changes its normal from \((0,0,1)\) to \((0,0,-1)\). The reference dot products then have opposite signs, and the induced seam directions point the same way.
Another error is to demand that neighboring normals be identical. That condition is too strong at a crease: in the second example, the normals \((0,0,1)\) and \((-1,0,1)\) differ, while both have positive dot product with the upward reference and their seam directions oppose. Compare normals with an appropriate reference, and use the induced boundary directions to test the seam itself.
The reference must also be chosen carefully. If \(\mathbf{N}_i\cdot\mathbf{a}=0\) for either patch, the reference is perpendicular to that normal and cannot distinguish its orientation. Choose a different vector with nonzero dot products. A reference test is local: if the normals vary along the seam, verify the signs along the seam, not just at one convenient point.
Check Your Understanding
Use the normal comparison and seam-direction test to answer these questions.
- Why does reversing the order of the parameters reverse the oriented normal?
- What must be true of the common reference vector’s dot products with the two patch normals for it to distinguish their orientations?
- What relationship must hold between the two induced boundary directions along a compatible shared seam?
- Why can two patches at a crease be compatible even when their oriented normals are not parallel?
- For the patch \(\mathbf{r}(u,v)=(u,v,0)\), what oriented normal results if the parameter order is changed to \((v,u)\), and how does its dot product with \((0,0,1)\) compare with the original?