Move find_connect_side validation into find_seg_side

This commit is contained in:
Kp 2014-08-12 03:08:39 +00:00
parent 3bc5d4ad23
commit 276d70d4c9

View file

@ -1011,8 +1011,10 @@ static const es_array2 Edge_to_sides = {{
//given an edge, tell what side is on that edge
static int find_seg_side(segment *seg,const array<int, 2> &verts,int notside)
static int find_seg_side(segment *seg,const array<int, 2> &verts,unsigned notside)
{
if (notside >= MAX_SIDES_PER_SEGMENT)
throw std::logic_error("invalid notside");
int i;
int vv0=-1,vv1=-1;
int side0,side1;
@ -1067,7 +1069,6 @@ static int find_seg_side(segment *seg,const array<int, 2> &verts,int notside)
static int find_joining_side_norms(vms_vector *norm0_0,vms_vector *norm0_1,vms_vector *norm1_0,vms_vector *norm1_1,vms_vector **pnt0,vms_vector **pnt1,segment *seg,int s0,int s1)
{
segment *seg0,*seg1;
int notside0,notside1;
int edgeside0,edgeside1;
Assert(s0!=-1 && s1!=-1);
@ -1081,54 +1082,11 @@ static int find_joining_side_norms(vms_vector *norm0_0,vms_vector *norm0_1,vms_v
seg0 = &Segments[seg->children[s0]];
seg1 = &Segments[seg->children[s1]];
notside0 = find_connect_side(seg,seg0);
Assert(notside0 != -1);
notside1 = find_connect_side(seg,seg1);
Assert(notside1 != -1);
edgeside0 = find_seg_side(seg0,edge_verts,notside0);
edgeside0 = find_seg_side(seg0,edge_verts,find_connect_side(seg,seg0));
if (edgeside0 == -1) return 0;
edgeside1 = find_seg_side(seg1,edge_verts,notside1);
edgeside1 = find_seg_side(seg1,edge_verts,find_connect_side(seg,seg1));
if (edgeside1 == -1) return 0;
//deal with the case where an edge is shared by more than two segments
//@@ if (IS_CHILD(seg0->children[edgeside0])) {
//@@ segment *seg00;
//@@ int notside00;
//@@
//@@ seg00 = &Segments[seg0->children[edgeside0]];
//@@
//@@ if (seg00 != seg1) {
//@@
//@@ notside00 = find_connect_side(seg0,seg00);
//@@ Assert(notside00 != -1);
//@@
//@@ edgeside0 = find_seg_side(seg00,edge_verts,notside00);
//@@ seg0 = seg00;
//@@ }
//@@
//@@ }
//@@
//@@ if (IS_CHILD(seg1->children[edgeside1])) {
//@@ segment *seg11;
//@@ int notside11;
//@@
//@@ seg11 = &Segments[seg1->children[edgeside1]];
//@@
//@@ if (seg11 != seg0) {
//@@ notside11 = find_connect_side(seg1,seg11);
//@@ Assert(notside11 != -1);
//@@
//@@ edgeside1 = find_seg_side(seg11,edge_verts,notside11);
//@@ seg1 = seg11;
//@@ }
//@@ }
// if ( IS_CHILD(seg0->children[edgeside0]) ||
// IS_CHILD(seg1->children[edgeside1]))
// return 0;
*norm0_0 = seg0->sides[edgeside0].normals[0];
*norm0_1 = seg0->sides[edgeside0].normals[1];
*norm1_0 = seg1->sides[edgeside1].normals[0];