向量的运算

  • 零向量
  • 负向量
  • 向量大小、长度、模
  • 标量与向量的乘法
  • 标准化向量
  • 向量的加法和减法
  • 距离公式
  • 向量点乘
  • 向量投影
  • 向量叉乘

C++语言

  1. 标量与向量的乘法除法

    放大一个向量的长度(乘以一个标量)
    缩放一个向量的长度(除以一个标量)

  2. 标准化向量

    长度为1,方向不变的向量,单位向量

    公式:

    例如标准化一个2D向量:

  3. 向量的加法和减法
    公式(符号变换即可):

距离公式:

贴上代码:

// Vector.h
#ifndef _VECTOR3_H_INCLUDED_
#define _VECTOR3_H_INCLUDED_
#include <math.h>class Vector3 {public:float x;float y;float z;Vector3() {}Vector3(const Vector3 &a) :x(a.x), y(a.y), z(a.z) {}Vector3(float nX, float nY, float nZ) :x(nX), y(nY), z(nZ) {}void zero() {x = y = z = 0.0f;}Vector3 operator -() const { return Vector3(-x, -y, -z); }//  向量的乘法,放大一个向量Vector3 operator *(Vector3 &v)  const { return Vector3(x*v.x, y*v.y, z*v.z); }Vector3 operator *(float a)  const { return Vector3(x*a, y*a, z*a); }Vector3 operator *=(float a) { x *= a; y *= a; z *= a; return *this; }//  向量的除法,缩放一个向量Vector3 operator /(float a)  const { float oneOverA = 1.0f / a; return Vector3(x, y, z)*oneOverA; }Vector3 operator /=(float a) { x /= a; y /= a; z /= a; return *this; }//  向量的加法Vector3 operator +(const Vector3 &v) const { return Vector3(x + v.x, y + v.y, z + v.z); }Vector3 operator +=(const Vector3 &v) { return Vector3(x += v.x, y += v.y, z += v.z); }//  向量的减法法Vector3 operator -(const Vector3 &v) const { return Vector3(x - v.x, y - v.y, z - v.z); }Vector3 operator -=(const Vector3 &v) { return Vector3(x -= v.x, y -= v.y, z -= v.z); }//  标准化一个向量void normalize() {float magSq = x*x + y*y + z*z;if (magSq > 0.0f) {float oneOverMag = 1.0f / sqrt(magSq);x *= oneOverMag; y *= oneOverMag; z *= oneOverMag;}}
};
//  求模
inline float vectorMag(const Vector3 &a) {return sqrt(a.x*a.x + a.y*a.y + a.z*a.z);
}//  左乘
inline Vector3 operator *(float le_v, const Vector3 &v) {return Vector3(le_v * v.x, le_v * v.y, le_v * v.z);
}
//  两点距离
inline float Distance(const Vector3 &a, const Vector3 &b) {return vectorMag(a - b);
}
#endif

下一章是向量的叉乘和点乘。

