1 #ifndef gra_FeaturePoint_H__
2 #define gra_FeaturePoint_H__
4 #include "../oo/ObjBase.h"
6 #include "../math/Vector.h"
20 template<
class Scalar,
class Description>
36 pos_(pDim, Scalar(0)), des_(dDim, Description(0)) {
43 pos_(fp.pos_), des_(fp.des_) {
56 pos_.copyFrom(fp.pos_);
65 pos_.referenceFrom(fp.pos_);
165 bool write(FILE* f,
bool bin,
unsigned int fg)
const {
168 for (
size_t i = 0, I =
position().dimension(); i < I; ++i) {
169 if (fwrite(&(tmp =
position(i)),
sizeof(tmp), 1, f) < 1)
return false;
171 for (
size_t i = 0, I =
description().dimension(); i < I; ++i) {
172 if (fwrite(&(tmp =
description(i)),
sizeof(tmp), 1, f) < 1)
177 for (
size_t i = 0, I =
position().dimension(); i < I; ++i) {
178 if (fprintf(f,
"%f ", (
double)
position(i)) < 1)
return false;
181 for (
size_t i = 0, I =
description().dimension(); i < I; ++i) {
182 if (fprintf(f,
"%f ", (
double)
description(i)) < 1)
return false;
189 bool read (FILE* f,
bool bin,
unsigned int fg) {
192 for (
size_t i = 0, I =
position().dimension(); i < I; ++i) {
193 if (fread(&tmp,
sizeof(tmp), 1, f) < 1)
return false;
196 for (
size_t i = 0, I =
description().dimension(); i < I; ++i) {
197 if (fread(&tmp,
sizeof(tmp), 1, f) < 1)
return false;
203 for (
size_t i = 0, I =
position().dimension(); i < I; ++i) {
204 if (fscanf(f,
"%lf", &tmp) < 1)
return false;
207 for (
size_t i = 0, I =
description().dimension(); i < I; ++i) {
208 if (fscanf(f,
"%lf", &tmp) < 1)
return false;
224 return typeid(*this).name();
228 return std::string(
ctype());
234 #endif // gra_FeaturePoint_H__
Scalar position(size_t i, Scalar const &s)
修改position的第i個scalar
FeaturePoint()
constructor
FeaturePoint & operator=(FeaturePoint const &fp)
same as copyFrom(fp)
~FeaturePoint()
destructor
Vector< Description > const & description() const
回傳description
FeaturePoint(FeaturePoint const &fp)
constructor
bool write(FILE *f, bool bin, unsigned int fg) const
將物件寫入檔案, 預設implement為直接回傳 false
Vector< Description > & descriptionGet()
回傳description (non-const reference)
Scalar const & operator()(size_t i) const
same as position(i)
Vector< Scalar > const & position(Vector< Scalar > const &p) const
修改position
FeaturePoint(size_t pDim, size_t dDim)
constructor
Vector & copyFrom(Vector const &v)
copy from ...
Scalar position(size_t index) const
回傳position的第i個scalar
ObjBase * create() const
回傳一個new出來的物件, 預設implement為直接回傳 NULL
一切物件的Base, 並要求每個物件都要有read, write, create, ... 等功能
ObjBase * copyFrom(ObjBase const &b)
Vector< Scalar > & positionGet()
回傳position (non-const reference)
Description description(size_t i, Description const &d)
修改description的第i個Description
Description operator[](size_t i) const
same as description(i)
std::string type() const
用std::string回傳這個class的type name
char const * ctype() const
用C-style string回傳這個class的type name
FeaturePoint & copyFrom(FeaturePoint const &fp)
複製
Vector< Scalar > const & position() const
回傳position
Description description(size_t i) const
回傳description的第i個Description
Vector< Description > const & description(Vector< Description > const &d)
修改description
Vector & referenceFrom(Vector const &v)
reference from ...
FeaturePoint & referenceFrom(FeaturePoint const &fp)
參照
bool read(FILE *f, bool bin, unsigned int fg)
將物件從檔案讀出, 預設implement為直接回傳 false