这个类主要是用于检测光线是否穿过球体。是核心,所有的碰撞都继承于这个类,书上也阐述了很多。详细就看书。
类定义:
#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();
}