00001
00028 #ifndef LEAFNODE_H_
00029 #define LEAFNODE_H_
00030 #define MATH_PI 3.1415926
00031 #include<iostream>
00032 #include "AbstractNode.h"
00033 #include "Point3.h"
00034 using namespace std;
00035 class LeafNode : public AbstractNode{
00036 protected:
00037
00038 Point3 direction;
00042 public:
00043 LeafNode(double x, double y, double z, double dirX, double dirY, double dirZ):AbstractNode(x,y,z), direction(dirX,dirY,dirZ) {
00044
00045
00046
00047 setIntensity(1.0 / MATH_PI, 0);
00048
00049
00050
00051 }
00052
00053 Point3 & getDirection(){
00054 return direction;
00055 }
00056 double getDirX(){
00057 return direction.getX();
00058 }
00059 double getDirY(){
00060 return direction.getY();
00061 }
00062 double getDirZ(){
00063 return direction.getZ();
00064 }
00065 bool isLeaf() {
00066 return true;
00067 }
00068
00069 int size() {
00070 return 1;
00071 }
00072 friend ostream & operator<<(ostream & s , LeafNode & pt);
00073
00074 };
00075 ostream & operator<<(ostream & s , LeafNode& pt){
00076 s<<"LeafNode :: ";
00077 operator<<(s,(AbstractNode&)pt);
00078 s<<"Dir::"<<pt.direction;
00079 return s;
00080 }
00081
00082
00083 #endif