亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vector3d.h

?? 這是我做的一個VC++小程序
?? H
字號:
/////////////////////////////////////////////////////////////////////////////////
//	
// Vector3d.h: interface for the CVector3d class.
//
////////////////////////////////////////////////////////////////////////////////
// 版權所有(2002)
// Copyright(2002)
// 編寫者: 向世明
// Author: Xiang Shiming


//三維自由向量

#ifndef _CVECTOR3D_H
#define _CVECTOR3D_H
#include "Grphcs.h"
#include "math.h"

class CVector3d  
{
public:
	CVector3d();
	CVector3d(float x,float y,float z);
	CVector3d(const VECTOR3D& vector);
	virtual ~CVector3d();

public:
	//為了符合習慣,我們不采有匈牙利命名法
	float x,y,z;

public:
	//設置與獲取函數
	void Set(float x,float y,float z);
	VECTOR3D Get() const;

public:
	//運算符重載(=)
	inline CVector3d operator = (const CVector3d& vector);
	inline CVector3d operator = (const VECTOR3D& vector);
	
	//運算符重載(+),返回另一個CVector3d
	inline CVector3d operator + (const CVector3d& vector);
	inline CVector3d operator + (const VECTOR3D& vector);		//交換律不成立(結構沒有重載 "+")

	//運算符重載(+=)
	inline CVector3d operator += (const CVector3d& vector);
	inline CVector3d operator += (const VECTOR3D& vector);		

	//運算符重載(-),參數為減數,返回另一個CVector3d
	inline CVector3d operator - (const CVector3d& vector);
	inline CVector3d operator - (const VECTOR3D& vector);		
	
	//運算符重載(-),參數為減數
	inline CVector3d operator -= (const CVector3d& vector);
	inline CVector3d operator -= (const VECTOR3D& vector);		

	//運算符重載(*),參數為乘數,返回另一個CVector3d
	//向量叉積
	inline CVector3d operator * (const CVector3d& vector);
	inline CVector3d operator * (const VECTOR3D& vector);		
	//標量與向量積
	inline CVector3d operator * (float fs);

	//運算符重載(*),參數為乘數,返回另一個CVector3d
	//向量叉積
	inline CVector3d operator *= (const CVector3d& vector);
	inline CVector3d operator *= (const VECTOR3D& vector);		
	//標量與向量積
	inline CVector3d operator *= (float fs);

	//對于"/"運算符,沒有必要重載

public:
	//向量點積
	inline float Dot(const CVector3d& vector);
	inline float Dot(const VECTOR3D& vector);
	inline float Dot(float x,float y, float z);

	//向量的模
	inline float Mag();
	inline float MagSquared();

	//向量矢徑端點之間的距離
	inline float Dist(const CVector3d& vector);
	inline float Dist(const VECTOR3D& vector);
	inline float Dist(float x,float y,float z);

	//向量單位化
	inline CVector3d Unit();
	inline void Unitize();
	
public:

	//將this向量縮放
	void Scale(CVector3d vector);
	void Scale(VECTOR3D vector);
	void Scale(float x, float y, float z);

	//將this向量繞三軸旋轉,fTheta為角度單位
	void RotateX(float fTheta);
	void RotateY(float fTheta);
	void RotateZ(float fTheta);

	//將this向量繞任意軸旋轉,fTheta為角度單位
	void Rotate(float fTheta, CVector3d axis);
	void Rotate(float fTheta, VECTOR3D axis);
	//(x,y,z)為旋轉軸向量
	void Rotate(float fTheta, float x, float y, float z);

	//計算小面法線
	VECTOR3D Noraml(const VERTEX3D& v1, const VERTEX3D& v2, const VERTEX3D& v3);
	VECTOR3D Noraml(const HOMOCOORD& v1, const HOMOCOORD& v2, const HOMOCOORD& v3);

};
#endif 

//////////////////////////////////////////////////////////////////////////////////////////////
//
//					  運算符重載  
//
//////////////////////////////////////////////////////////////////////////////////////////////

//運算符重載(=)
//參數為CVector3d對象
inline CVector3d CVector3d::operator = (const CVector3d& vector)
{
	x = vector.x;
	y = vector.y;
	z = vector.z;
	return *this;
}

