3D数学基础图形与游戏开发——向量运算(1)

注:现使用VS版本为2017

  • 零向量:
    任何集合,都存在加性单位元x,对集合中任意元素y,满足y+x=y。 n维向量集合的加性单位元就是n维“零向量”。(如[0 0 0 0 ···· 0]) 零向量是唯一一个没有方向的向量。

    在这里插入图片描述
  • 负向量 对于任意集合,元素x的加性逆元为-x,其与x相加等于加性单位元。简单的说就是x+(-x) = 0。 公式:

在这里插入图片描述

  • 几何解释:向量变负,将得到一个和原向量大小相等,方向相反的向量。(向量的大小和方向才是最重要的)

在这里插入图片描述

  • 向量的大小常被称作向量的长度或模。 公式:

在这里插入图片描述

  • 几何解释:对于任意直角三角形,斜边长度的平方等于直角边长度的平方和。

在这里插入图片描述
一.首先新建c++源文件main.cpp测试输出,输出"hello vector":

#include <iostream>//iostream是c++系统定义的一个头文件,他设置了c++风格的I/O环境;流对象cin,cout及运算&gt;的定义,均包含在文件iostream中;

using namespace std;//空间命名

int main()
{
	cout << "hello vector" << endl;
	system("pause");//当函数存在返回值时,必须有return 0存在。system("PAUSE")是暂停运行,以便于查看运行结果
	return 0;
}

二.新建头文件命名为Vector3.h学习 零向量 ,负向量, 向量大小长度模。

#pragma once
//给头文件加保护
#ifdef __VECTOR3_H_INCLUDED__
#define  __VECTOR3_H_INCLUDED__

#include <math.h>

class Vector3
{
public:
	//定义向量
	float x, y, z;

	//没有参数的构造函数
	Vector3(){}

	//复制构造函数
	Vector3(const Vector3 &a) :x(a.x), y(a.y), z(a.z) {}//用a初始化坐标函数,复制坐标函数
	Vector3(float nx, float ny, float nz) :x(nx), y(ny), z(nz) {}//带参数的坐标函数

	void zero() { x = y = z = 0.0f; }//成员函数,当前向量设为0向量

	Vector3 operator-() const { return Vector3(-x, -y, -z); }//为了计算负向量重载负号操作符

	inline float vectorMag(const Vector3 &a)//非成员函数计算向量的模
	{
		return sqrt(a.x*a.x + a.y*a.y + a.z*a.z);//计算向量模,sqrt开平方根
	}
};
#endif//结束

三.main.cpp

#include <iostream>
#include "Vector3.h"

using namespace std;

class Vector3* Mag;

void  print_v(Vector3 v)
{
	cout << "[" << v.x << "," << v.y<< "," << v.z<< "]"<<endl;
}

int main()
{
	cout << "hello vector" << endl;

	Vector3 v1(10, 20, 30);
	print_v(v1);

	Vector3 v2(v1);//使用复制函数
	print_v(v2);

	Vector3 v3 = -v1;//计算负向量
	print_v(v3);

	v2.zero();//计算0向量
	print_v(v2);

	Vector3 v4(5, -4, 7);//计算向量模
	float r = Mag->vectorMag(v4);
	cout << r << endl;

	system("pause");
	return 0;
}

输出:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值