# Point-normal triangle

The curved point-normal triangle, in short PN triangle, is an interpolation algorithm to retrieve a cubic Bézier triangle from the vertex coordinates of a regular flat triangle and normal vectors. The PN triangle retains the vertices of the flat triangle as well as the corresponding normals. For computer graphics applications, additionally a linear or quadratic interpolant of the normals is created to represent an incorrect but plausible normal when rendering and so giving the impression of smooth transitions between adjacent PN triangles. The usage of the PN triangle enables the visualization of triangle based surfaces in a smoother shape at low cost in terms of rendering complexity and time.

## Mathematical formulation

With information of the given vertex positions P$_1$, P$_2$, P$_3$∈R$^3${\textstyle \mathbf {P} _{1}, \mathbf {P} _{2}, \mathbf {P} _{3}\in \mathbb {R} ^{3}} of a flat triangle and the according normal vectors N$_1$, N$_2$, N$_3${\textstyle \mathbf {N} _{1}, \mathbf {N} _{2}, \mathbf {N} _{3}} at the vertices a cubic Bézier triangle is constructed. In contrast to the notation of the Bézier triangle page the nomenclature follows G. Farin (2002), therefore we denote the 10 control points as b$_{ijk}${\textstyle \mathbf {b} _{ijk}} with the positive indices holding the condition i+j+k=3{\textstyle i+j+k=3}.
The first three control points are equal to the given vertices.${\begin{aligned}\mathbf {b} _{300}&=\mathbf {P} _{1},&\mathbf {b} _{030}&=\mathbf {P} _{2},&\mathbf {b} _{003}&=\mathbf {P} _{3}\end{aligned}}$ Six control points related to the triangle edges, i.e. i, j, k={0, 1, 2}{\textstyle i, j, k=\left\{0, 1, 2\right\}} are computed as${\begin{aligned}\mathbf {b} _{012}&={\frac {1}{3}}\left(2\mathbf {P} _{3}+\mathbf {P} _{2}-\omega _{32}\mathbf {N} _{3}\right),&\mathbf {b} _{021}&={\frac {1}{3}}\left(2\mathbf {P} _{2}+\mathbf {P} _{3}-\omega _{23}\mathbf {N} _{2}\right),&&\\\mathbf {b} _{102}&={\frac {1}{3}}\left(2\mathbf {P} _{3}+\mathbf {P} _{1}-\omega _{31}\mathbf {N} _{3}\right),&\mathbf {b} _{201}&={\frac {1}{3}}\left(2\mathbf {P} _{1}+\mathbf {P} _{3}-\omega _{13}\mathbf {N} _{1}\right),&&\\\mathbf {b} _{120}&={\frac {1}{3}}\left(2\mathbf {P} _{2}+\mathbf {P} _{1}-\omega _{21}\mathbf {N} _{2}\right),&\mathbf {b} _{210}&={\frac {1}{3}}\left(2\mathbf {P} _{1}+\mathbf {P} _{2}-\omega _{12}\mathbf {N} _{1}\right)&\qquad {\text{with}}\quad \omega _{ij}&=\left(\mathbf {P} _{j}-\mathbf {P} _{i}\right)\cdot \mathbf {N} _{i}.\\\end{aligned}}$This definition ensures that the original vertex normals are reproduced in the interpolated triangle.
Finally the internal control point (i=j=k=1){\textstyle (i=j=k=1)} is derived from the previously calculated control points as ${\begin{aligned}\mathbf {b} _{111}&=\mathbf {E} +{\frac {1}{2}}\left(\mathbf {E} -\mathbf {V} \right)\\{\text{with}}&\quad \mathbf {E} ={\frac {1}{6}}\left(\mathbf {b} _{012}+\mathbf {b} _{021}+\mathbf {b} _{102}+\mathbf {b} _{201}+\mathbf {b} _{120}+\mathbf {b} _{210}\right)\\{\text{and}}&\quad \mathbf {V} ={\frac {1}{3}}\left(\mathbf {P} _{1}+\mathbf {P} _{2}+\mathbf {P} _{3}\right).\end{aligned}}$
An alternative interior control point ${\begin{aligned}\mathbf {b} _{111}&=\mathbf {E} +5\left(\mathbf {E} -\mathbf {V} \right)\end{aligned}}$ was suggested in.