这个类主要是用于记录碰撞数据的类,书中已经说的很清楚了。这个类之后会慢慢扩展,会在本随笔中扩展,先定义简单的,方便编译看看效果。

类声明(World是之后主程序中的类,最后测试时再实现):

#ifndef __SHADEREC_HEADER__
#define __SHADEREC_HEADER__

#include "ray.h"

class World;

class ShadeRec {
public:
	ShadeRec(World& wr);
	~ShadeRec();
	ShadeRec(const ShadeRec& sr);
	bool hit_an_object;		
	Point3 local_hit_point;	
	Normal3 normal;
	Ray ray;	
	RGBColor color;
	World& w;
};
#endif

目前先记录是否碰撞,碰撞点,法线,光线以及碰撞后的颜色。

类实现:

#include "pch.h"
#include "shaderec.h"
#include "world.h" //这个文件头最后实现

ShadeRec::ShadeRec(World& wr)
	:hit_an_object(false), local_hit_point(), normal(), ray(), color(), w(wr) {}

ShadeRec::~ShadeRec() {}

ShadeRec::ShadeRec(const ShadeRec& sr)
	: hit_an_object(sr.hit_an_object), local_hit_point(sr.local_hit_point), normal(sr.normal),
	ray(sr.ray), color(sr.color), w(sr.w) {}

-------------------------------------------------------------------------------------------------

posted on 2020-03-31 03:46  dalgleish  阅读(160)  评论(0编辑  收藏  举报