00001 #include "point.h"
00002
00007 #include "matrix4.h"
00008
00009 Point::Point()
00010 : Vector(Vector0), _normal(Vector0), _texture(Vector0)
00011 {
00012 }
00013
00014 Point::Point(const Vector &pos,const Vector &normal)
00015 : Vector(pos), _normal(normal), _texture(Vector0)
00016 {
00017 }
00018
00019 Point::Point(const Vector &pos,const Vector &normal,const Vector &texture)
00020 : Vector(pos), _normal(normal), _texture(texture)
00021 {
00022 }
00023
00024 Point::Point(const double &x,const double &y,const double &z)
00025 : Vector(x,y,z), _normal(Vector0), _texture(Vector0)
00026 {
00027 }
00028
00029 Vector &Point::position() { return *this; }
00030 const Vector &Point::position() const { return *this; }
00031
00032 Vector &Point::normal() { return _normal; }
00033 const Vector &Point::normal() const { return _normal; }
00034
00035 Vector &Point::texture() { return _texture; }
00036 const Vector &Point::texture() const { return _texture; }
00037
00038 bool
00039 Point::operator==(const Point &vector) const
00040 {
00041 if (this==&vector)
00042 return true;
00043
00044 return
00045 Vector::operator==(vector) &&
00046 _normal ==vector._normal &&
00047 _texture==vector._texture;
00048 }
00049
00050 bool
00051 Point::operator!=(const Point &vector) const
00052 {
00053 if (this==&vector)
00054 return false;
00055
00056 return
00057 Vector::operator!=(vector) ||
00058 _texture!=vector._texture ||
00059 _normal!=vector._normal;
00060 }
00061
00062
00063 void
00064 Point::transform(const Matrix &trans)
00065 {
00066 position() = trans * position();
00067 normal() = trans * normal() - trans * Vector0;
00068 }