📄 wzcoordinates.hxx
字号:
#ifndef wzcoordinates_hxx
#define wzcoordinates_hxx
#include "wzpoint.hxx"
#include "wzsafepointer.hxx"
// defined in wzcroundedbox.cxx:
class wzRoundedBoxCoordinates;
// may be thrown by any coordinate transformation:
class wzCoordinateFailure{};
class wzCoordinates;
// these classes are for internal use by derived classes only:
class wz3DCoordinates;
class wz2DCoordinates;
class wz1DCoordinates;
extern const wzFloat wzPi;
class wzCoordinates: public wzProxyTarget{
public:
wzIndex dim;
wzFloat ymin[3], ymax[3];
virtual void x1(wzFloat *y) const; // single argument version
virtual void y1(wzFloat *x) const; // single argument version
virtual void x(wzFloat *x, const wzFloat *y) const;
virtual void y(wzFloat *y, const wzFloat *x) const;
virtual void dx(wzFloat *d, const wzFloat *y, wzIndex dir) const;
virtual void dy(wzFloat *d, const wzFloat *x, wzIndex dir) const;
wzCoordinates(wzIndex dim=3);
void test();
};
typedef wzProxy<wzCoordinates> wzcoordinates;
class wz3DCoordinates: public wzCoordinates{
public:
void x1(wzFloat *y) const;
void y1(wzFloat *x) const;
protected:
wz3DCoordinates():wzCoordinates(3){}
};
class wz2DCoordinates: public wzCoordinates{
public:
void x1(wzFloat *y) const;
void y1(wzFloat *x) const;
protected:
wz2DCoordinates():wzCoordinates(2){}
};
class wz1DCoordinates: public wzCoordinates{
public:
void x1(wzFloat *y) const;
void y1(wzFloat *x) const;
protected:
wz1DCoordinates():wzCoordinates(1){}
};
class wz3DContinuation: public wz3DCoordinates{
wzcoordinates original;
wzcoordinates scale;
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wz3DContinuation(wzcoordinates orig,wzcoordinates s=0);
};
class wzXYSwitch: public wz3DCoordinates{
wzcoordinates original;
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzXYSwitch(wzcoordinates orig);
};
class wzYZSwitch: public wz3DCoordinates{
wzcoordinates original;
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzYZSwitch(wzcoordinates orig);
};
class wzZXSwitch: public wz3DCoordinates{
wzcoordinates original;
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzZXSwitch(wzcoordinates orig);
};
class wzPolarCoordinates: public wz2DCoordinates{
wzFloat Epsilon;
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzPolarCoordinates();
void setMinimalRadius(wzFloat eps);
};
class wzEllipticCoordinates: public wz2DCoordinates{
wzcoordinates polar;
wzcoordinates shukowski;
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzEllipticCoordinates(wzFloat a0=1);
};
class wzScaleExp: public wz1DCoordinates{
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzScaleExp();
};
class wzScaleLog: public wz1DCoordinates{
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzScaleLog();
};
class wzComplexExp: public wz2DCoordinates{
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzComplexExp();
};
class wzComplexShukowski: public wz2DCoordinates{
wzFloat lambda,rr,m0,m1,d0,d1,e0,e1,c0,c1;
wzcoordinates base;
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
void setShiftPoints(wzFloat x0=0,wzFloat y0=-1,wzFloat x1=0,wzFloat y1=0);
void setLambda(wzFloat lambda=0);
wzComplexShukowski(wzcoordinates base=0);
};
class wzSphericalCoordinates: public wz3DCoordinates{
wzFloat Epsilon;
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzSphericalCoordinates();
void setMinimalRadius(wzFloat eps);
};
/*
class wzCylinderCoordinates: public wzCoordinates{
wzcoordinates coordinates;
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzCylinderCoordinates(wzcoordinates planar);
};
class wzParabolicCoordinates: public wzCoordinates{
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
};
class wzEllipticCoordinates: public wzCoordinates{
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
};
*/
class wzRoundedBoxCoordinates: public wz2DCoordinates{
wzFloat xc,yc,lx,ly,st1,st2,st3,st4,st5,up,phi;
public:
void x(wzFloat *x, const wzFloat *y) const;
void y(wzFloat *y, const wzFloat *x) const;
wzRoundedBoxCoordinates(wzFloat cx, wzFloat cy, wzFloat xl, wzFloat yl);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -