Jump to content
  • Advertisement
Sign in to follow this  
Bourbaki

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.

If you intended to correct an error in the post then please contact us.

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


Link to post
Share on other sites
Advertisement
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
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!