source: issm/trunk-jpl/src/c/modules/MeshProfileIntersectionx/MeshSegmentsIntersection.cpp@ 12450

Last change on this file since 12450 was 12450, checked in by Mathieu Morlighem, 13 years ago

changing xmalloc to xNew and xfree to xDelete

File size: 1.4 KB
Line 
1/*! \file MeshSegmentsIntersectionx.c
2 */
3
4#include "./MeshProfileIntersectionx.h"
5
6void MeshSegmentsIntersection(double** psegments, int* pnumsegs,int* index, double* x, double* y, int nel, int nods, double* xc, double* yc, int numnodes){
7
8 int i,j;
9
10 /*output: */
11 double* segments=NULL;
12 Segment* segment=NULL;
13 int numsegs;
14
15 /*intermediary: */
16 DataSet* segments_dataset=NULL;
17 double xnodes[3];
18 double ynodes[3];
19
20 /*We don't know how many segments we are going to get, so have a dynamic container: */
21 segments_dataset=new DataSet();
22
23 /*Go through elements, and call ElementSegmentsIntersection routine: */
24 for(i=0;i<nel;i++){
25 for(j=0;j<3;j++){
26 xnodes[j]=x[*(index+3*i+j)];
27 ynodes[j]=y[*(index+3*i+j)];
28 }
29 ElementSegmentsIntersection(segments_dataset,i,xnodes,ynodes,xc,yc,numnodes);
30 }
31
32 /*Using the segments_dataset dataset, create segments: */
33 numsegs=segments_dataset->Size();
34 segments=xNew<double>(5*numsegs);
35 for(i=0;i<numsegs;i++){
36 Segment* segment=(Segment*)segments_dataset->GetObjectByOffset(i);
37
38 /*x1,y1,x2,y2 then element_id: */
39 *(segments+5*i+0)=segment->x1;
40 *(segments+5*i+1)=segment->y1;
41 *(segments+5*i+2)=segment->x2;
42 *(segments+5*i+3)=segment->y2;
43 *(segments+5*i+4)=(double)segment->eid;
44 }
45
46 /*Free ressources:*/
47 delete segments_dataset;
48
49 /*Assign output pointers:*/
50 *psegments=segments;
51 *pnumsegs=numsegs;
52}
Note: See TracBrowser for help on using the repository browser.