//------------------------------------------------------------
//	vector.cc
//	1996/6/10 
//	(C) Copyright Hitoshi Yamauchi
//	vector 関係の関数
//------------------------------------------------------------
#include "vector.h"

IntVec3 Vec3toInt3(const Vector3 &v3)
{
    static IntVec3 retIV3;

    double vx = v3.get(Vector3::X);
    double vy = v3.get(Vector3::Y);
    double vz = v3.get(Vector3::Z);

    retIV3.set(int(vx), int(vy), int(vz));
    // IntVec3 retIV3(int(vx), int(vy), int(vz));
    // とすると、gcc2.7.2 では最後の return (あるいは operator<< の部
    // 分)、でこれを inline 展開しようとするらしい。すると、そこでのコ
    // ンストラクタは何かわからなくなってしまうようだ。たとえ明示的に、
    // 上のように書いたとしてもだめだった。 

#ifndef NDEBUG
    int ix = int(vx);
    int iy = int(vy);
    int iz = int(vz);
    if((double(ix) != vx) || (double(iy) != vy) || (double(iz) != vz))
    {
	cerr << "Warning : vector3(" << v3 << ") is rounded to (" <<
	    retIV3 << ")" << endl; 
    }
#endif
    return(retIV3);
}
