Ice Sheet System Model  4.18
Code documentation
OrderSegments.cpp
Go to the documentation of this file.
1 /*
2  * OrderSegments.c:
3  * reorder segments so that their normals point outside the domain outline.
4  */
5 #include "./triangle.h"
6 
7 int OrderSegments(int** psegments,int nseg,int* index,int nel){
8 
9  /*vertex indices: */
10  int A,B;
11 
12  /*element index*/
13  int el;
14 
15  /*Recover segments: */
16  int* segments=*psegments;
17 
18  for(int i=0;i<nseg;i++){
19  A=segments[3*i+0];
20  B=segments[3*i+1];
21  el=segments[3*i+2]-1; //after AssociateSegmentToElement, el was a matlab index, we need the c index now.
22 
23  if (index[3*el+0]==A){
24  if (index[3*el+2]==B){
25  segments[3*i+0]=B;
26  segments[3*i+1]=A;
27  }
28  }
29  else if (index[3*el+1]==A){
30  if (index[3*el+0]==B){
31  segments[3*i+0]=B;
32  segments[3*i+1]=A;
33  }
34  }
35  else{
36  if (index[3*el+1]==B){
37  segments[3*i+0]=B;
38  segments[3*i+1]=A;
39  }
40  }
41  }
42 
43  /*Assign output pointers: */
44  *psegments=segments;
45  return 1;
46 }
triangle.h
OrderSegments
int OrderSegments(int **psegments, int nseg, int *index, int nel)
Definition: OrderSegments.cpp:7