00001
00002
00003
00004
00005 #include "myexcept.h"
00006
00007 #ifdef use_namespace
00008 namespace RBD_COMMON {
00009 #endif
00010
00011
00012
00013
00014
00015
00016
00017
00018
00020 class R1_R1 {
00021
00022
00023
00024
00025
00026
00027 protected:
00028 Real x;
00029 bool xSet;
00030
00031 public:
00032 Real minX, maxX;
00033 bool minXinf, maxXinf;
00034 R1_R1() : minXinf(true), maxXinf(true), xSet(false) {}
00035 virtual Real operator()() = 0;
00036
00037 virtual void Set(Real X);
00038 Real operator()(Real X) { Set(X); return operator()(); }
00039
00040 virtual bool IsValid(Real X);
00041 operator Real();
00042 };
00043
00045 class SolutionException : public Exception {
00046 public:
00047 static unsigned long Select;
00048 SolutionException(const char* a_what = 0);
00049 };
00050
00054 class OneDimSolve {
00055 R1_R1& function;
00056 Real accX;
00057 Real accY;
00058 int lim;
00059
00060 public:
00061 OneDimSolve(R1_R1& f, Real AccY = 0.0001, Real AccX = 0.0)
00062 : function(f), accY(AccY), accX(AccX) {}
00063
00064 Real Solve(Real Y, Real X, Real Dev, int Lim=100);
00065
00066
00067
00068
00069
00070
00071 private:
00072 Real x[3], y[3];
00073 int L,C,U,Last;
00074 int vpol, hpol;
00075 Real YY;
00076 int i;
00077 void LookAt(int);
00078 bool Finish;
00079 bool Captured;
00080 void VFlip();
00081 void HFlip();
00082 void Flip();
00083 void State(int I, int J, int K);
00084 void Linear(int, int, int);
00085 void Quadratic(int, int, int);
00086 };
00087
00088 #ifdef use_namespace
00089 }
00090 #endif