三、向量的加减乘除法相关推荐

  1. 【青少年编程】黄羽恒:加减乘除法小测试

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  2. 广州市长温国辉:用“加减乘除法”发展民营经济

    中新社广州1月19日电 (王华 周婧琳)广州市第十五届人民代表大会第四次会议19日下午闭幕,随即举行大会记者会,广州市长温国辉在回答记者时表示,要用"加减乘除法"发展民营经济. 据 ...

  3. 英语的加减乘除怎么计算机,用英语表示加减乘除法的用法

    英语当中的加减乘除可能很多很人都不是很清楚,甚至有点乱,以下是小编给大家整理的用英语表示加减乘除法的用法,希望可以帮到大家 一.加法运算的表示 常用and, plus, add 等表示.如: Seve ...

  4. 不使用加减乘除法,完成两个数的加法

    #include "stdio.h" //不使用加减乘除法,完成两个数的加法int addwei(int num1,int num2) {if(num2==0) return nu ...

  5. 的电路接法_放大电路的三种基本接法分享

    为了让大家更容易理解放大电路,先来介绍一些放大电路的基本概念. (1)输入电阻和输出电阻 一个放大电路通常可以用图2-4所示的电路来等效,这样等效的依据是:在放大电路工作时,输入信号送到放大电路输入端 ...

  6. 机器学习理论《统计学习方法》学习笔记:第三章 k近邻法

    机器学习理论<统计学习方法>学习笔记:第三章 k近邻法 3 k近邻法 3.1 K近邻算法 3.2 K近邻模型 3.2.1 模型 3.2.2 距离度量 3.2.3 K值的选择 3.2.4 分 ...

  7. 整套的操作体系:三点看股法

    陈玉峰的三点看股法的思想是: 第一点.这是最基本的条件,周期共振:两个时间级别的操盘线都为持股状态: 第二点.资金净流入:大笔比率为红色,即大单比率>0: 第三点.超级资金控盘状态:超级资金上穿 ...

  8. Java基础知识强化87:BigInteger类之BigInteger加减乘除法的使用

    1. BigInteger加减乘除法的使用 1 public BigInteger add(BigInteger val):加 2 public BigInteger subtract(BigInte ...

  9. java三次指数平滑_时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)

    所有移动平均法都存在很多问题. 它们都太难计算了.每个点的计算都让你绞尽脑汁.而且也不能通过之前的计算结果推算出加权移动平均值. 移动平均值永远不可能应用于现有的数据集边缘的数据,因为它们的窗口宽度是 ...

  10. 三次指数平滑法(Holt-Winters)

    三次指数平滑法 https://blog.csdn.net/qq_32628233/article/details/51595479 ​​ 参数选择 ​α,ß,γ的值都位于[0,1]之间,可以多试验几 ...

最新文章

  1. 快速创建 shell脚本
  2. JDBC之在分层结构中实现业务
  3. linux 我的世界 跨平台联机,我的世界跨平台联机 PC、手机等平台数据互通
  4. ASP.NET刷新页面的六种方法
  5. 2019蚂蚁金服 Java面试题目!涵盖现场3面真题
  6. mysql date timestamp_【Mysql】Datetime和Timestamp区别,及mysql中各种时间的使用
  7. 1019 数字黑洞 (20)
  8. Fast-RTPS初体验
  9. 还真碰到不会cd命令的同事
  10. python的标准数据类型_Python中的标准数据类型
  11. centos中mysql操作命令_CentOS系统常用的MySQL操作命令总结
  12. STM32-StdPeriph函数库使用的预备知识
  13. 野火STM32F429学习笔记
  14. sql2000安装失败的解决方法
  15. Hi3559AV100 RTSP推H265视频码流使用VLC软件本地直播
  16. 统计多个渠道App下载量效果
  17. sping boot 笔记 哎呦不错哦
  18. DBA到底要做什么?
  19. 不积跬步无以至千里,不积小流无以成江海----SAX读取xml
  20. 交互原型设计工具:Axure RP5中文版教程

热门文章

  1. 电脑ie怎么设置html5,电脑中IE浏览器工具栏设置选项显示的是英文如何改成中文...
  2. 【多线程】Lock和ReentrantLock使用和源码分析
  3. (一)海康威视、大华、宇视、广州视鹰 摄像机,支持SDK二次开发
  4. Springboot Swagger2 Unable to infer base url问题解决
  5. LTM系统并联接入方式数据包交互分析
  6. 武汉市计算机类中专学校排名,武汉中职中专学校一览表 2021最新排名
  7. 算法面试题-用单向链表表示十进制整数,求两个正整数之和。1234+34=1268
  8. BigDecimal实现加减乘除
  9. 关于DataFactory工具使用说明(一)-----创建数据表
  10. linux桌面应用小结,Linux桌面应用技巧大全