//運算符重載(=)
//參數為VECTOR3D結構
inline CVector3d CVector3d::operator = (const VECTOR3D& vector)
{
	x = vector.x;
	y = vector.y;
	z = vector.z;
	return *this;
}

//運算符重載(+)
//參數為CVector3d對象,返回另一個CVector3d對象
inline CVector3d CVector3d::operator + (const CVector3d& vector)
{
	CVector3d v;
	v.x = x + vector.x;
	v.y = y + vector.y;
	v.z = z + vector.z;
	return v;
}


//運算符重載(+)
//參數為VECTOR3D結構,返回另一個CVector3d對象
inline CVector3d CVector3d::operator + (const VECTOR3D& vector)
{
	CVector3d v;
	v.x = x + vector.x;
	v.y = y + vector.y;
	v.z = z + vector.z;
	return v;
}


//運算符重載(+=)
//參數為CVector3d對象
inline CVector3d CVector3d::operator += (const CVector3d& vector)
{
	x += vector.x;
	y += vector.y;
	z += vector.z;
	return *this;
}

//運算符重載(+=)
//參數為VECTOR3D結構
inline CVector3d CVector3d::operator += (const VECTOR3D& vector)
{
	x += vector.x;
	y += vector.y;
	z += vector.z;
	return *this;
}

//運算符重載(-)
//參數為CVector3d對象,為減數,返回另一個CVector3d對象
inline CVector3d CVector3d::operator - (const CVector3d& vector)
{
	CVector3d v;
	v.x = x - vector.x;
	v.y = y - vector.y;
	v.z = z - vector.z;
	return v;
}

//運算符重載(-)
//參數為VECTOR3D結構,為減數,返回另一個CVector3d對象
inline CVector3d CVector3d::operator - (const VECTOR3D& vector)
{
	CVector3d v;
	v.x = x - vector.x;
	v.y = y - vector.y;
	v.z = z - vector.z;
	return v;
}

//運算符重載(-=)
//參數為CVector3d對象,為減數
inline CVector3d CVector3d::operator -= (const CVector3d& vector)
{
	x -= vector.x;
	y -= vector.y;
	z -= vector.z;
	return *this;
}

//運算符重載(-=)
//參數為VECTOR3D結構,為減數
inline CVector3d CVector3d::operator -= (const VECTOR3D& vector)
{
	x -= vector.x;
	y -= vector.y;
	z -= vector.z;
	return *this;
}

//運算符重載(*),作向量叉積
//參數為CVector3d對象,為乘數,返回另一個CVector3d對象
inline CVector3d CVector3d::operator * (const CVector3d& vector)
{
	CVector3d v;
	v.x = (y * vector.z - z * vector.y);
	v.y = (z * vector.x - x * vector.z);
	v.z = (x * vector.y - y * vector.x);
	return v;
}

//運算符重載(*),作向量叉積
//參數為VECTOR3D結構,為乘數,返回另一個CVector3d對象
inline CVector3d CVector3d::operator * (const VECTOR3D& vector)
{
	CVector3d v;
	v.x = (y * vector.z - z * vector.y);
	v.y = (z * vector.x - x * vector.z);
	v.z = (x * vector.y - y * vector.x);
	return v;
}

//運算符重載(*),標量與向量之積
//參數為浮點標量,返回另一個CVector3d對象
inline CVector3d CVector3d::operator * (float fs)
{
	CVector3d v;
	v.x = x * fs;
	v.y = y * fs;
	v.z = z * fs;
	return v;
}

//運算符重載(*=),作向量叉積
//參數為CVector3d對象,為乘數,
inline CVector3d CVector3d::operator *= (const CVector3d& vector)
{
	float xx = (y * vector.z - z * vector.y);
	float yy = (z * vector.x - x * vector.z);
	float zz = (x * vector.y - y * vector.x);
	x = xx;
	y = yy;
	z = zz;
	return *this;
}

//運算符重載(*=),作向量叉積
//參數為VECTOR3D結構,為乘數
inline CVector3d CVector3d::operator *= (const VECTOR3D& vector)
{
	float xx = (y * vector.z - z * vector.y);
	float yy = (z * vector.x - x * vector.z);
	float zz = (x * vector.y - y * vector.x);
	x = xx;
	y = yy;
	z = zz;
	return *this;
}

//運算符重載(*),標量與向量之積
//參數為浮點標量
inline CVector3d CVector3d::operator *= (float fs)
{
	x *= fs;
	y *= fs;
	z *= fs;
	return *this;
}

