Vector3类定义
大家一定要先看书,在看我的随笔啊。不然不知道原理的。而且我是不写教程的,只是写笔记怕自己忘记了。

我把所有的基础类放在了名叫geometry的文件中,包含Vector3, Normal3, Point3, Point2等
类声明:
#include "../../Types.h" class Point3;
class Normal3;
class Matrix; class Vector3 {
public:
Vector3();
~Vector3();
Vector3(ldouble a);
Vector3(ldouble a, ldouble b, ldouble c);
Vector3(const Vector3& v);
Vector3(const Point3& p);
Vector3(const Normal3& n);
Vector3 operator+(const Vector3& v) const;
Vector3& operator+=(const Vector3& v);
Vector3 operator-(const Vector3& v) const;
Vector3& operator-=(const Vector3& v);
Vector3 operator*(ldouble a) const;
Vector3& operator*=(ldouble a);
Vector3 operator/(ldouble f) const;
Vector3& operator/=(ldouble f);
Vector3 operator-() const;
Vector3& operator=(const Vector3& v);
bool operator==(const Vector3& v) const;
bool operator!=(const Vector3& v) const;
ldouble length() const;
ldouble length_squared() const;
void normalize();
friend Vector3 operator*(ldouble a, const Vector3& v);
friend ldouble operator*(const Vector3& v1, const Vector3& v2);
friend Vector3 operator^(const Vector3& v1, const Vector3& v2);
friend Vector3 normalize(const Vector3& v);
friend std::ostream& operator<<(std::ostream& os, const Vector3& v);
friend std::istream& operator>>(std::istream& is, Vector3& v);
ldouble x, y, z;
};
实现部分大家就认真看书自己写一遍,练习练习,书中已经写明白了。
为了大家编译不会报错,头文件里一定要用#ifndef ....防止重复编译报错,之后的每一个头文件都需要这样提前定义,不再重复了。

然后在cpp文件中,要包含pch.h

这些都是基础的多文件管理和编译知识哈,没有通过的,自己多琢磨。我已经说到这份上了,你们肯定没问题的。
Vector3类定义的更多相关文章
- 【Unity】6.7 向量和Vector3类
分类:Unity.C#.VS2015 创建日期:2016-04-20 一.简介 在虚拟的游戏世界中,与3D有关的数学知识决定了游戏引擎如何计算和模拟出开发者以及玩家看到的每一帧画面.学习或者回想一下基 ...
- 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 题目描述 定义一个矩形类,数据成员包括左下角和右上角坐标 ...
- Objective-c 类接口 (@interface) (类定义)
在Objective-c中如何定义一个类呢?我们可以使用下面的格式进行表示: @interface 类名:父类名{ 变量定义; } 方法定义: @end; 下面给出一个实例: @interface P ...
随机推荐
- 821. Shortest Distance to a Character - LeetCode
Question 821. Shortest Distance to a Character Solution 思路:遍历字符串S,遇到与字符C相等就分别向左/右计算其他字符与该字符的距离,如果其他字 ...
- Java基础(1)——ThreadLocal
1. Java基础(1)--ThreadLocal 1.1. ThreadLocal ThreadLocal是一个泛型类,当我们在一个类中声明一个字段:private ThreadLocal<F ...
- Vue基础之 动态组件
为什么会有动态组件> vue 通过组件机制 实现的页面功能的模块化处理,通常情况下 我们在vue中使用组件 就是先定义组件 然后再需要的地方 插入组件即可 但是在某些情况下 需要根据不同的需求 ...
- 线性求 $i^i$ 的做法
线性求 \(i^i\) 的做法 方便起见,我们记 \(f_i=i^i\),\(i\) 的最小质因子为 \(p=\mathrm{minp}(i)\),第 \(i\) 个质数为 \(\mathrm{pr} ...
- 彰显个性│github和gitlab之自定义首页样式
目录 一.个性首页 二.制作步骤 三.修改内容 一.个性首页 相信很多小伙伴在逛 github 和 gitlab 的时候 会发现很多开发者的首页异常的炫酷,如 https://github.com/c ...
- csv.reader(f)和f.readlines()、追加数据
假如某个文档f中存储如下内容: 你好,中国. 1,2,3,4 共两行内容. 当你使用csv.reader(f),则会存储为如下形式: [['你','好','中','国'] ['1','2','3',' ...
- 【C++函数题目】重载求数组中最小值的函数
题目来源:https://acm.ujn.edu.cn Time Limit: 1 Sec Memory Limit: 128 MB Description 写一个函数名称为miniElement( ...
- 关于nginx 和 uwsgi
关于nginx和uWSGI和Django之间的关系,我觉得要理一下. 原文链接 为什么要用nginx 因为我们要使用https协议访问.(y总说django不支持,但是我查了一下,django也可以支 ...
- c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比
c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比对比 在6.22 号发布了 c# sqlsugar,his ...
- IDEA的项目结构和IDEA的HelloWord
IDEA首次驱动 1. 选择不导入任何设置,点击 OK 2. 选择 Create New Project 3. 点击 new 按钮,配置安装的 JDK9 版本 选择 JDK9 目录,点击确定 4. 不 ...