Sign in to follow this  

Bijective parameterized surfaces

Recommended Posts

Bourbaki    122
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 this post

Link to post
Share on other sites
Wasting Time    411
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.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this