- /* Do this with a bounding box */
- return roam_point_visible(triangle->p.l, sphere) ||
- roam_point_visible(triangle->p.m, sphere) ||
- roam_point_visible(triangle->p.r, sphere);
+ RoamPoint *l = triangle->p.l;
+ RoamPoint *m = triangle->p.m;
+ RoamPoint *r = triangle->p.r;
+ gdouble min_x = MIN(MIN(l->px, m->px), r->px);
+ gdouble max_x = MAX(MAX(l->px, m->px), r->px);
+ gdouble min_y = MIN(MIN(l->py, m->py), r->py);
+ gdouble max_y = MAX(MAX(l->py, m->py), r->py);
+ gint *view = sphere->view->view;
+ return !(max_x < view[0] || min_x > view[2] ||
+ max_y < view[1] || min_y > view[3]) &&
+ l->pz > 0 && m->pz > 0 && r->pz > 0 &&
+ l->pz < 1 && m->pz < 1 && r->pz < 1;