+static gboolean roam_triangle_backface(RoamTriangle *triangle, RoamSphere *sphere)
+{
+ RoamPoint *l = triangle->p.l;
+ RoamPoint *m = triangle->p.m;
+ RoamPoint *r = triangle->p.r;
+ roam_point_update_projection(l, sphere->view);
+ roam_point_update_projection(m, sphere->view);
+ roam_point_update_projection(r, sphere->view);
+ double size = -( l->px * (m->py - r->py) +
+ m->px * (r->py - l->py) +
+ r->px * (l->py - m->py) ) / 2.0;
+ return size < 0;
+}
+