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

我把所有的基础类放在了名叫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类定义的更多相关文章

  1. 【Unity】6.7 向量和Vector3类

    分类:Unity.C#.VS2015 创建日期:2016-04-20 一.简介 在虚拟的游戏世界中,与3D有关的数学知识决定了游戏引擎如何计算和模拟出开发者以及玩家看到的每一帧画面.学习或者回想一下基 ...

  2. Sphere类定义

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

  3. Python笔记——类定义

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

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

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

  5. Js 类定义的几种方式

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

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

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

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

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

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

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

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

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

随机推荐

  1. 关于vue.config.js 的 proxy 配置

    关于vue.config.js 的 proxy 配置有的同学不怎么明白项目里面有的配置了 pathRewrite 地址重写,有的又没有进行配置?/* * proxy代理配置的说明 * *接口例子:/z ...

  2. drools中then部分的写法

    目录 1.背景 2.支持的方法 2.1 insert 插入对象到工作内存中 2.1.1 需求 2.1.2 drl文件编写 2.1.3 部分java代码编写 2.1.4 运行结果 2.1.5 结论 2. ...

  3. 关于我学git这档子事(4)

    ------------恢复内容开始------------ 当本地分支(main/dev)比远程仓库分支(main/dev)落后几次提交时 先: git pull 更新本地仓库 再 git push ...

  4. 论文解读(GraphSMOTE)《GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks》

    论文信息 论文标题:GraphSMOTE: Imbalanced Node Classification on Graphs with Graph Neural Networks论文作者:Tianxi ...

  5. 《HALCON数字图像处理》第五章笔记

    目录 第五章 图像运算 图像的代数运算 加法运算 图像减法 图像乘法 图像除法 图像逻辑运算(位操作) 图像的几何变换 图像几何变换的一般表达式 仿射变换 投影变换 灰度插值 图像校正 我在Gitee ...

  6. Python3 filter()函数和map()函数

    filter(function or None,iterable) 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换. 该接收两个参数,第 ...

  7. c++ FHQ Treap

    前面我们对平衡树有了个大概的了解 关于 Treap Treap=Binary Search Tree + Heap 二叉搜索树 + 二叉堆(一般是小根堆) Treap 每一个节点有两个值 一个值是平衡 ...

  8. C#中将string[] 转成 int[]的几种方法

    C#中将string[] 转成 int[]的方式有很多种. 直接遍历转换 这是最简单粗暴的方式.实例代码: 使用LINQ遍历 本质和直接遍历没多大差异,但代码量更少,代码更美观.实例代码: 注意:需要 ...

  9. 关于使用koa实现线上 https服务

    var https=require("https");//https服务var fs= require("fs");var Koa = require('koa ...

  10. jieba分词原理解析:用户词典如何优先于系统词典

    目标 查看jieba分词组件源码,分析源码各个模块的功能,找到分词模块,实现能自定义分词字典,且优先级大于系统自带的字典等级,以医疗词语邻域词语为例. jieba分词地址:github地址:https ...