//////////////////////////////////////////////////////////////////////////////////////////////
//
//					  其它基本運算  
//
//////////////////////////////////////////////////////////////////////////////////////////////

//向量內積
inline float CVector3d::Dot(const CVector3d& vector)
{
	return (x * vector.x + y * vector.y + z * vector.z);
}

//向量內積
inline float CVector3d::Dot(const VECTOR3D& vector)
{
	return (x * vector.x + y * vector.y + z * vector.z);
}

//向量內積
inline float CVector3d::Dot(float x,float y, float z)
{
	return (this->x * x + this->y * y + this->z * z);
}

//向量的模
inline float CVector3d::Mag()
{
	return (float)(sqrt(x * x + y * y + z * z));
}

//向量模的平方
inline float CVector3d::MagSquared()
{
	return (x * x + y * y + z * z);
}

//兩向量矢量端點之間的距離
inline float CVector3d::Dist(const CVector3d& vector)
{
	return (*this - vector).Mag();
}

//兩向量矢量端點之間的距離
inline float CVector3d::Dist(const VECTOR3D& vector)
{
	return (*this - vector).Mag();
}

//兩向量矢量端點之間的距離
inline float CVector3d::Dist(float x,float y,float z)
{
	return (float)sqrt((this->x - x) * (this->x - x) + (this->y - y) * (this->y - y) + (this->z - z) * (this->z - z)); 
}

//向量單位化
//向量單位化,返回一個單位向量
inline CVector3d CVector3d::Unit()
{
	CVector3d vector;
	float fMag = (float)sqrt(x * x + y * y + z * z);
	if(fMag < 0.0001f)fMag = 1.0f;
	vector.x = x / fMag;
	vector.y = y / fMag;
	vector.z = z / fMag;
	return vector;
}

