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 ... 
随机推荐
- 个人冲刺(四阶段)——体温上报app(一阶段)
			任务:完成了后台数据库的类模块 MyDBHelper.java package com.example.helloworld; import android.content.Context; impo ... 
- Hibernate基础入门2
			HQL与Criteria HQL(Hibernate Query Language)-官方推荐面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写 ... 
- R-CNN学习笔记
			R-CNN学习笔记 step1:总览 步骤: 输入图片 先挑选大约2000个感兴趣区域(ROI)使用select search方法:[在输入的图像中寻找blobby regions(可能相同纹理,颜色 ... 
- Kubernetes client-go Informer 源码分析
			概述ControllerController 的初始化Controller 的启动processLoopHandleDeltas()SharedIndexInformersharedIndexerIn ... 
- Code Forces 1367A Sorting Parts 题解
			(原题链接:CF传送门) 题目背景(我看不懂英文嘤嘤嘤) Sorting Parts You have an array a of length n. You can exactly once sel ... 
- Visual Studio Installer下载速度为0处理办法
			DNS改为:223.5.5.5即可. 223.5.5.5 下载完成后记得改回来. 
- numpy学习笔记02
			简介 numpy.array() 数组对象,可以表示普通的一维数组,或者二维矩阵,或者任意数据:并且它可以对数组中的数据进行非常高效的运算,如:数据统计.图像处理.线性代数等 numpy 之所以能运行 ... 
- Linux基础命令、引号和括号的作用
			查看硬件信息 查看 cpu lscpu命令可以查看cpu信息 cat /proc/cpuinfo也可看查看到 查看内存大小 free命令 cat /proc/meminfo 查看硬盘和分区 lsblk ... 
- bat-安装程序-切换路径的问题(小坑)
			当批处理以管理员身份运行时,默认的cmd路径是 C:\Windows\system32 如果在批处理所在目录下存放了一些 安装程序,使用bat安装程序时,bat中去执行时 不会去当前目录去找 exe文 ... 
- idea如何实现Servlet接口
			idea如何实现Servlet接口 project structure ---> Libraries ---> 点击加号+ ----> 找到安装tomcat的目录,再找lib下的se ... 
