学习 图形学01

右手坐标系:X(食指)        Y(中)         Z(大拇指)

左手坐标系:X(大拇指)    Y(食指)     Z(中指)

OPenGL   用右手坐标系

Directx     用左手坐标系

东西南北对应的xyz

Y

         Z北边

                   X东边

世界坐标系===============》惯性坐标系==============》物体坐标系

                              移动                                                 旋转

向量   [1、2、3]    行向量

[1]

[2]

[3]       列向量

标量是一维向量

             1                     a1=ax=1

a=[       2       ]             a2=ay=2

            3                     a3=az=3

向量是有大小有方向的有向线段。

[x,y]    x方向偏移量,y方向上的便宜量

向量和点在数学上是等价的

(x,y)表示点         [x,y]表示向量

  头文件   Vector3.h

#ifndef __VERTOR3_H_INCLUDED__//给头文件加保护
#define __VECTOR3_H_INCLUEDE__

#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){}//用nx初始化x

	void zero(){ x = y = z = 0.0f; }//零向量

	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);//计算平方根
}


#endif

  源文件  Main.cpp

#include <iostream>//包含io流
#include "Vector3.h"//头文件包含进来
using namespace std;//名称空间

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();
	print_v(v2);

	Vector3 v4(5, -4, 7);
	float f = vectorMag(v4);
	cout << f << endl;

	system("pause");//写一个暂停

	return 0;
}

输出结果

猜你喜欢

转载自blog.csdn.net/qq_35647121/article/details/82875272