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

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

?? vector.h

?? 有個小游戲
?? H
字號:
#ifndef __VECTOR_H
#define __VECTOR_H

#include <math.h>

/*
     VECTOR.H

     CVector class

     OpenGL Game Programming
     by Kevin Hawkins and Dave Astle

     Some operators of the CVector class based on
     operators of the CVector class by Bas Kuenen.
     Copyright (c) 2000 Bas Kuenen. All Rights Reserved.
     homepage: baskuenen.cfxweb.net
*/

#define PI		(3.14159265359f)
#define DEG2RAD(a)	(PI/180*(a))
#define RAD2DEG(a)	(180/PI*(a))

typedef float scalar_t;

class CVector
{
public:
	union
	{
		struct
		{	
			scalar_t x;
			scalar_t y;
			scalar_t z;    // x,y,z coordinates
		};
		scalar_t v[3];
	};

public:
     CVector(scalar_t a = 0, scalar_t b = 0, scalar_t c = 0) : x(a), y(b), z(c) {}
     CVector(const CVector &vec) : x(vec.x), y(vec.y), z(vec.z) {}

	// vector index
	scalar_t &operator[](const long idx)
	{
		return *((&x)+idx);
	}

     // vector assignment
     const CVector &operator=(const CVector &vec)
     {
          x = vec.x;
          y = vec.y;
          z = vec.z;

          return *this;
     }

     // vecector equality
     const bool operator==(const CVector &vec) const
     {
          return ((x == vec.x) && (y == vec.y) && (z == vec.z));
     }

     // vecector inequality
     const bool operator!=(const CVector &vec) const
     {
          return !(*this == vec);
     }

     // vector add
     const CVector operator+(const CVector &vec) const
     {
          return CVector(x + vec.x, y + vec.y, z + vec.z);
     }

     // vector add (opposite of negation)
     const CVector operator+() const
     {    
          return CVector(*this);
     }

     // vector increment
     const CVector& operator+=(const CVector& vec)
     {    x += vec.x;
          y += vec.y;
          z += vec.z;
          return *this;
     }

     // vector subtraction
     const CVector operator-(const CVector& vec) const
     {    
          return CVector(x - vec.x, y - vec.y, z - vec.z);
     }
     
     // vector negation
     const CVector operator-() const
     {    
          return CVector(-x, -y, -z);
     }

     // vector decrement
     const CVector &operator-=(const CVector& vec)
     {
          x -= vec.x;
          y -= vec.y;
          z -= vec.z;

          return *this;
     }

     // scalar self-multiply
     const CVector &operator*=(const scalar_t &s)
     {
          x *= s;
          y *= s;
          z *= s;
          
          return *this;
     }

     // scalar self-divecide
     const CVector &operator/=(const scalar_t &s)
     {
          const float recip = 1/s; // for speed, one divecision

          x *= recip;
          y *= recip;
          z *= recip;

          return *this;
     }

     // post multiply by scalar
     const CVector operator*(const scalar_t &s) const
     {
          return CVector(x*s, y*s, z*s);
     }

     // pre multiply by scalar
     friend inline const CVector operator*(const scalar_t &s, const CVector &vec)
     {
          return vec*s;
     }

	const CVector operator*(const CVector& vec) const
	{
		return CVector(x*vec.x, y*vec.y, z*vec.z);
	}

	// post multiply by scalar
     /*friend inline const CVector operator*(const CVector &vec, const scalar_t &s)
     {
          return CVector(vec.x*s, vec.y*s, vec.z*s);
     }*/

    // divide by scalar
     const CVector operator/(scalar_t s) const
     {
          s = 1/s;

          return CVector(s*x, s*y, s*z);
     }

     // cross product
     const CVector CrossProduct(const CVector &vec) const
     {
          return CVector(y*vec.z - z*vec.y, z*vec.x - x*vec.z, x*vec.y - y*vec.x);
     }

     // cross product
     const CVector operator^(const CVector &vec) const
     {
          return CVector(y*vec.z - z*vec.y, z*vec.x - x*vec.z, x*vec.y - y*vec.x);
     }

     // dot product
     const scalar_t DotProduct(const CVector &vec) const
     {
          return x*vec.x + y*vec.x + z*vec.z;
     }

