src/rcrt/objects/SolidObject.cpp

Go to the documentation of this file.
00001 #include "SolidObject.h"
00002 
00003 using namespace std;
00004 
00005 namespace rcrt
00006 {
00007 
00008 SolidObject::SolidObject(string name):Object(name),
00009 worldMatrix(Matrix4D::identity()),invWorldMatrix(Matrix4D::identity())
00010 {
00011 }
00012 
00013 SolidObject::~SolidObject()
00014 {
00015         
00016 }
00017 
00018 void SolidObject::setWorldMatrix(const Matrix4D& mat)
00019 {
00020         worldMatrix = mat;
00021         invWorldMatrix = mat.inverse();
00022 }
00023 
00024 const Matrix4D& SolidObject::getWorldMatrix() const
00025 {
00026         return worldMatrix;
00027 }
00028 
00029 const Matrix4D& SolidObject::getInvWorldMatrix() const
00030 {
00031         return invWorldMatrix;
00032 }
00033         
00034 Vec3D SolidObject::toWorld(const Vec3D& vec) const
00035 {
00036         return worldMatrix*vec;
00037 }
00038 
00039 Vec3D SolidObject::toLocal(const Vec3D& vec) const
00040 {
00041         return invWorldMatrix*vec;
00042 }
00043 
00044 Point3D SolidObject::toWorld(const Point3D& p) const
00045 {
00046         return worldMatrix*p;
00047 }
00048 
00049 Point3D SolidObject::toLocal(const Point3D& p) const
00050 {
00051         return invWorldMatrix*p;
00052 }
00053 
00054 Vec3D SolidObject::normalToWorld(const Vec3D& no) const
00055 {
00056         return (invWorldMatrix.transpose()*no).normalize();
00057 }
00058 
00059 Vec3D SolidObject::normalToLocal(const Vec3D& no) const
00060 {
00061         return (worldMatrix.transpose()*no).normalize();
00062 }
00063 
00064 void SolidObject::setDisplMap(ImageTexture* it)
00065 {
00066         displMap = it;
00067 }
00068 void SolidObject::setMaxDispl(float m)
00069 {
00070         maxDispl = m;
00071 }
00072 void SolidObject::setDisplDens(int i)
00073 {
00074         displDens = i;
00075 }
00076 
00077 const ImageTexture* const SolidObject::getDisplMap() const
00078 {
00079         return displMap;
00080 }
00081 
00082 const float& SolidObject::getMaxDispl() const
00083 {
00084         return maxDispl;
00085 }
00086 
00087 const int& SolidObject::getDisplDens() const
00088 {
00089         return displDens;
00090 }
00091 
00092 }

Generated on Thu Jan 31 19:26:19 2008 for RenderingCompetitionRayTracer by  doxygen 1.5.3