source: issm/trunk-jpl/src/c/shared/TriMesh/OrderSegments.cpp@ 10937

Last change on this file since 10937 was 8301, checked in by Mathieu Morlighem, 14 years ago

moved all grids to nodes

File size: 982 bytes
Line 
1/*
2 * OrderSegments.c:
3 * reorder segments so that their normals point outside the domain outline.
4 */
5#include "./trimesh.h"
6
7int OrderSegments(double** psegments,int nseg, double* index,int nel){
8
9 /*Error management: */
10 int i;
11 int noerr=1;
12
13 /*Input: */
14 double* segments=NULL;
15
16 /*vertex indices: */
17 double A,B;
18 /*element indices: */
19 int el;
20
21
22 /*Recover segments: */
23 segments=*psegments;
24
25 for (i=0;i<nseg;i++){
26 A=*(segments+3*i+0);
27 B=*(segments+3*i+1);
28 el=*(segments+3*i+2)-1; //after AssociateSegmentToElement, el was a matlab index, we need the c index now.
29
30 if (*(index+3*el+0)==A){
31 if (*(index+3*el+2)==B){
32 *(segments+3*i+0)=B;
33 *(segments+3*i+1)=A;
34 }
35 }
36 else if (*(index+3*el+1)==A){
37 if (*(index+3*el+0)==B){
38 *(segments+3*i+0)=B;
39 *(segments+3*i+1)=A;
40 }
41 }
42 else{
43 if (*(index+3*el+1)==B){
44 *(segments+3*i+0)=B;
45 *(segments+3*i+1)=A;
46 }
47 }
48 }
49
50 /*Assign output pointers: */
51 *psegments=segments;
52 return noerr;
53}
Note: See TracBrowser for help on using the repository browser.