首先我的结构图是这样的,当然你自己喜欢怎么改都行。这个不影响,只要包含到正确的头文件就行。

geometrics是几何类的基础,所有几何的碰撞都是从这个类继承下来的。书中也说的很清楚了,大家可以阅读对应章节。

类声明:

#pragma once
#ifndef __GEOMETRICS_HEADER__
#define __GEOMETRICS_HEADER__ #include "../utilities/geometry.h" //这些文件位置,取决于你自己放的位置。此处需要根据你的实际位置修改。
#include "../utilities/shaderec.h"
#include "../utilities/ray.h" class Geometrics {
public:
Geometrics();
virtual ~Geometrics();
Geometrics(const Geometrics& g);
void set_color(const RGBColor& c);
RGBColor get_color() const;
virtual Geometrics* clone() const = 0;
virtual bool hit(const Ray& r, ldouble& tmin, ShadeRec& sr) const = 0;
protected:
Geometrics& operator=(const Geometrics& g);
RGBColor color;
}; #endif

类实现:

#include "pch.h"
#include "geometics.h" Geometrics::Geometrics() :color() {} Geometrics::~Geometrics() {} Geometrics::Geometrics(const Geometrics& g)
: color(g.color) {} void Geometrics::set_color(const RGBColor& c) {
color = c;
} RGBColor Geometrics::get_color() const {
return color;
} Geometrics& Geometrics::operator=(const Geometrics& g) {
if (this == &g)
return *this;
color = g.color;
return *this;
}

  

Geometrics类定义的更多相关文章

  1. Sphere类定义

    这个类是球体,也就是一会要显示的球体了.这个类继承于Geometrics类,并实现了自己的碰撞检测,碰撞原理,书上也说的很清楚了啊,大家多看.然后对照代码就明白了. 类定义: #pragma once ...

  2. Python笔记——类定义

    Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...

  3. 几种常用的JS类定义方法

    几种常用的JS类定义方法   // 方法1 对象直接量var obj1 = {    v1 : "",    get_v1 : function() {        return ...

  4. Js 类定义的几种方式

    提起面向对象我们就能想到类,对象,封装,继承,多态.在<javaScript高级程序设计>(人民邮电出版社,曹力.张欣译.英文名字是:Professional JavaScript for ...

  5. 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?

    static的成员变量,不是存储在Bar实例之中的,因而不会有递归定义的问题. 类声明: class Screen: //Screen类的声明 1 类定义: class Screen{ //Scree ...

  6. C++学了这么多年,你也许不知道为什么类定义要放在.h文件,类实现放在cpp文件。它们如何关联?

    原文  http://blog.csdn.net/ithzhang/article/details/8119286 主题 C++  C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类 ...

  7. YTU 2602: 熟悉题型——类设计( 矩形类定义【C++】)

    2602: 熟悉题型--类设计( 矩形类定义[C++]) 时间限制: 1 Sec  内存限制: 128 MB 提交: 183  解决: 119 题目描述 定义一个矩形类,数据成员包括左下角和右上角坐标 ...

  8. Objective-c 类接口 (@interface) (类定义)

    在Objective-c中如何定义一个类呢?我们可以使用下面的格式进行表示: @interface 类名:父类名{ 变量定义; } 方法定义: @end; 下面给出一个实例: @interface P ...

  9. 只能从脚本中调用在类定义上有[ScriptService]属性的Web服务问题的解决方案

    ajax调用webservice中的接口时, 会出现[只能从脚本中调用在类定义上有[ScriptService]属性的...]的异常. 这是因为, 在.net3.5中, 访问web服务, 要对web服 ...

随机推荐

  1. 基于SqlSugar的开发框架循序渐进介绍(6)-- 在基类接口中注入用户身份信息接口

    在基于SqlSugar的开发框架中,我们设计了一些系统服务层的基类,在基类中会有很多涉及到相关的数据处理操作的,如果需要跟踪具体是那个用户进行操作的,那么就需要获得当前用户的身份信息,包括在Web A ...

  2. 对 Python 中 GIL 的一点理解

    GIL(Global Interpreter Lock),全局解释器锁,是 CPython 为了避免在多线程环境下造成 Python 解释器内部数据的不一致而引入的一把锁,让 Python 中的多个线 ...

  3. 爬取豆瓣TOP250电影

    自己跟着视频学习的第一个爬虫小程序,里面有许多不太清楚的地方,不如怎么找到具体的电影名字的,那么多级关系,怎么以下就找到的是那个div呢? 诸如此类的,有许多,不过先做起来再说吧,后续再取去弄懂. i ...

  4. Lucene从入门到实战

    Lucene 在了解Lucene之前,我们先了解下全文数据查询. 全文数据查询 我们的数据一般分为两种:结构化数据和非结构化数据 结构化数据:有固定格式或有限长度的数据,如数据库中的数据.元数据 非结 ...

  5. 【Java面试】Mybatis中#{}和${}的区别是什么?

    一个工作2年的粉丝,被问到一个Mybatis里面的基础问题. 他跑过来调戏我,说Mic老师,你要是能把这个问题回答到一定高度,请我和一个月奶茶. 这个问题是: "Mybatis里面#{}和$ ...

  6. React中render Props模式

    React组件复用 React组件复用的方式有两种: 1.render Props模式 2.高阶组件HOC 上面说的这两种方式并不是新的APi. 而是利用Raect自身的编码特点,演化而来的固定编码写 ...

  7. BUUCTF-面具下的flag

    面具下的flag 010editor打开发现存在ZIP binwalk -e mianju.jpg 分离压缩包出来 但是存在密码.猜测是伪加密,直接编辑器搜504B0102找到第五组字符组改为00即可 ...

  8. SAP Web Dynpro-协助类

    在Web Dynpro组件中,您可以创建从抽象类继承的唯一分配的类. 协助类可以存储组件中必需的但未与布局链接的编码. 您可以将动态文本存储在协助类中,也可以在运行时合并文本,也可以将变量存储在文本池 ...

  9. SAP setting and releasing locks

    REPORT demo_transaction_enqueue MESSAGE-ID sabapdocu. TABLES sflight. DATA text(8) TYPE c. DATA ok_c ...

  10. jenkins安装配置及发布

    1. yum install -y lrzsz vim net-tools 2. 下载jdk-8u131-linux-x64.tar.gz http://www.oracle.com/technetw ...