00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef SCADOM_H_
00024 #define SCADOM_H_
00025
00026 #ifdef COMP_GNUOLD
00027
00028 #else
00029 using std::ifstream;
00030 #endif
00031
00033
00034
00035
00037 class Scat_domain : public All_Domains {
00038 protected:
00039 protected:
00040
00041 Scat_domain(int number);
00042
00043
00044 int punkte;
00045 D3vector * sample, * normal;
00046
00047
00048 D3vector bordermax;
00049 D3vector bordermin;
00050
00051 public:
00052
00053 Scat_domain(ifstream& Datei);
00054
00055
00056 int Give_n_uniform() { return n_uniform; } ;
00057
00058 bool calc_edge(D3vector V1, D3vector V2) { return true; }
00059
00060 bool edge(D3vector V1, D3vector V2);
00061
00062 calc_dis calc_distance(D3vector V, dir_3D d) {return yes; }
00063
00064 double distance(D3vector V, dir_3D d);
00065
00066 bool point_in_domain(D3vector V);
00067
00068
00069 D3vector GiveA() const { return A; }
00070 double GiveH() const { return H; }
00071 D3vector GiveVecH() const { return VecH; }
00072
00073
00074 int Give_number_of_scattered_data() { return punkte; };
00075 };
00076
00077 class Six_corner_pyramid : public Scat_domain {
00078 public:
00079 Six_corner_pyramid(D3vector top1, D3vector top2, D3vector top3,
00080 D3vector top4, D3vector top5, D3vector top6,
00081 D3vector down1, D3vector down2, D3vector down3,
00082 D3vector down4, D3vector down5, D3vector down6);
00083 };
00084
00085
00086
00087
00088
00089
00090 inline bool Scat_domain::edge(D3vector V1, D3vector V2) {
00091 return (point_in_domain(V1) && point_in_domain(V2));
00092 }
00093
00094 #endif
00095
00096