ShadeRec类定义
这个类主要是用于记录碰撞数据的类,书中已经说的很清楚了。这个类之后会慢慢扩展,会在本随笔中扩展,先定义简单的,方便编译看看效果。
类声明(World是之后主程序中的类,最后测试时再实现):
#ifndef __SHADEREC_HEADER__
#define __SHADEREC_HEADER__ #include "ray.h" class World; class ShadeRec {
public:
ShadeRec(World& wr);
~ShadeRec();
ShadeRec(const ShadeRec& sr);
bool hit_an_object;
Point3 local_hit_point;
Normal3 normal;
Ray ray;
RGBColor color;
World& w;
};
#endif
目前先记录是否碰撞,碰撞点,法线,光线以及碰撞后的颜色。
类实现:
#include "pch.h"
#include "shaderec.h"
#include "world.h" //这个文件头最后实现 ShadeRec::ShadeRec(World& wr)
:hit_an_object(false), local_hit_point(), normal(), ray(), color(), w(wr) {} ShadeRec::~ShadeRec() {} ShadeRec::ShadeRec(const ShadeRec& sr)
: hit_an_object(sr.hit_an_object), local_hit_point(sr.local_hit_point), normal(sr.normal),
ray(sr.ray), color(sr.color), w(sr.w) {}
-------------------------------------------------------------------------------------------------
ShadeRec类定义的更多相关文章
- MultiSpehere类定义
再等等,把这个定义完了,就到了我们展示代码环节了. 这个类是多个球体的碰撞检测的,其实就是单个球体的改装版本,基本一摸一样的. 类定义: #pragma once #ifndef __MULTISPH ...
- SingleSphere类定义
针对于单个球体的碰撞,其实和多个球体一样的,只是我修改了书上的代码,定义了这么多类,终于到头了.马上就要展示奇迹的时候了. 类定义: #pragma once #ifndef __SINGLESPHE ...
- Sphere类定义
这个类是球体,也就是一会要显示的球体了.这个类继承于Geometrics类,并实现了自己的碰撞检测,碰撞原理,书上也说的很清楚了啊,大家多看.然后对照代码就明白了. 类定义: #pragma once ...
- Python笔记——类定义
Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...
- 几种常用的JS类定义方法
几种常用的JS类定义方法 // 方法1 对象直接量var obj1 = { v1 : "", get_v1 : function() { return ...
- Js 类定义的几种方式
提起面向对象我们就能想到类,对象,封装,继承,多态.在<javaScript高级程序设计>(人民邮电出版社,曹力.张欣译.英文名字是:Professional JavaScript for ...
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?
static的成员变量,不是存储在Bar实例之中的,因而不会有递归定义的问题. 类声明: class Screen: //Screen类的声明 1 类定义: class Screen{ //Scree ...
- C++学了这么多年,你也许不知道为什么类定义要放在.h文件,类实现放在cpp文件。它们如何关联?
原文 http://blog.csdn.net/ithzhang/article/details/8119286 主题 C++ C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类 ...
- YTU 2602: 熟悉题型——类设计( 矩形类定义【C++】)
2602: 熟悉题型--类设计( 矩形类定义[C++]) 时间限制: 1 Sec 内存限制: 128 MB 提交: 183 解决: 119 题目描述 定义一个矩形类,数据成员包括左下角和右上角坐标 ...
随机推荐
- 【摸鱼神器】UI库秒变LowCode工具——列表篇(一)设计与实现
内容摘要: 需求分析 定义 interface 定义 json 文件 定义列表控件的 props 基于 el-table 封装,实现依赖 json 渲染 实现内置功能:选择行(单选.多选),格式化.锁 ...
- PostgreSQL Array 数组类型与 FreeSql 打出一套【组合拳】
前言 PostgreSQL 是世界公认的功能最强大的开源数据库,除了基础数据类型 int4/int8/varchar/numeric/timestamp 等数据类型,还支持 int4[]/int8[] ...
- anaconda遇到:Solving environment: failed with initial frozen solve. Retrying with flexible solve.问题
Solving environment: failed with initial frozen solve. Retrying with flexible solve. 遇到上述问题: 解决方案: # ...
- CF1665A GCD vs LCM
- sort是不稳定排序
今天才知道sort是不稳定的,WA了一个点. sort()排序不是稳定排序,sort是主要用到了快速排序(平均时间复杂度为O(nlogn)),还结合了插入排序(时间复杂度为O(n2))和堆排序(时间复 ...
- redis如何实现数据同步
redis如何实现数据同步 两种,1全同步,2部分同步 全备份: 在slave启动时会向master发送sync消息,master收到slave这条消息之后,将启动后台备份进程,备份完成之后,将备份数 ...
- Vue 3.0 有哪些新特性值得我们提前了解
一.迎接 Vue 3.0 简介 Vue.js 作者兼核心开发者尤雨溪宣布 Vue 3.0 进入 Beta 阶段. 已合并所有计划内的 RFC 已实现所有被合并的 RFC Vue CLI 现在通过 ...
- 记一次beego通过go get命令后找不到bee.exe的坑
学习goweb开发,gin是个轻量级的框架.如果想要一个类如aspnetmvc帮我们搭建好了的goweb框架,beego值得去学习.否则gin下面需要动手构建好多代码.新手还是先学现成的节约时间成本. ...
- jdbc连接数据库问题
### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Fail ...
- 使用.NetCore自带的后台作业,出入队简单模拟生产者消费者处理请求响应的数据
环境:Core:3.1的项目 说明:由于该方案为个人测试项目,重启时队列中的部分数据很可能会丢失, 对数据有要求的该方案不适用,不能照搬需要持久化处理, 另外发布到Linux Docker中通常不会自 ...