# Bijective parameterized surfaces

This topic is 4268 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Greetings, Does anyone happen to know if there exists something similar to NURBS that features an inverse function? sufrace: R^2 -> R^3 forall x \in R^2, surface^-1|surface(x): R^3 -> R^2 the surface would be non intersecting in R^3 and it is continous (should be at least C^2+) Maybe someone knows if theres something like a picking routine for NURBS that does something similar numerically. Thanks N.

##### Share on other sites
You have a parameterized surface (x(s,t),y(s,t),z(s,t)) and you want to know what (s,t) generates a surface point (x0,y0,z0). This gives you three equations in two unknowns: x(s,t) = x0, y(s,t) = y0, z(s,t) = z0. Generally, this is over constrained but knowing the point is on the surface, one of the three equations is redundant (the three equations are "functionally dependent").
For the sake of argument, suppose that x(s,t) = x0 and y(s,t) = y0 are the functionally independent equations.

For a NURBS surface, the x(s,t) = u(s,t)/w(s,t) and y(s,t) = v(s,t)/w(s,t), where u, v, and w are polynomials in s and t. You then have u(s,t) - x0*w(s,t) = 0 and v(s,t) - y0*w(s,t) = 0, which are two polynomial equations in two unknowns. One of the variables may be eliminated, say t, to obtain p(s) = 0, a higher-degree polynomial equation of a single variable. (Search on "resultant of polynomials" and/or "elimination theory").

The mathematics is clear but numerical construction of polynomial roots is not robust when using a fixed-size floating-point arithmetic system. Arbitrary precision systems are better to use for finding the roots. Once you (numerically) construct a root s of p(s) = 0, you can replace this in u(s,t) - x0*w(s,t) = 0 and solve for t. Verify that this (s,t) pair satisfies v(s,t) = y0*w(s,t) = 0 (obtaining p(s) can introduce extraneous solutions).

For picking, you can set up a similar system of polynomial equations. You have a line (or ray or segment) r*(x1,y1,z1)+(x0,y0,z0). To intersect the surface, you need x(s,t) = r*x1+x0, y(s,t) = r*y1+y0, and z(s,t) = r*z1+z0. For NURBS, introduce again u(s,t), v(s,t), and w(s,t). You get three polynomial equations in three variables (r, s, and t). Elimination theory again allows you to obtain a single polynomial (of higher-degree). Etc. Etc.

1. 1
Rutin
18
2. 2
3. 3
JoeJ
12
4. 4
5. 5

• 16
• 18
• 10
• 13
• 17
• ### Forum Statistics

• Total Topics
631694
• Total Posts
3001746
×