     // dot product
     const scalar_t operator%(const CVector &vec) const
     {
          return x*vec.x + y*vec.x + z*vec.z;
     }

     // length of vector
     const scalar_t Length() const
     {
          return (scalar_t)sqrt((double)(x*x + y*y + z*z));
     }

     // return the unit vector
     const CVector UnitVector() const
     {
          return (*this) / Length();
     }

     // normalize this vector
     void Normalize()
     {
          (*this) /= Length();
     }

     const scalar_t operator!() const
     {
          return sqrtf(x*x + y*y + z*z);
     }

     // return vector with specified length
     const CVector operator | (const scalar_t length) const
     {
          return *this * (length / !(*this));
     }

     // set length of vector equal to length
     const CVector& operator |= (const float length)
     {
          return *this = *this | length;
     }

     // return angle between two vectors
     const float inline Angle(const CVector& normal) const
     {
          return acosf(*this % normal);
     }

     // reflect this vector off surface with normal vector
     const CVector inline Reflection(const CVector& normal) const
     {    
          const CVector vec(*this | 1);     // normalize this vector
          return (vec - normal * 2.0 * (vec % normal)) * !*this;
     }

	// rotate angle degrees about a normal
	const CVector inline Rotate(const float angle, const CVector& normal) const
	{	
		const float cosine = cosf(angle);
		const float sine = sinf(angle);

		return CVector(*this * cosine + ((normal * *this) * (1.0f - cosine)) *
			          normal + (*this ^ normal) * sine);
	}
};

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色电影在线 | 精品少妇一区二区三区在线视频| 精品亚洲porn| 亚洲在线成人精品| 久久久99精品免费观看| 欧美久久一二三四区| 99久久久精品| 国产精品123| 久久超碰97中文字幕| 一区二区高清视频在线观看| 精品国产伦一区二区三区观看方式 | 捆绑紧缚一区二区三区视频| 亚洲裸体在线观看| 日本一区二区三区电影| 精品国产91乱码一区二区三区| 欧美日韩中文字幕一区二区| 91同城在线观看| 国产ts人妖一区二区| 久久精品二区亚洲w码| 日日骚欧美日韩| 午夜精品一区二区三区电影天堂| 亚洲男人的天堂在线观看| 中文久久乱码一区二区| 26uuu精品一区二区| 日韩欧美区一区二| 这里只有精品视频在线观看| 欧美在线观看一区二区| www.欧美亚洲| 不卡的av电影在线观看| 丰满少妇久久久久久久| 国产剧情一区二区| 国内精品视频666| 精品一区二区三区的国产在线播放| 天使萌一区二区三区免费观看| 亚洲国产综合人成综合网站| 亚洲一区二区三区视频在线| 亚洲一二三级电影| 亚洲国产wwwccc36天堂| 亚洲第一久久影院| 亚洲成精国产精品女| 亚洲成人动漫av| 婷婷综合另类小说色区| 日韩国产精品久久久| 蜜臀久久99精品久久久画质超高清| 水野朝阳av一区二区三区| 日韩成人免费看| 久久国产精品露脸对白| 韩国成人在线视频| 国产成人鲁色资源国产91色综| 国产999精品久久久久久 | 欧美片在线播放| 7777精品伊人久久久大香线蕉的 | 精品国产髙清在线看国产毛片| 欧美一级一级性生活免费录像| 欧美v日韩v国产v| 久久精品一级爱片| 国产精品丝袜一区| 亚洲精品免费在线观看| 性做久久久久久免费观看欧美| 日本aⅴ免费视频一区二区三区| 久久精品国产久精国产| 国产精品一区一区三区| bt7086福利一区国产| 欧美系列在线观看| 精品国精品自拍自在线| 中文字幕欧美日韩一区| 亚洲一区二区在线免费观看视频| 日韩国产精品久久久| 国产成人8x视频一区二区| 91麻豆福利精品推荐| 宅男在线国产精品| 久久久精品2019中文字幕之3| 亚洲视频小说图片| 免费久久99精品国产| 国产成人av网站| 欧美另类一区二区三区| 欧美韩日一区二区三区| 亚洲电影你懂得| 国产一区二区三区黄视频| 日本黄色一区二区| 久久久久久久久伊人| 亚洲大片一区二区三区| 国产精品一级片在线观看| 91久久免费观看| 国产亚洲成aⅴ人片在线观看| 亚洲一区二区欧美日韩| 国产成人午夜高潮毛片| 欧美唯美清纯偷拍| 久久精品视频在线看| 蜜臀精品一区二区三区在线观看 | 亚洲男同性视频| 国产乱码字幕精品高清av | 日本aⅴ精品一区二区三区| 北条麻妃国产九九精品视频| 欧美狂野另类xxxxoooo| 中文字幕一区日韩精品欧美| 麻豆精品久久精品色综合| 色综合久久久久网| 国产欧美日韩中文久久| 日本vs亚洲vs韩国一区三区| 91在线观看地址| 欧美极品xxx| 久久精品国产一区二区三区免费看| 色悠久久久久综合欧美99| 久久久久久久电影| 三级久久三级久久| 色婷婷亚洲精品| 国产精品美女久久久久高潮| 美脚の诱脚舐め脚责91 | 99视频超级精品| 久久一区二区三区国产精品| 日日嗨av一区二区三区四区| 色狠狠综合天天综合综合| 国产精品激情偷乱一区二区∴| 久久福利资源站| 日韩免费高清av| 秋霞av亚洲一区二区三| 欧美老人xxxx18| 亚洲综合区在线| 欧洲精品在线观看| 亚洲最新视频在线观看| 99re这里只有精品首页| 国产精品日日摸夜夜摸av| 国产不卡视频一区二区三区| 国产网站一区二区| 国模一区二区三区白浆| 精品免费日韩av| 国产真实乱对白精彩久久| 精品国产露脸精彩对白| 黄色小说综合网站| 久久人人爽爽爽人久久久| 国产一区二区91| 国产欧美一区视频| 国产99精品在线观看| 国产精品美女久久久久aⅴ国产馆| 国产在线播放一区三区四| 久久久久亚洲综合| 国产精品88888| 中文字幕中文字幕一区二区| 99久久99久久精品免费观看 | 亚洲一区二区三区中文字幕| 色综合亚洲欧洲| 亚洲国产综合人成综合网站| 欧美区视频在线观看| 蜜臀久久久99精品久久久久久| 欧美v日韩v国产v| 国产夫妻精品视频| 国产精品成人免费在线| 日本韩国一区二区三区视频| 亚洲6080在线| 日韩欧美的一区| 国产v日产∨综合v精品视频| 日韩一区二区精品在线观看| 青青草国产成人99久久| 1区2区3区欧美| 日韩欧美国产一区在线观看| 欧美激情综合网| 玖玖九九国产精品| 欧美午夜电影网| 老司机精品视频线观看86| 欧美—级在线免费片| 色哦色哦哦色天天综合| 日韩福利视频导航| 国产午夜久久久久| 色老汉一区二区三区| 美女在线视频一区| 国产精品伦理一区二区| 欧美三级在线播放| 国产一区二区不卡在线| 亚洲综合丝袜美腿| 精品国产一区久久| 91在线播放网址| 久久国产精品99久久久久久老狼| 中文字幕欧美激情| 欧美日韩国产高清一区二区| 久久99久久99精品免视看婷婷| 中文字幕一区二区三区四区不卡| 欧美日韩亚洲综合一区| 国产一区二区三区视频在线播放| 亚洲日本韩国一区| 精品国产一区二区三区久久久蜜月 | 一区二区三区日韩在线观看| 久久九九久精品国产免费直播| 日韩欧美一二三四区| 天天亚洲美女在线视频| 国产精品国产自产拍高清av| 91精品国产综合久久蜜臀| 99riav一区二区三区| 国内外成人在线| 亚洲高清中文字幕| 中文字幕一区视频| 精品免费视频.| 欧美女孩性生活视频| 91丝袜高跟美女视频| 韩国毛片一区二区三区| 亚洲第一会所有码转帖| 亚洲色图视频免费播放| 久久久久99精品一区| 91精品国产综合久久久久久| 色婷婷久久综合|