//自身單位化
inline void CVector3d::Unitize()
{
	float fMag = (float)sqrt(x * x + y * y + z * z);
	if(fMag < 0.0001f)fMag = 1.0f;
	x /= fMag;
	y /= fMag;
	z /= fMag;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜桃香蕉精品一区二区三区| 91小宝寻花一区二区三区| 国产精品成人网| 国产欧美综合色| 26uuu精品一区二区三区四区在线| 337p亚洲精品色噜噜噜| 欧美日韩电影在线播放| 欧美日韩精品三区| 91精品国产综合久久久久| 欧美日韩精品欧美日韩精品 | 国产一区二区三区精品欧美日韩一区二区三区| 一区二区三区在线视频观看| 一区二区三区中文免费| 亚洲国产精品天堂| 首页国产欧美日韩丝袜| 免费观看一级特黄欧美大片| 精品一区二区在线播放| 韩国成人在线视频| 成人免费视频网站在线观看| 91免费观看国产| 欧美精品色综合| 久久免费偷拍视频| 亚洲欧美日韩国产成人精品影院| 亚洲成人一区在线| 久久99国产精品久久99果冻传媒| 国产中文字幕一区| 91免费看片在线观看| 久久久不卡网国产精品一区| 国产精品美女久久久久久久久| 日韩美女啊v在线免费观看| 亚洲二区在线视频| 国产真实乱对白精彩久久| aaa国产一区| 欧美一区二区三区四区五区| 国产亚洲精品超碰| 亚欧色一区w666天堂| 激情综合色播激情啊| 99re热视频精品| 91麻豆精品国产自产在线| 久久综合色之久久综合| 亚洲欧美自拍偷拍色图| 国产精品网站在线观看| 五月天亚洲精品| 久久国产精品免费| 色综合中文字幕国产| 色偷偷久久一区二区三区| 91精品国产麻豆国产自产在线 | 国产精品视频第一区| 国产精品美女视频| 日韩成人免费电影| 一区二区在线观看视频| 五月婷婷激情综合| 国产精品99久久久久久久vr| 99re热这里只有精品视频| 欧美色爱综合网| 日本一区二区综合亚洲| 国产精品福利影院| 美女免费视频一区二区| 播五月开心婷婷综合| 欧美夫妻性生活| ...av二区三区久久精品| 免费成人在线观看| 91老司机福利 在线| 久久一区二区三区四区| 中文字幕一区不卡| 久久国产精品露脸对白| 91黄色激情网站| 中文一区一区三区高中清不卡| 午夜电影网亚洲视频| 成人av午夜电影| 久久综合久久综合久久综合| 婷婷国产在线综合| 色婷婷综合五月| 久久无码av三级| 国产高清在线精品| 中文字幕免费观看一区| 成人av免费在线| 自拍视频在线观看一区二区| 91欧美一区二区| 亚洲一区二区视频| 欧美日韩视频第一区| 亚洲乱码中文字幕| 色香蕉久久蜜桃| 亚洲免费在线看| 99精品一区二区三区| 国产精品素人一区二区| 国产精品99久久久| 欧美一区二区在线不卡| 久久er99精品| 26uuu国产电影一区二区| 另类小说综合欧美亚洲| 日韩欧美一二三四区| 人禽交欧美网站| 制服.丝袜.亚洲.中文.综合| 日韩电影在线一区二区三区| 欧美嫩在线观看| 亚洲成va人在线观看| 日韩午夜电影在线观看| 国产福利一区二区| 国产精品美女久久福利网站| www.亚洲色图.com| 亚洲bt欧美bt精品| 日韩视频在线你懂得| 久久精品理论片| 久久精品一二三| 国产69精品久久久久777| 国产精品毛片久久久久久| 91在线观看成人| 亚洲国产wwwccc36天堂| 7777女厕盗摄久久久| 国产精品99久久久| 亚洲欧美偷拍三级| 91精品国产色综合久久久蜜香臀| 人人精品人人爱| 国产女主播一区| 色又黄又爽网站www久久| 婷婷综合在线观看| 欧美精品一区二区三区高清aⅴ| 91成人在线精品| 日本va欧美va精品发布| 欧美高清一级片在线观看| youjizz久久| 天涯成人国产亚洲精品一区av| 精品日韩在线一区| av在线免费不卡| 午夜精品福利视频网站| 综合欧美亚洲日本| 日韩免费看的电影| 99久久99久久综合| 久久成人18免费观看| 亚洲视频一区二区免费在线观看| 欧美日韩电影一区| 成人黄动漫网站免费app| 亚洲国产成人av| 欧美国产日韩在线观看| 欧美一区二区在线看| 97精品久久久午夜一区二区三区 | 国产99久久久国产精品潘金网站| 中文字幕国产精品一区二区| 久久电影国产免费久久电影| 最新不卡av在线| 日韩精品专区在线| 五月天激情综合| 日韩三区在线观看| 亚洲一区二区三区视频在线播放| 毛片基地黄久久久久久天堂| 日韩一区在线播放| 日韩激情av在线| 黑人巨大精品欧美黑白配亚洲| 激情小说亚洲一区| 成人精品国产免费网站| 91久久免费观看| 3d成人动漫网站| 中文字幕一区二区三| 亚洲一二三四在线观看| 久久精品国产999大香线蕉| 国产一区高清在线| 99久久er热在这里只有精品15| 在线免费观看日本一区| 欧美一区二区久久| 亚洲人成网站在线| 天堂久久久久va久久久久| 成人久久视频在线观看| 欧美视频在线观看一区| 久久综合五月天婷婷伊人| 成人免费在线视频| 五月天一区二区| 91麻豆视频网站| 欧美电视剧免费观看| 中文字幕一区二区三区在线观看| 亚洲国产精品久久艾草纯爱| 国产在线播放一区三区四| 欧美在线短视频| 欧美成人欧美edvon| 亚洲日本va午夜在线影院| 麻豆精品一区二区av白丝在线| 国产91高潮流白浆在线麻豆| 欧美精品高清视频| 国产精品色呦呦| 亚洲va韩国va欧美va| 91蜜桃网址入口| 久久夜色精品国产欧美乱极品| 一区二区三区电影在线播| 国产精品影音先锋| 欧美男生操女生| 亚洲视频一区二区免费在线观看| 国产精品2024| 欧美不卡一区二区| 亚洲动漫第一页| 91色婷婷久久久久合中文| 国产日韩欧美精品一区| 精品一区二区三区免费| 国产欧美一区二区在线观看| 性做久久久久久免费观看欧美| 欧美在线免费观看亚洲| 国产精品久久久久婷婷二区次| 久久国产精品无码网站| 91精品国产91热久久久做人人| 一区二区三区在线视频免费| 成人免费视频app|