Code Overview for Assignment 2 (Ray Tracing)


This web page describes the code that is used for assignment 2. It contains:

Note:

FILE LIST:

Main Ray Tracing Code:

Shape Classes: Light Classes: Other Code: Return to top.


CLASS AND STRUCT LIST:
 
 
File Name Type Name Subclass Of
shape.h class Shape
shape.h struct IntersectionInfo
group.[cpp/h] class ShapeListElement
group.[cpp/h] class Group Shape
rayFileInstance.[cpp/h] class RayFileInstance Shape
triangle.[cpp/h] class Triangle Shape
sphere.[cpp/h] class Sphere Shape
cone.[cpp/h] class Cone Shape
cylinder.[cpp/h] class Cylinder Shape
box.[cpp/h] class Box Shape
line.[cpp/h] class Line Shape
light.h class Light
pointLight.[cpp/h] class PointLight Light
directionalLight.[cpp/h] class DirectionalLight Light
spotLight.[cpp/h] class SpotLight Light
scene.[cpp/h] class Camera
scene.[cpp/h] class Vertex
scene.[cpp/h] class Material
scene.[cpp/h] class Texture
scene.[cpp/h] class RayFile
scene.[cpp/h] class Scene
geometry.[cpp/h] class Point2D
geometry.[cpp/h] class Point3D
geometry.[cpp/h] class Ray
geometry.[cpp/h] class Matrix
boundingBox.[cpp/h] class BoundingBox
bmp.[cpp/h] struct Pixel
bmp.[cpp/h] struct Image

Return to top.



FUNCTION LIST:
 
File Name Function Name
ray.[cpp/h] Image* RayTrace(const char* fileName, int width, int height, int rLimit, float cLimit)
ray.[cpp/h] Point3D GetColor(Scene scene, Ray ray, IntersectionInfo iInfo, int rDepth, float cLimit)
main.cpp int main(int argc, char** argv)
geometry.[cpp/h] Matrix IdentityMatrix(void)
bmp.[cpp/h] Image* ImageNew(int width, int height)
bmp.[cpp/h] void ImageFree(Image** img)
bmp.[cpp/h] void ImageCopy(Image* src, Image* dst)
bmp.[cpp/h] int ImageIsValid(Image* img)
bmp.[cpp/h] Pixel* ImageGetPixel(Image* img, int x, int y)
bmp.[cpp/h] void ImageSetPixel(Image* img, int x, int y, Pixel* p)

Return to top.



CLASS AND STRUCT DESCRIPTION: Return to top.


MEMBERS AND METHODS LIST:
 
