7 #include "../oo/ObjBase.h"
23 Myself(): cam_(), ofs_(0.0, 0.0, 0.0) {
29 Myself(Myself
const& b): cam_(b.cam_), ofs_(b.ofs_) {
41 Eye(
Eye const& b): self(b.self(),
Self<Myself>::COPY_FROM) {
69 self()->cam_.copyFrom(c);
98 bool write(FILE* f,
bool bin,
unsigned int fg)
const {
101 for (
size_t i = 0; i < 3; ++i) {
102 if (fwrite(&(tmp =
offset()(i)),
sizeof(tmp), 1, f) < 1)
107 for (
size_t i = 0; i < 3; ++i) {
108 if (fprintf(f,
"%f ",
offset()(i)) < 1)
return false;
112 return camera().write(f, bin, fg);
119 bool read(FILE* f,
bool bin,
unsigned int fg) {
122 if (fread(tmp,
sizeof(
double), 3, f) < 3)
return false;
127 if (fscanf(f,
"%lf %lf %lf", &a, &b, &c) < 3)
return false;
160 return typeid(*this).name();
168 return std::string(
ctype());
Eye & operator=(Eye const &e)
ObjBase * copyFrom(ObjBase const *b)
複製資料
Eye & copyFrom(Eye const &e)
Vector3D< double > & offsetGet()
Scalar const & z() const
access z
bool read(FILE *f, bool bin, unsigned int fg)
將資料讀入
Vector3D & xyz(Scalar const &sx, Scalar const &sy, Scalar const &sz)
modify x and y
bool write(FILE *f, bool bin, unsigned int fg) const
將資料寫入檔案
Camera< Pixel > const & camera(Camera< Pixel > const &c)
char const * ctype() const
回傳class的type
ObjBase * create() const
new一個自己
Scalar const & y() const
access y
Eye(Camera< Pixel > const &c, Vector3D< double > const &o)
一切物件的Base, 並要求每個物件都要有read, write, create, ... 等功能
Camera< Pixel > & cameraGet()
Camera< Pixel > const & camera() const
Scalar const & x() const
access x
Eye & referenceFrom(Eye const &e)
Vector3D< double > const & offset() const
bool inside(Vector3D< double > const &v) const
一個 Camera 加上一個offset transformation
Vector3D< double > const & offset(Vector3D< double > const &ofs)
std::string type() const
回傳class的type