I am trying to implement the Triangular Gregory patch from this paper. The goal is to create a $G^1$ continuity across the patch boundaries. So that the normal vectors of neighboring triangles are equal.

Right now I'm trying to understand how to calculate the Bézier ordinates: $b_{i,j,k}$ where $i,j,k \geq 0$ and $i+j+k = n$

The second thing I'm not sure about is the degree $n$. How to choose a good $n$?


1 Answer 1


If you want to implement triangular Gregory patches then you do not have to choose $n$ since a triangular Gregory patch is special kind of quartic B'ezier triangle, so $n = 4$. The patch has special inner control points which are constructed from cubic B'ezier curves on the edges of the triangles.

I take your question about how to compute the control points $b_{ijk}$ (ordinates) to be how to go from a standard triangular mesh to a mesh of Gregory patches. The easiest way to construct B'ezier control points (ordinates) from a triangular mesh is to first construct vertex normals (by averaging incident face normals) and then to use the procedure from PN triangles (Section 3.1) to construct the edge control points of each triangle. Each one of these edges is then a cubic B'ezier curve which can be used as input to construct, through the Chiyokura-Kimura basis patch technique, the inner control points of the Gregory patch.

  • $\begingroup$ Thanks @Reynolds, I have already implemented the algorithm for curved PN triangles, so I will test it with their control points. If that works well, I will accept this answer $\endgroup$
    – Thomas
    Nov 23, 2023 at 13:15
  • $\begingroup$ I was not able to finish implementing it now, but you are right, the control points are the same... +1 $\endgroup$
    – Thomas
    Nov 26, 2023 at 11:11
  • $\begingroup$ You have to realize that this is merely just a choice for the control points. I'm not sure what you mean about how they are the same. The cubic control points on the edges of the triangle can be anything as long as adjacent triangles share those control points and at vertices they represent the same normal vector (the first control points on each edge from the vertices represent a plane). $\endgroup$
    – Reynolds
    Nov 27, 2023 at 10:29
  • $\begingroup$ Okay, so e. G. b300, b210, b120 and b030 need to lie on a plane... Same for the adjacent triangles edge, where the control points for the same edge need to be identical to there $\endgroup$
    – Thomas
    Nov 28, 2023 at 8:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.