File Name Method/Member Name
Shape
shape.h Material* Shape::material
shape.h virtual char* Shape::name(void)
shape.h virtual void Shape::write(int indent, FILE* fp=stdout)
shape.h virtual Flt Shape::intersect(Ray ray, IntersectionInfo& iInfo)
shape.h virutal BoundingBox Shape::getBoundingBox(void)
shape.h void Shape::free(void)
IntersectionInfo
shape.[cpp/h] Material* IntersectionInfo::material
shape.[cpp/h] Point3D IntersectionInfo::iCoordinate
shape.[cpp/h] Point3D IntersectionInfo::normal
shape.[cpp/h] Point2D IntersectionInfo::texCoordinate
ShapeListElement
group.[cpp/h] ShapeListElement* ShapeListElement::next
group.[cpp/h] Shape* ShapeListElement::shape
group.[cpp/h] ShapeListElement::ShapeListElement(Shape* shape)
group.[cpp/h] void ShapeListElement::addShape(Shape* shape)
Group
group.[cpp/h] Matrix Group::localTransform
group.[cpp/h] ShapeListElement* Group::shapeList
group.[cpp/h] BoundingBox Group::bBox
group.[cpp/h] Group::Group(FILE* fp)
group.[cpp/h] Group::Group(Matrix localTransform)
group.[cpp/h] void Group::addShape(Shape* shape)
group.[cpp/h] char* Group::name(void)
group.[cpp/h] void Group::write(int indent, FILE* fp=stdout)
group.[cpp/h] Flt Group::intersect(Ray ray, IntersectionInfo& iInfo)
group.[cpp/h] BoundingBox Group::getBoundingBox(void)
group.[cpp/h] void Group::free(void)
RayFileInstance
rayFileInstance.[cpp/h] RayFileInstance::RayFileInstance(RayFile* rayFile)
rayFileInstance.[cpp/h] char* RayFileInstance::name(void)
rayFileInstance.[cpp/h] void RayFileInstance::write(int indent, FILE* fp=stdout)
rayFileInstance.[cpp/h] Flt RayFileInstance::intersect(Ray ray, IntersectionInfo& iInfo)
rayFileInstance.[cpp/h] BoundingBox RayFileInstance::getBoundingBox(void)
Triangle
triangle.[cpp/h] Vertex* Triangle::v[3]
triangle.[cpp/h] Triangle::Triangle(FILE* fp, int* materialIndex, Vertex* vList, int vSize)
triangle.[cpp/h] char* Triangle::name(void)
triangle.[cpp/h] void Triangle::write(int indent, FILE* fp=stdout)
triangle.[cpp/h] Flt Triangle::intersect(Ray ray, IntersectionInfo& iInfo)
triangle.[cpp/h] BoundingBox Triangle::getBoundingBox(void)
Sphere
sphere.[cpp/h] Point3D Sphere::center
sphere.[cpp/h] Flt Sphere::radius
sphere.[cpp/h] Sphere::Sphere(FILE* fp, int* materialIndex)
sphere.[cpp/h] char* Sphere::name(void)
sphere.[cpp/h] void Sphere::write(int indent, FILE* fp=stdout)
sphere.[cpp/h] Flt Sphere::intersect(Ray ray, IntersectionInfo& iInfo)
sphere.[cpp/h] BoundingBox Sphere::getBoundingBox(void)
Cone
cone.[cpp/h] Point3D Cone::center
cone.[cpp/h] Flt Cone::height
cone.[cpp/h] Flt Cone::radius
cone.[cpp/h] Cone::Cone(FILE* fp, int* materialIndex)
cone.[cpp/h] char* Cone::name(void)
cone.[cpp/h] void Cone::write(int indent, FILE* fp=stdout)
cone.[cpp/h] Flt Cone::intersect(Ray ray, IntersectionInfo& iInfo)
cone.[cpp/h] BoundingBox Cone::getBoundingBox(void)
Cylinder
cylinder.[cpp/h] Point3D Cylinder::center
cylinder.[cpp/h] Flt Cylinder::height
cylinder.[cpp/h] Flt Cylinder::radius
cylinder.[cpp/h] Cylinder::Cylinder(FILE* fp, int* materialIndex)
cylinder.[cpp/h] char* Cylinder::name(void)
cylinder.[cpp/h] void Cylinder::write(int indent, FILE* fp=stdout)
cylinder.[cpp/h] Flt Cylinder::intersect(Ray ray, IntersectionInfo& iInfo)
cylinder.[cpp/h] BoundingBox Cylinder::getBoundingBox(void)
Box
box.[cpp/h] Point3D Box::center
box.[cpp/h] Point3D Box::length
box.[cpp/h] Box::Box(FILE* fp, int* materialIndex)
box.[cpp/h] char* Box::name(void)
box.[cpp/h] void Box::write(int indent, FILE* fp=stdout)
box.[cpp/h] Flt Box::intersect(Ray ray, IntersectionInfo& iInfo)
box.[cpp/h] BoundingBox Box::getBoundingBox(void)
Line
line.[cpp/h] Point3D Line::start
line.[cpp/h] Point3D Line::end
line.[cpp/h] Line::Line(FILE* fp, int* materialIndex)
line.[cpp/h] Line::Line(Ray ray, Material* material)
line.[cpp/h] char* Line::name(void)
line.[cpp/h] void Line::write(int indent, FILE* fp=stdout)
line.[cpp/h] Flt Line::intersect(Rayray, IntersectionInfo& iInfo)
line.[cpp/h] BoundingBox Line::getBoundingBox(void)
Light
light.h Point3D Light::color
light.h virtual int Light::read(FILE* fp)
light.h virtual void Light::write(FILE* fp=stdout)
light.h virtual Point3D Light::getDiffuse(Point3D cameraPosition, IntersectionInfo iInfo)
light.h virtual Point3D Light::getSpecular(Point3D cameraPosition, IntersectionInfo iInfo)
light.h virtual int Light::isInShadow(IntersectionInfo iInfo, Shape* shape)
PointLight
pointLight.[cpp/h] Point3D PointLight::location
pointLight.[cpp/h] Flt PointLight::constAtten
pointLight.[cpp/h] Flt PointLight::linearAtten
pointLight.[cpp/h] Flt PointLight::quadAtten
pointLight.[cpp/h] int PointLight::read(FILE* fp)
pointLight.[cpp/h] void PointLight::write(FILE* fp=stdout)
pointLight.[cpp/h] Point3D PointLight::getDiffuse(Point3D cameraPosition, IntersectionInfo iInfo)
pointLight.[cpp/h] Point3D PointLight::getSpecular(Point3D cameraPosition, IntersectionInfo iInfo)
pointLight.[cpp/h] int PointLight::isInShadow(IntersectionInfo iInfo, Shape* shape)
DirectionalLight
directionalLight.[cpp/h] Point3D DirectionalLight::direction
directionalLight.[cpp/h] int DirectionalLight::read(FILE* fp)
directionalLight.[cpp/h] void DirectionalLight::write(FILE* fp=stdout)
directionalLight.[cpp/h] Point3D DirectionalLight::getDiffuse(Point3D cameraPosition, IntersectionInfo iInfo)
directionalLight.[cpp/h] Point3D DirectionalLight::getSpecular(Point3D cameraPosition, IntersectionInfo iInfo)
directionalLight.[cpp/h] int DirectionalLight::isInShadow(IntersectionInfo iInfo, Shape* shape)
SpotLight
spotLight.[cpp/h] Point3D SpotLight::location
spotLight.[cpp/h] Point3D SpotLight::direction
spotLight.[cpp/h] Flt SpotLight::constAtten
spotLight.[cpp/h] Flt SpotLight::linearAtten
spotLight.[cpp/h] Flt SpotLight::quadAtten
spotLight.[cpp/h] Flt SpotLight::cutOffAngle
spotLight.[cpp/h] Flt SpotLight::dropOffRate
spotLight.[cpp/h] int SpotLight::read(FILE* fp)
spotLight.[cpp/h] void SpotLight::write(FILE* fp=stdout)
spotLight.[cpp/h] Point3D SpotLight::getDiffuse(Point3D cameraPosition, IntersectionInfo iInfo)
spotLight.[cpp/h] Point3D SpotLight::getSpecular(Point3D cameraPosition, IntersectionInfo iInfo)
spotLight.[cpp/h] int SpotLight::isInShadow(IntersectionInfo iInfo, Shape* shape)
Camera
scene.[cpp/h] Flt Camera::heightAngle
scene.[cpp/h] Flt Camera::aspectRatio
scene.[cpp/h] Point3D Camera::position
scene.[cpp/h] Point3D Camera::direction
scene.[cpp/h] Point3D Camera::up
scene.[cpp/h] Point3D Camera::right
scene.[cpp/h] int Camera::read(FILE* fp)
scene.[cpp/h] void Camera::write(FILE* fp=stdout)
Vertex
scene.[cpp/h] int Vertex::index
scene.[cpp/h] Point3D Vertex::position
scene.[cpp/h] Point3D Vertex::normal
scene.[cpp/h] Point2D Vertex::texCoordinate
scene.[cpp/h] int Vertex::read(FILE* fp)
scene.[cpp/h] void Vertex::write(FILE* fp=stdout)
Material
scene.[cpp/h] int Material::index
scene.[cpp/h] Point3D Material::ambient
scene.[cpp/h] Point3D Material::diffuse
scene.[cpp/h] Point3D Material::specular
scene.[cpp/h] Point3D Material::emmisive
scene.[cpp/h] Flt Material::kspec
scene.[cpp/h] Flt Material::ktran
scene.[cpp/h] Flt Material::refind
scene.[cpp/h] Texture* Material::tex
scene.[cpp/h] char Material::foo[ ]
scene.[cpp/h] int Material::read(FILE* fp)
scene.[cpp/h] void Material::write(FILE* fp=stdout)
Texture
scene.[cpp/h] int Texture::index
scene.[cpp/h] char Texture::filename[ ]
scene.[cpp/h] Image* Texture::img
scene.[cpp/h] int Texture::read(FILE* fp)
scene.[cpp/h] void Texture::write(FILE* fp=stdout)
RayFile
scene.[cpp/h] int RayFile::index
scene.[cpp/h] char RayFile::filename[ ]
scene.[cpp/h] Scene* RayFile::scene
scene.[cpp/h] int RayFile::read(FILE* fp)
scene.[cpp/h] void RayFile::write(FILE* fp=stdout)
scene.[cpp/h] void RayFile::free(void)
Scene
scene.[cpp/h] Point3D Scene::ambient
scene.[cpp/h] Point3D Scene::background
scene.[cpp/h] Camera Scene::camera
scene.[cpp/h] Light** Scene::lights
scene.[cpp/h] int Scene::lightNum
scene.[cpp/h] Shape* Scene::shape
scene.[cpp/h] Scene::Scene(void)
scene.[cpp/h] Material* Scene::getMaterial(int index)
scene.[cpp/h] void Scene::read(const char* filename)
scene.[cpp/h] void Scene::write(FILE* fp=stdout)
Point2D
geometry.[cpp/h] Point2D::Point2D(void)
geometry.[cpp/h] Point2D::Point2D(Flt x, Flt y)
geometry.[cpp/h] Flt& Point2D::operator[ ] (int index)
geometry.[cpp/h] void Point2D::print(void)
geometry.[cpp/h] void Point2D::printnl(void)
geometry.[cpp/h] Flt Point2D::dot(Point2D pt)
geometry.[cpp/h] Flt Point2D::length(void)
geometry.[cpp/h] Point2D Point2D::unit(void)
geometry.[cpp/h] Point2D Point2D::negate(void)
geometry.[cpp/h] Point2D Point2D::operator- (void)
geometry.[cpp/h] Point2D Point2D::scale(Flt scl)
geometry.[cpp/h] Point2D Point2D::operator* (Flt scale)
geometry.[cpp/h] Point2D Point2D::operator/ (Flt scale)
geometry.[cpp/h] Point2D Point2D::add(Point2D pt)
geometry.[cpp/h] Point2D Point2D::operator+ (Point2D pt)
geometry.[cpp/h] Point2D Point2D::subtract(Point2D pt)
geometry.[cpp/h] Point2D Point2D::operator- (Point2D pt)
geometry.[cpp/h] Point2D Point2D::mult(Point2D pt)
Point3D
geometry.[cpp/h] Point3D::Point3D(void)
geometry.[cpp/h] Point3D::Point3D(Flt x, Flt y, Flt z)
geometry.[cpp/h] Flt& Point3D::operator[ ] (int index)
geometry.[cpp/h] void Point3D::print(void)
geometry.[cpp/h] void Point3D::printnl(void)
geometry.[cpp/h] Flt Point3D::dot(Point3D pt)
geometry.[cpp/h] Flt Point3D::length(void)
geometry.[cpp/h] Point3D Point3D::unit(void)
geometry.[cpp/h] Point3D Point3D::negate(void)
geometry.[cpp/h] Point3D Point3D::operator- (void)
geometry.[cpp/h] Point3D Point3D::scale(Flt scl)
geometry.[cpp/h] Point3D Point3D::operator* (Flt scale)
geometry.[cpp/h] Point3D Point3D::operator/ (Flt scale)
geometry.[cpp/h] Point3D Point3D::add(Point3D pt)
geometry.[cpp/h] Point3D Point3D::operator+ (Point3D pt)
geometry.[cpp/h] Point3D Point3D::subtract(Point3D pt)
geometry.[cpp/h] Point3D Point3D::operator- (Point3D pt)
geometry.[cpp/h] Point3D Point3D::crossProduct(Point3D pt)
geometry.[cpp/h] Point3D Point3D::mult(Point3D pt)
Ray
geometry.[cpp/h] Point3D Ray::p
geometry.[cpp/h] Point3D Ray::d
geometry.[cpp/h] Ray::Ray(void)
geometry.[cpp/h] Ray::Ray(Point3D p,Point3D d)
geometry.[cpp/h] void Ray::print(void)
geometry.[cpp/h] void Ray::printnl(void)
geometry.[cpp/h] Ray Ray::translate(Point3D pt)
geometry.[cpp/h] Point3D Ray::operator( ) (Flt param)
geometry.[cpp/h] Point3D Ray::position(Flt param)
Matrix
geometry.[cpp/h] Flt& Matrix::operator( ) (int col,int row)
geometry.[cpp/h] Flt Matrix::det(void)
geometry.[cpp/h] void Matrix::print(void)
geometry.[cpp/h] void Matrix::printnl(void)
geometry.[cpp/h] Matrix Matrix::mult(Matrix m)
geometry.[cpp/h] Matrix Matrix::operator* (Matrix m)
geometry.[cpp/h] Matrix Matrix::transpose(void)
geometry.[cpp/h] Matrix Matrix::invert(void)
geometry.[cpp/h] Point3D Matrix::multPosition(Point3D position)
geometry.[cpp/h] Point3D Matrix::multDirection(Point3D direction)
geometry.[cpp/h] Point3D Matrix::multNormal(Point3D normal)
geometry.[cpp/h] Ray Matrix::mult(Ray ray)
geometry.[cpp/h] Ray Matrix::operator* (Ray ray)
BoundingBox
boundingBox.[cpp/h] Point3D BoundingBox::p[2]
boundingBox.[cpp/h] BoundingBox::BoundingBox(void)
boundingBox.[cpp/h] BoundingBox::BoundingBox(Point3D p1, Point3D p2)
boundingBox.[cpp/h] BoundingBox::BoundingBox(Point3D* pList, int listSize)
boundingBox.[cpp/h] BoundingBox BoundingBox::operator+ (BoundingBox b)
boundingBox.[cpp/h] BoundingBox BoundingBox::Transform(Matrix m)
boundingBox.[cpp/h] Flt BoundingBox::intersects(Ray ray)
Pixel
bmp.[cpp/h] unsigned char Pixel::r
bmp.[cpp/h] unsigned char Pixel::g
bmp.[cpp/h] unsigned char Pixel::b
Image
bmp.[cpp/h] int Image::width
bmp.[cpp/h] int Image::height
bmp.[cpp/h] Pixel* Image::pixels

Return to top.



FUNCTION DESCRIPTION:
  Return to top.


CLASS AND STRUCT MEMBERS AND METHODS DESCRIPTION: