青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

一個3D向量類

新建網頁 1 提供以下基本操作:

1.   存取向量的各分量(x, y , z)
2.   向量間的賦值操作
3.   比較兩向量是否相同
4.   將向量置為零向量
5.   向量求負
6.   求向量的模
7.   向量與標量的乘除法
8.   向量標準化
9.   向量加減法
10. 計算兩點(點用向量表示)間距離
11. 向量點乘
12. 向量叉乘

該向量的操作運算對3D點同樣適合。
    #include <math.h>
    
    
class cVector3
    {
    
public:
        
float x, y, z;
    
    
public:
        cVector3() { }
    
        cVector3(
const cVector3& v)
        {    
            x = v.x;    y = v.y;    z = v.z;    
        }
    
        cVector3(
float vx, float vy, float vz)
        {
            x = vx;        y = vy;        z = vz;
        }
    
        cVector3& 
operator=(const cVector3& v)
        {
            x = v.x;    y = v.y;    z = v.z;
    
            
return *this;
        }
    
        
bool operator==(const cVector3& v)
        {
            
return (x == v.x && y == v.y && z == v.z);
        }
    
        
bool operator!=(const cVector3& v)
        {
            
return (x != v.x || y != v.y || z != v.z);
        }
    
        
void zero()
        {
            
// set the vector to zero
    
        x = y = z = 0.0f;
        }
    
        cVector3 
operator-()
        {
            
// unary minus returns the negative of the vector
    
        return cVector3(-x, -y, -z);
        }
    
        cVector3 
operator+(const cVector3& v)
        {
            
return cVector3(x + v.x, y + v.y, z + v.z);
        }
    
        cVector3 
operator-(const cVector3& v)
        {
            
return cVector3(x - v.x, y - v.y, z - v.z);
        }
    
        cVector3 
operator*(float scale)
        {
            
// multiplication and division by scalar
    
        return cVector3(x * scale, y * scale, z * scale);
        }
    
        cVector3 
operator/(float scale)
        {
            
float temp = 1.0f / scale;    // NOTE: no check for divide by zero here
    

            
return cVector3(x * temp, y * temp, z * temp);
        }
    
        cVector3& 
operator+=(const cVector3& v)
        {
            x += v.x;    y += v.y;    z += v.z;
    
            
return *this;
        }
    
        cVector3& 
operator-=(const cVector3& v)
        {
            x -= v.x;    y -= v.y;    z -= v.z;
    
            
return *this;
        }
    
        cVector3& 
operator*=(float scale)
        {
            x *= scale;    y *= scale;    z *= scale;
    
            
return *this;
        }
    
        cVector3& 
operator/=(float scale)
        {
            
float temp = 1.0f / scale;
    
            x *= temp;    y *= temp;    z *= temp;
    
            
return *this;
        }
    
        
void normalize()
        {
            
// normalize the vector
    

            
float mag = x * x + y * y + z * z;
    
            
if(mag > 0.0f)    // check for divide-by-zero
    
        {
                
float one_over_mag = 1.0f / sqrt(mag);
    
                x *= one_over_mag;
                y *= one_over_mag;
                z *= one_over_mag;
            }
        }
    
        
float operator*(const cVector3& v)
        {
            
// vector dot product, we overload the standard multiplication symbol to do this.
    

            
return (x * v.x + y * v.y + z * v.z);
        }
    };
    
    
    /***************************************************************************************************/
    
    inline 
float vector_mag(const cVector3& v)
    {
        
// compute the magnitude of a vector
    
    return sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
    }
    
    inline cVector3 cross_product(
const cVector3& a, const cVector3& b)
    {
        
// compute the cross product of two vectors
    
    return cVector3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x);
    }
    
    inline cVector3 
operator*(float k, const cVector3& v)
    {
        
// scalar on the left multiplication, for symmetry.
    
    return cVector3(k * v.x, k * v.y, k * v.z);
    }
    
    inline 
float distance(const cVector3& a, const cVector3& b)
    {
        
// compute the distance between two points
    

        
float dx = a.x - b.x;
        
float dy = a.y - b.y;
        
float dz = a.z - b.z;
    
        
return sqrt(dx * dx + dy * dy + dz * dz);
    }
    
    inline 
float distance_squared(const cVector3& a, const cVector3& b)
    {
        
// compute the distance between two points
    

        
float dx = a.x - b.x;
        
float dy = a.y - b.y;
        
float dz = a.z - b.z;
    
        
return (dx * dx + dy * dy + dz * dz);
    }
    
    
extern const cVector3 g_zero_vector;

posted on 2008-01-08 21:58 lovedday 閱讀(1957) 評論(0)  編輯 收藏 引用 所屬分類: ■ 3D Math Basis

公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线三区| 亚洲黄色精品| 国产精品视频福利| 欧美午夜视频| 国产欧美精品xxxx另类| 国产精品视频yy9099| 国产美女精品在线| 国产真实乱偷精品视频免| 国产精品极品美女粉嫩高清在线| 欧美成人免费大片| 欧美日韩一级片在线观看| 国产精品久久久对白| 国产欧美日韩综合一区在线播放| 国产主播一区二区三区| 91久久久一线二线三线品牌| 夜夜嗨一区二区| 亚洲综合色激情五月| 久久久久久自在自线| 久久久久青草大香线综合精品| 欧美一区二区成人| 亚洲永久字幕| 久久午夜精品一区二区| 欧美激情精品久久久久久蜜臀| 亚洲毛片一区二区| 欧美在线观看视频一区二区| 麻豆九一精品爱看视频在线观看免费| 欧美精品在线免费| 国产欧美日韩一级| 亚洲精品少妇30p| 欧美综合77777色婷婷| 欧美二区在线看| 亚洲免费在线视频| 欧美成人免费全部| 国产一区美女| 亚洲一区二区三区中文字幕 | 免费久久精品视频| 欧美色区777第一页| 依依成人综合视频| 欧美在线视频免费观看| 亚洲日韩成人| 免费欧美日韩| 黄色成人在线免费| 久久精品一本| 亚洲免费一在线| 国产精品久久久久久久久久直播| 亚洲国产网站| 蜜桃av噜噜一区二区三区| 亚洲午夜免费福利视频| 欧美日韩1区| 在线日本成人| 欧美在线免费视屏| 亚洲无限乱码一二三四麻| 欧美人与禽猛交乱配视频| 亚洲激情不卡| 欧美高清你懂得| 毛片av中文字幕一区二区| 国产有码在线一区二区视频| 性欧美video另类hd性玩具| 亚洲另类一区二区| 欧美日韩在线综合| 亚洲欧美不卡| 亚洲欧美国产毛片在线| 国产精品久久久一区二区三区| 亚洲深夜福利视频| 亚洲一级片在线看| 国产欧美亚洲视频| 久久久午夜精品| 欧美一区二区视频在线观看| 国产欧美日韩视频在线观看| 久久精品国产清自在天天线| 亚洲免费视频中文字幕| 国产亚洲日本欧美韩国| 久久免费高清视频| 久久亚洲美女| 亚洲精品国产精品国自产观看| 欧美黑人一区二区三区| 中国av一区| 久久艳片www.17c.com| 另类欧美日韩国产在线| 亚洲精选一区二区| 一区二区三区视频在线播放| 国产精品一区二区在线观看不卡| 久久疯狂做爰流白浆xx| 久久亚洲影音av资源网| 亚洲美女中文字幕| 亚洲免费影视| 亚洲人www| 亚洲一区二区黄| 亚洲高清免费视频| 99精品99| 在线观看日韩国产| 一区二区三区国产精品| 国内精品一区二区三区| 亚洲精品看片| 国产日韩在线亚洲字幕中文| 欧美成人中文字幕| 国产精品天天看| 亚洲国产精品久久久久秋霞不卡| 国产精品二区在线观看| 美女日韩欧美| 国产精品欧美一区二区三区奶水| 免费观看久久久4p| 国产精品久久午夜夜伦鲁鲁| 亚洲成色最大综合在线| 国产亚洲精品激情久久| 亚洲精品中文在线| 狠狠色丁香婷婷综合| 亚洲美女毛片| 亚洲国产经典视频| 亚洲尤物视频网| 99精品视频免费观看视频| 久久精品亚洲一区二区| 亚洲自啪免费| 欧美日韩另类字幕中文| 欧美成人精品在线播放| 国产精品午夜在线观看| 日韩亚洲不卡在线| 亚洲精品国精品久久99热一| 久久精品国产一区二区三区免费看 | 亚洲在线观看视频网站| 欧美成人午夜影院| 欧美~级网站不卡| 国产午夜精品理论片a级大结局| 亚洲精品综合在线| 亚洲美女av黄| 免费日韩av| 欧美成人久久| 亚洲福利小视频| 久久午夜激情| 欧美14一18处毛片| 亚洲国产免费看| 久久午夜电影| 欧美国产精品劲爆| 国产综合视频| 久久精品网址| 欧美va天堂在线| 亚洲国产高清一区| 欧美激情第8页| 亚洲人精品午夜| 99国产精品视频免费观看| 亚洲婷婷综合久久一本伊一区| 亚洲激情国产精品| 久久蜜桃精品| 欧美1区2区| 亚洲精品国产日韩| 欧美激情视频在线免费观看 欧美视频免费一 | 国产婷婷色一区二区三区| 亚洲一区激情| 欧美中文字幕在线视频| 国产午夜精品一区理论片飘花| 午夜精品视频在线| 久久先锋影音av| 亚洲片在线观看| 国产精品久久久久久久久借妻 | 欧美一区二区三区喷汁尤物| 国产精品毛片a∨一区二区三区|国| 亚洲视频欧洲视频| 久久激情综合网| 亚洲欧洲一区二区三区| 欧美日韩精品系列| 亚洲欧美日韩成人高清在线一区| 久久久久在线观看| 亚洲啪啪91| 国产免费一区二区三区香蕉精| 久久精品国产69国产精品亚洲 | 夜夜嗨av一区二区三区中文字幕| 亚洲欧美在线一区二区| 国产一区在线看| 欧美美女操人视频| 亚洲欧美日韩一区在线| 欧美成人精品在线视频| 亚洲一区高清| 在线观看中文字幕不卡| 欧美色道久久88综合亚洲精品| 欧美影院成人| 99re热这里只有精品免费视频| 久久国产精品99国产| 亚洲欧洲精品一区二区精品久久久| 国产精品yjizz| 美女999久久久精品视频| 亚洲一区二区三区免费在线观看| 欧美电影免费观看高清完整版| 午夜精品网站| 一本色道久久加勒比88综合| 国产主播喷水一区二区| 欧美视频中文一区二区三区在线观看 | 亚洲第一精品影视| 欧美午夜在线视频| 噜噜噜91成人网| 欧美一区二区三区男人的天堂| 亚洲国产精品一区二区久| 欧美在线一区二区| 国产日本亚洲高清| 一区二区三区欧美日韩| 欧美h视频在线| 久久精品一区二区三区四区| 亚洲一区视频在线| 一本色道久久综合亚洲精品不卡| 在线观看亚洲| 国内精品久久久久久|