再等等,把这个定义完了,就到了我们展示代码环节了。

这个类是多个球体的碰撞检测的,其实就是单个球体的改装版本,基本一摸一样的。

类定义:

#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();
}

  

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