# cubic splines on triangles

There are some conditions for 3-patches to be
C_1. So-called “edges quads” must be coplanar. I build patches with this condition. But! When I visualize these patches with nv_evaluators, these patches don’t fit! Probably, there are some errors in its implementation?

You’ll need to provide a lot more details.

• Matt

http://www.math.utah.edu/~alfeld/talks/S13/4CMP/smry.html

But I think that these conditions are wrong.

Yeah, I tried getting C1 continuity with triangular bezier patches once and it is tough to do. I never managed it myself, but I read that in addition to making the quadrilaterals at the edges of the two patches planar, you also need to make those quadrilaterals affine with the points that define the corners of the two patches. This means that to be able to guarantee C1 continuity, your patches need to be at least degree 4.

j

“you also need to make those quadrilaterals affine with the points that define the corners of the two patches”.

Can you explain it?

Ok, I’ll try, but it is sort of hard to put into words.

Let us say that we have two patches, patch1 and patch2, which we want to have C1 continuity between.

Each of the so called “edge quadrilaterals” between the patches consists of two triangles, one on each side of the boundary between the patches. So any given edge quadrilateral will consist of two triangles, triangle1 and triangle2. Triangle1 consists of 3 of the control points from patch1, and triangle2 consists of 3 of the control points from patch2.

For the two patches to be continuous, you need to be able to transform triangle1 to be the same as the corner control points of patch1 using only rotations, translations, and scaling. The same thing goes for triangle2 and patch2. In addition to this, triangle1 and triangle2 must lie within the same plane.

If these conditions are satisfied for all of the edge quadrilaterals between patch1 and patch2, the two patches will have C1 continuity.

I hope that makes sense to you.

j

Thanks.

Hi,
j, I don’t know where you have read about this “affinity” condition for C1 continuity between two pathes, but I’m sure that coplanarity is enough. It is proved in “Triangular Bezier-Bernstein pathes” G.Farin CAGD 3 (1986). It is in corollary 2.10 which gives such conditions for any order of continuity.

Regards
Martin

Maybe I’m wrong then.

But I have tried before to get C1 continuity between adjacent triangular bezier patches, and simply having the edge quadrilaterals lying in a plane didn’t work. I actually never figured out exactly what was wrong, but I found a web page where somebody mentioned what you call the “affinity” condition.

I can’t find the website anymore, though.

j

This is a hard problem in general. Note also that in many cases, the best approach is actually to mix and match quad and tri patches within a single model.

For a really hard challenge, try this: build a perfect sphere out of rational quadratic triangular patches.

It’s easy enough with rational quadratic quadrilateral patches, but with triangles… and no, the obvious one-tri-patch-per-octant approach does not work.

I believe there is a solution. If there isn’t, don’t blame me.

• Matt

Hi
Matt, look at the article “The octant of a sphere as a non-degenerate triangular Bezier patch” G. Farin, B.Piper, A.J. Worsey CAGD 4(1987)329-332. The final solution (degree 4) is:
(0,0,1)
(a,0,1) (0,a,1)
(b,0,b) (g,g,1) (0,b,b)
(1,0,a) (1,g,g) (g,1,g) (0,1,a)
(1,0,0) (1,a,0) (b,b,0) (a,1,0) (0,1,0)
where
a = (sqrt(3) - 1)/sqrt(3)
b = (sqrt(3) + 1)/2*sqrt(3)
g = 1 - [(5-sqrt(2))(7-sqrt(3))/46]

the weights are:
w(040) = 4sqrt(3)(sqrt(3)-1)
w(031) = 3sqrt(2)
w(202) = 4
w(121) = (3+2sqrt(2) - sqrt(3))sqrt(2/3)
and the map is
400
310 301
220 211 202
130 121 112 103
040 031 022 013 004
The other weights follow by symmetry.
So I think they have soved the problem. Since the proof is not given in the article and I’ve not tried this, I can only suppose the claim is right, but also no a disproof is known to me. This solution also is nonsingular, as stated by the authors. I hope I’ve have correctly written the formulas .
By the way in the same article is mentioned about a solutions with rational biquadratics, given by Peigl’s and Farouki’s[Piegl’86’87, Faraoki’85] with 9 coefficients, but I’ve didn’t know it.
Regards
Martin

[This message has been edited by martin_marinov (edited 06-02-2001).]

So there is no rational triangular quadratic solution? I know the 8-patch rational biquadratic solution, which is easy but suffers from the singularities at the poles.

Of course, if all you’re doing is drawing a sphere, it’s pretty silly to go through all that effort to make the patches. Better to just use the icosahedron approach as given in one of the apps in the red book (which allows you to build a sphere with 20*N^2 triangles for any integral N).

• Matt

[b]So there is no rational triangular quadratic solution? I know the 8-patch rational biquadratic solution, which is easy but suffers from the singularities at the poles.

Of course, if all you’re doing is drawing a sphere, it’s pretty silly to go through all that effort to make the patches. Better to just use the icosahedron approach as given in one of the apps in the red book (which allows you to build a sphere with 20*N^2 triangles for any integral N).

• Matt[/b]

Sure. But for CAD is better using one representations (usually NURBS), especially for CSG and trimming.
Martin

I think that this problem is not easy to solve. Planarity is not enough to provide C_1 continuity, I can prove this fact.

The system of equations for C1_continuity is not linear. I found these equations:

det(M_i)=0, there M_i is 3x3 matrix corresponding to i-th edge. Elements of this matrix is quadratic polinomials, so this system is vety hard to solve. I wrote “gradient” algorithm to solve it, but it doesnt work in general case and is very slow.