1 /*
2 * IntxRllCssphere.hpp
3 *
4 */
5
6 #ifndef INTXRLLCSSPHERE_HPP_
7 #define INTXRLLCSSPHERE_HPP_
8
9 #include "Intx2Mesh.hpp"
10
11 namespace moab
12 {
13
14 class IntxRllCssphere : public moab::Intx2Mesh
15 {
16 public:
17 IntxRllCssphere( Interface* mbimpl );
18
19 virtual ~IntxRllCssphere();
20
21 void set_radius( double radius )
22 {
23 R = radius;
24 }
25
26 double setup_tgt_cell( EntityHandle tgt, int& nsTgt );
27
28 // src cell will be always lat lon cell, so it will be a rectangle in lat-lon coors
29 // it will be used for "interior" determinations of other points
30 // double setup_src_cell(EntityHandle src, int & nsSrc);
31
32 // main method to intersect meshes on a sphere
33
34 ErrorCode computeIntersectionBetweenTgtAndSrc( EntityHandle tgt,
35 EntityHandle src,
36 double* P,
37 int& nP,
38 double& area,
39 int markb[MAXEDGES],
40 int markr[MAXEDGES],
41 int& nsSrc,
42 int& nsTgt,
43 bool check_boxes_first = false );
44
45 ErrorCode findNodes( EntityHandle tgt, int nsTgt, EntityHandle src, int nsSrc, double* iP, int nP );
46
47 private:
48 double R; // radius of the sphere
49 int plane; // current gnomonic plane, will still be used for projection
50 int srcEdgeType[4]; // at most 4
51 // these could be from [-PI/2, +PI/2] and [0 to 2*PI]
52 };
53
54 } /* namespace moab */
55 #endif /* INTXRLLCSSPHERE_HPP_ */