这个类主要是用于检测光线是否穿过球体。是核心,所有的碰撞都继承于这个类,书上也阐述了很多。详细就看书。
类定义:
#pragma once #ifndef __TRACER_HEADER__ #define __TRACER_HEADER__ #include "../../Types.h" class World; class Ray; class RGBColor; class Tracer { public: Tracer(World* wr_ptr); virtual ~Tracer(); virtual RGBColor trace_ray(const Ray& ray) const; virtual RGBColor trace_ray(const Ray ray, const integer depth) const; protected: World* world_ptr; private: Tracer(); }; #endif
类实现:
#include "pch.h" #include "tracer.h" #include "../utilities/world.h" //这个文件最后实现,因为时刻都在扩展,所以World类时刻都在修改 Tracer::Tracer(World* wr_ptr) :world_ptr(wr_ptr) {} Tracer::~Tracer() {} RGBColor Tracer::trace_ray(const Ray& ray) const { return RGBColor(); } RGBColor Tracer::trace_ray(const Ray ray, const integer depth) const { return RGBColor(); }