⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vector4.cpp

📁 WOW 服务模拟端 支持2.4.3版本 来自开源的ASCENT 自己REPACK
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/**
 @file Vector4.cpp
 
 @maintainer Morgan McGuire, matrix@graphics3d.com
  
 @created 2001-07-09
 @edited  2003-09-29
 */

#include <stdlib.h>
#include <limits>
#include "G3D/Vector4.h"
//#include "G3D/Color4.h"
#include "G3D/g3dmath.h"
#include "G3D/format.h"
#include "G3D/stringutils.h"

namespace G3D {

size_t Vector4::hashCode() const {
    size_t xhash = (*(size_t*)(void*)(&x));
    size_t yhash = (*(size_t*)(void*)(&y));
    size_t zhash = (*(size_t*)(void*)(&z));
    size_t whash = (*(int*)(void*)(&w));

    return xhash + (yhash * 37) + (zhash * 101) + (whash * 241);
}

#if 0
Vector4::Vector4(const class Color4& c) {
    x = c.r;
    y = c.g;
    z = c.b;
    w = c.a;
}
#endif


Vector4::Vector4(const Vector2& v1, const Vector2& v2) {
    x = v1.x;
    y = v1.y;
    z = v2.x;
    w = v2.y;
}


Vector4::Vector4(const Vector2& v1, float fz, float fw) {
    x = v1.x;
    y = v1.y;
    z = fz;
    w = fw;
}

//----------------------------------------------------------------------------

Vector4 Vector4::operator/ (float fScalar) const {
    Vector4 kQuot;

    if ( fScalar != 0.0 ) {
		float fInvScalar = 1.0f / fScalar;
        kQuot.x = fInvScalar * x;
        kQuot.y = fInvScalar * y;
        kQuot.z = fInvScalar * z;
        kQuot.w = fInvScalar * w;
        return kQuot;
    } else {
        return Vector4::inf();
    }
}

//----------------------------------------------------------------------------
Vector4& Vector4::operator/= (float fScalar) {
    if (fScalar != 0.0f) {
		float fInvScalar = 1.0f / fScalar;
        x *= fInvScalar;
        y *= fInvScalar;
        z *= fInvScalar;
        w *= fInvScalar;
    } else {
		*this = Vector4::inf();
    }

    return *this;
}


//----------------------------------------------------------------------------

std::string Vector4::toString() const {
    return G3D::format("(%g, %g, %g, %g)", x, y, z, w);
}
// 2-char swizzles

Vector2 Vector4::xx() const  { return Vector2       (x, x); }
Vector2 Vector4::yx() const  { return Vector2       (y, x); }
Vector2 Vector4::zx() const  { return Vector2       (z, x); }
Vector2 Vector4::wx() const  { return Vector2       (w, x); }
Vector2 Vector4::xy() const  { return Vector2       (x, y); }
Vector2 Vector4::yy() const  { return Vector2       (y, y); }
Vector2 Vector4::zy() const  { return Vector2       (z, y); }
Vector2 Vector4::wy() const  { return Vector2       (w, y); }
Vector2 Vector4::xz() const  { return Vector2       (x, z); }
Vector2 Vector4::yz() const  { return Vector2       (y, z); }
Vector2 Vector4::zz() const  { return Vector2       (z, z); }
Vector2 Vector4::wz() const  { return Vector2       (w, z); }
Vector2 Vector4::xw() const  { return Vector2       (x, w); }
Vector2 Vector4::yw() const  { return Vector2       (y, w); }
Vector2 Vector4::zw() const  { return Vector2       (z, w); }
Vector2 Vector4::ww() const  { return Vector2       (w, w); }

// 3-char swizzles

Vector3 Vector4::xxx() const  { return Vector3       (x, x, x); }
Vector3 Vector4::yxx() const  { return Vector3       (y, x, x); }
Vector3 Vector4::zxx() const  { return Vector3       (z, x, x); }
Vector3 Vector4::wxx() const  { return Vector3       (w, x, x); }
Vector3 Vector4::xyx() const  { return Vector3       (x, y, x); }
Vector3 Vector4::yyx() const  { return Vector3       (y, y, x); }
Vector3 Vector4::zyx() const  { return Vector3       (z, y, x); }
Vector3 Vector4::wyx() const  { return Vector3       (w, y, x); }
Vector3 Vector4::xzx() const  { return Vector3       (x, z, x); }
Vector3 Vector4::yzx() const  { return Vector3       (y, z, x); }
Vector3 Vector4::zzx() const  { return Vector3       (z, z, x); }
Vector3 Vector4::wzx() const  { return Vector3       (w, z, x); }
Vector3 Vector4::xwx() const  { return Vector3       (x, w, x); }
Vector3 Vector4::ywx() const  { return Vector3       (y, w, x); }
Vector3 Vector4::zwx() const  { return Vector3       (z, w, x); }
Vector3 Vector4::wwx() const  { return Vector3       (w, w, x); }
Vector3 Vector4::xxy() const  { return Vector3       (x, x, y); }
Vector3 Vector4::yxy() const  { return Vector3       (y, x, y); }
Vector3 Vector4::zxy() const  { return Vector3       (z, x, y); }
Vector3 Vector4::wxy() const  { return Vector3       (w, x, y); }
Vector3 Vector4::xyy() const  { return Vector3       (x, y, y); }
Vector3 Vector4::yyy() const  { return Vector3       (y, y, y); }
Vector3 Vector4::zyy() const  { return Vector3       (z, y, y); }
Vector3 Vector4::wyy() const  { return Vector3       (w, y, y); }
Vector3 Vector4::xzy() const  { return Vector3       (x, z, y); }
Vector3 Vector4::yzy() const  { return Vector3       (y, z, y); }
Vector3 Vector4::zzy() const  { return Vector3       (z, z, y); }
Vector3 Vector4::wzy() const  { return Vector3       (w, z, y); }
Vector3 Vector4::xwy() const  { return Vector3       (x, w, y); }
Vector3 Vector4::ywy() const  { return Vector3       (y, w, y); }
Vector3 Vector4::zwy() const  { return Vector3       (z, w, y); }
Vector3 Vector4::wwy() const  { return Vector3       (w, w, y); }
Vector3 Vector4::xxz() const  { return Vector3       (x, x, z); }
Vector3 Vector4::yxz() const  { return Vector3       (y, x, z); }
Vector3 Vector4::zxz() const  { return Vector3       (z, x, z); }
Vector3 Vector4::wxz() const  { return Vector3       (w, x, z); }
Vector3 Vector4::xyz() const  { return Vector3       (x, y, z); }
Vector3 Vector4::yyz() const  { return Vector3       (y, y, z); }
Vector3 Vector4::zyz() const  { return Vector3       (z, y, z); }
Vector3 Vector4::wyz() const  { return Vector3       (w, y, z); }
Vector3 Vector4::xzz() const  { return Vector3       (x, z, z); }
Vector3 Vector4::yzz() const  { return Vector3       (y, z, z); }
Vector3 Vector4::zzz() const  { return Vector3       (z, z, z); }
Vector3 Vector4::wzz() const  { return Vector3       (w, z, z); }
Vector3 Vector4::xwz() const  { return Vector3       (x, w, z); }
Vector3 Vector4::ywz() const  { return Vector3       (y, w, z); }
Vector3 Vector4::zwz() const  { return Vector3       (z, w, z); }
Vector3 Vector4::wwz() const  { return Vector3       (w, w, z); }
Vector3 Vector4::xxw() const  { return Vector3       (x, x, w); }
Vector3 Vector4::yxw() const  { return Vector3       (y, x, w); }
Vector3 Vector4::zxw() const  { return Vector3       (z, x, w); }
Vector3 Vector4::wxw() const  { return Vector3       (w, x, w); }
Vector3 Vector4::xyw() const  { return Vector3       (x, y, w); }
Vector3 Vector4::yyw() const  { return Vector3       (y, y, w); }
Vector3 Vector4::zyw() const  { return Vector3       (z, y, w); }
Vector3 Vector4::wyw() const  { return Vector3       (w, y, w); }
Vector3 Vector4::xzw() const  { return Vector3       (x, z, w); }
Vector3 Vector4::yzw() const  { return Vector3       (y, z, w); }
Vector3 Vector4::zzw() const  { return Vector3       (z, z, w); }
Vector3 Vector4::wzw() const  { return Vector3       (w, z, w); }
Vector3 Vector4::xww() const  { return Vector3       (x, w, w); }
Vector3 Vector4::yww() const  { return Vector3       (y, w, w); }
Vector3 Vector4::zww() const  { return Vector3       (z, w, w); }
Vector3 Vector4::www() const  { return Vector3       (w, w, w); }

// 4-char swizzles

Vector4 Vector4::xxxx() const  { return Vector4       (x, x, x, x); }
Vector4 Vector4::yxxx() const  { return Vector4       (y, x, x, x); }
Vector4 Vector4::zxxx() const  { return Vector4       (z, x, x, x); }
Vector4 Vector4::wxxx() const  { return Vector4       (w, x, x, x); }
Vector4 Vector4::xyxx() const  { return Vector4       (x, y, x, x); }
Vector4 Vector4::yyxx() const  { return Vector4       (y, y, x, x); }
Vector4 Vector4::zyxx() const  { return Vector4       (z, y, x, x); }
Vector4 Vector4::wyxx() const  { return Vector4       (w, y, x, x); }
Vector4 Vector4::xzxx() const  { return Vector4       (x, z, x, x); }
Vector4 Vector4::yzxx() const  { return Vector4       (y, z, x, x); }
Vector4 Vector4::zzxx() const  { return Vector4       (z, z, x, x); }
Vector4 Vector4::wzxx() const  { return Vector4       (w, z, x, x); }
Vector4 Vector4::xwxx() const  { return Vector4       (x, w, x, x); }
Vector4 Vector4::ywxx() const  { return Vector4       (y, w, x, x); }
Vector4 Vector4::zwxx() const  { return Vector4       (z, w, x, x); }
Vector4 Vector4::wwxx() const  { return Vector4       (w, w, x, x); }
Vector4 Vector4::xxyx() const  { return Vector4       (x, x, y, x); }
Vector4 Vector4::yxyx() const  { return Vector4       (y, x, y, x); }
Vector4 Vector4::zxyx() const  { return Vector4       (z, x, y, x); }
Vector4 Vector4::wxyx() const  { return Vector4       (w, x, y, x); }
Vector4 Vector4::xyyx() const  { return Vector4       (x, y, y, x); }
Vector4 Vector4::yyyx() const  { return Vector4       (y, y, y, x); }
Vector4 Vector4::zyyx() const  { return Vector4       (z, y, y, x); }
Vector4 Vector4::wyyx() const  { return Vector4       (w, y, y, x); }
Vector4 Vector4::xzyx() const  { return Vector4       (x, z, y, x); }
Vector4 Vector4::yzyx() const  { return Vector4       (y, z, y, x); }
Vector4 Vector4::zzyx() const  { return Vector4       (z, z, y, x); }
Vector4 Vector4::wzyx() const  { return Vector4       (w, z, y, x); }
Vector4 Vector4::xwyx() const  { return Vector4       (x, w, y, x); }
Vector4 Vector4::ywyx() const  { return Vector4       (y, w, y, x); }
Vector4 Vector4::zwyx() const  { return Vector4       (z, w, y, x); }
Vector4 Vector4::wwyx() const  { return Vector4       (w, w, y, x); }
Vector4 Vector4::xxzx() const  { return Vector4       (x, x, z, x); }
Vector4 Vector4::yxzx() const  { return Vector4       (y, x, z, x); }
Vector4 Vector4::zxzx() const  { return Vector4       (z, x, z, x); }
Vector4 Vector4::wxzx() const  { return Vector4       (w, x, z, x); }
Vector4 Vector4::xyzx() const  { return Vector4       (x, y, z, x); }
Vector4 Vector4::yyzx() const  { return Vector4       (y, y, z, x); }
Vector4 Vector4::zyzx() const  { return Vector4       (z, y, z, x); }
Vector4 Vector4::wyzx() const  { return Vector4       (w, y, z, x); }
Vector4 Vector4::xzzx() const  { return Vector4       (x, z, z, x); }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -