三、向量的加减乘除法
向量的运算
- 零向量
- 负向量
- 向量大小、长度、模
- 标量与向量的乘法
- 标准化向量
- 向量的加法和减法
- 距离公式
- 向量点乘
- 向量投影
- 向量叉乘
C++语言
- 标量与向量的乘法除法
放大一个向量的长度(乘以一个标量)
缩放一个向量的长度(除以一个标量) 标准化向量
长度为1,方向不变的向量,单位向量
公式:
例如标准化一个2D向量:
向量的加法和减法
公式(符号变换即可):
距离公式:
贴上代码:
// 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
下一章是向量的叉乘和点乘。
三、向量的加减乘除法相关推荐
- 【青少年编程】黄羽恒:加减乘除法小测试
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...
- 广州市长温国辉:用“加减乘除法”发展民营经济
中新社广州1月19日电 (王华 周婧琳)广州市第十五届人民代表大会第四次会议19日下午闭幕,随即举行大会记者会,广州市长温国辉在回答记者时表示,要用"加减乘除法"发展民营经济. 据 ...
- 英语的加减乘除怎么计算机,用英语表示加减乘除法的用法
英语当中的加减乘除可能很多很人都不是很清楚,甚至有点乱,以下是小编给大家整理的用英语表示加减乘除法的用法,希望可以帮到大家 一.加法运算的表示 常用and, plus, add 等表示.如: Seve ...
- 不使用加减乘除法,完成两个数的加法
#include "stdio.h" //不使用加减乘除法,完成两个数的加法int addwei(int num1,int num2) {if(num2==0) return nu ...
- 的电路接法_放大电路的三种基本接法分享
为了让大家更容易理解放大电路,先来介绍一些放大电路的基本概念. (1)输入电阻和输出电阻 一个放大电路通常可以用图2-4所示的电路来等效,这样等效的依据是:在放大电路工作时,输入信号送到放大电路输入端 ...
- 机器学习理论《统计学习方法》学习笔记:第三章 k近邻法
机器学习理论<统计学习方法>学习笔记:第三章 k近邻法 3 k近邻法 3.1 K近邻算法 3.2 K近邻模型 3.2.1 模型 3.2.2 距离度量 3.2.3 K值的选择 3.2.4 分 ...
- 整套的操作体系:三点看股法
陈玉峰的三点看股法的思想是: 第一点.这是最基本的条件,周期共振:两个时间级别的操盘线都为持股状态: 第二点.资金净流入:大笔比率为红色,即大单比率>0: 第三点.超级资金控盘状态:超级资金上穿 ...
- Java基础知识强化87:BigInteger类之BigInteger加减乘除法的使用
1. BigInteger加减乘除法的使用 1 public BigInteger add(BigInteger val):加 2 public BigInteger subtract(BigInte ...
- java三次指数平滑_时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)
所有移动平均法都存在很多问题. 它们都太难计算了.每个点的计算都让你绞尽脑汁.而且也不能通过之前的计算结果推算出加权移动平均值. 移动平均值永远不可能应用于现有的数据集边缘的数据,因为它们的窗口宽度是 ...
- 三次指数平滑法(Holt-Winters)
三次指数平滑法 https://blog.csdn.net/qq_32628233/article/details/51595479 参数选择 α,ß,γ的值都位于[0,1]之间,可以多试验几 ...
最新文章
- 快速创建 shell脚本
- JDBC之在分层结构中实现业务
- linux 我的世界 跨平台联机,我的世界跨平台联机 PC、手机等平台数据互通
- ASP.NET刷新页面的六种方法
- 2019蚂蚁金服 Java面试题目!涵盖现场3面真题
- mysql date timestamp_【Mysql】Datetime和Timestamp区别,及mysql中各种时间的使用
- 1019 数字黑洞 (20)
- Fast-RTPS初体验
- 还真碰到不会cd命令的同事
- python的标准数据类型_Python中的标准数据类型
- centos中mysql操作命令_CentOS系统常用的MySQL操作命令总结
- STM32-StdPeriph函数库使用的预备知识
- 野火STM32F429学习笔记
- sql2000安装失败的解决方法
- Hi3559AV100 RTSP推H265视频码流使用VLC软件本地直播
- 统计多个渠道App下载量效果
- sping boot 笔记 哎呦不错哦
- DBA到底要做什么?
- 不积跬步无以至千里,不积小流无以成江海----SAX读取xml
- 交互原型设计工具:Axure RP5中文版教程
热门文章
- 电脑ie怎么设置html5,电脑中IE浏览器工具栏设置选项显示的是英文如何改成中文...
- 【多线程】Lock和ReentrantLock使用和源码分析
- (一)海康威视、大华、宇视、广州视鹰 摄像机,支持SDK二次开发
- Springboot Swagger2 Unable to infer base url问题解决
- LTM系统并联接入方式数据包交互分析
- 武汉市计算机类中专学校排名,武汉中职中专学校一览表 2021最新排名
- 算法面试题-用单向链表表示十进制整数,求两个正整数之和。1234+34=1268
- BigDecimal实现加减乘除
- 关于DataFactory工具使用说明(一)-----创建数据表
- linux桌面应用小结,Linux桌面应用技巧大全