www.pudn.com > simpleraytracer_v1_0.zip > object.cpp


/*=================================================================== 
 
   
  digital liberation front 2002 
   
  _______    ______      _______ 
 /______/\  |______|    /\______\   
|       \ \ |      |   / /       |     
|	      \| |      |  |/         |   
|_____    \ |      |_ /    ______|        
 ____|    | |      |_||    |_____           
     |____| |________||____|                 
            
 
 
 
Code by Nicholas Chapman[/ Ono-Sendai] 
nickamy@paradise.net.nz 
 
You may use this code for any non-commercial project, 
as long as you do not remove this description. 
 
You may not use this code for any commercial project. 
====================================================================*/ 
#include "object.h" 
 
 
#include "geometry.h" 
#include "../maths/vec3.h" 
#include "world.h" 
 
 
Object::Object(const Material& material_, Geometry* geometry_) 
:	material(material_), 
	geometry(geometry_) 
{ 
 
} 
	 
Object::~Object() 
{ 
	delete geometry; 
} 
 
 
 
//get the colour of the ray that is known to hit this object 
void Object::getColourForRay(const Vec3& intersect_pos, const Vec3& unit_raydir,  
		World& world, Colour& colour_out) const 
{ 
	colour_out.set(0.0f,0.0f,0.0f); 
 
	//------------------------------------------------------------------------ 
	//get normal at hit position 
	//------------------------------------------------------------------------ 
	const Vec3 normal = geometry->getNormalForPos(intersect_pos); 
 
	//------------------------------------------------------------------------ 
	//add lighting at this point 
	//------------------------------------------------------------------------ 
//	world.calcLightingForSurfPoint(*this,  
	world.calcLightingForSurfPoint(*this, unit_raydir, intersect_pos, normal, colour_out); 
}