Intersection of two parametric surfaces (governing equation)

48 Views Asked by At

in order to solve the interaction between two parametric surfaces (represented as Bezier oder B-Splines) i need to "solve" the non linear equation system.

As both surfaces are depended in two variables (e.g. u,v and s,t), it results in a 4 unknown, 3 known underconstrained system. By setting on of the 4 values either 0 or 1, a boarder is represented and the system reduces to a 3x3 system.

A neat way to solve the system (as there are often more than one root) is to use the projected polyhedron algorithm represented by Sherbrooke and Patrikalakis. In order to use their trick one has to transform the system in a multivariante bernstein form.

To my problem:
I haven't found yet literature that would give me the idea how to represented the multivariante berstein form of the non linear equation system defined by two tensor product splines e.g.:

Tensor surface 1: $ F(u,v) = \sum_{i}^n \sum_{j}^m f_{i,j} *N_{i,p}(u) *N_{j,q}(v) $
Tensor surface 2: $ G(s,t) = \sum_{k}^n \sum_{l}^m g_{k,l} *N_{k,p}(s) *N_{l,q}(t) $

the intersection of the two surfaces is therefore:

$$H(u,v,s,t) = F(u,v) - G(s,t) = 0$$
$$H^{(x)} = \sum_{i}^n \sum_{j}^m f^{(x)}_{i,j} *N_{i,p}(u) *N_{j,q}(v) - \sum_{k}^n \sum_{l}^m g^{(x)}_{k,l} *N_{k,p}(s) *N_{l,q}(t) = 0$$
$$H^{(y)} = \sum_{i}^n \sum_{j}^m f^{(y)}_{i,j} *N_{i,p}(u) *N_{j,q}(v) - \sum_{k}^n \sum_{l}^m g^{(y)}_{k,l} *N_{k,p}(s) *N_{l,q}(t) = 0$$
$$H^{(z)} = \sum_{i}^n \sum_{j}^m f^{(z)}_{i,j} *N_{i,p}(u) *N_{j,q}(v) - \sum_{k}^n \sum_{l}^m g^{(z)}_{k,l} *N_{k,p}(s) *N_{l,q}(t) = 0$$

To be able to solve the system (from my understanding so far) i need to represent the right hand side of those equation in a form: $$ H(u,v,s,t) = \sum_{i}^n \sum_{j}^m \sum_{k}^n \sum_{l}^m h_{i,j,k,l} * N_{i,p}(u) * N_{j,q}(v)* N_{k,p}(s) *N_{l,q}(t)$$

The struggle that i have is to make the arithmetic operation on Bernstein level in order to calculate the new control points $h_{i,j,k,l}$. An example of the system of equation (unfortunatly only in monomial form) can be found in the Book by Hoffmann "Geometric and solid modeling" on page 223

1

There are 1 best solutions below

0
On

Firstly, I’d advise against trying to write a surface-surface intersection function. Numerous very smart people in the CAD industry have been trying to do this reliably for four decades, and their results are still flawed. Just go find an existing algorithm, instead. The best ones are in packages like Parasolid or ACIS. These are expensive, but you’ll probably be able to get them for free if you’re a student or academic. A free alternative is OpenCascade. It’s not as good as the other two, but almost certainly better than anything you could write yourself with reasonable effort.

I’m not familiar with the algorithm you mentioned. But, if you want to find the quantities $h_{i,j,k,l}$ in your last equation, the easiest approach is interpolation. Choose a sufficiently large set of $(u,v,s,t)$ values and plug them into your last equation. This will give you a system of linear equations that you can solve to get the $h_{i,j,k,l}$. You have to be a bit careful about how you choose the $(u,v,s,t)$ values — choosing poorly distributed values will give you a linear system that does not have a unique solution. You might have to read about the Schoenberg-Whitney condition if you get into trouble.