再等等,把这个定义完了,就到了我们展示代码环节了。
这个类是多个球体的碰撞检测的,其实就是单个球体的改装版本,基本一摸一样的。
类定义:
#pragma once #ifndef __MULTISPHERE_HEADER__ #define __MULTISPHERE_HEADER__ #include "tracer.h" class MultiSphere :public Tracer { public: MultiSphere(World* wr_ptr); virtual ~MultiSphere(); virtual RGBColor trace_ray(const Ray& ray) const; private: MultiSphere(); }; #endif
类实现:
#include "pch.h" #include "multisphere.h" #include "../utilities/world.h" MultiSphere::MultiSphere(World* wr_ptr) :Tracer(wr_ptr) {} MultiSphere::~MultiSphere() {} RGBColor MultiSphere::trace_ray(const Ray& ray) const { ShadeRec sr(world_ptr->hit_bare_bones_objects(ray)); if (sr.hit_an_object) //没有了个数的限制就成了多个球体的检测碰撞了 return sr.color; return RGBColor(); }