28 #define Vector3Data Vector3DoubleData
29 #define Vector3DataName "Vector3DoubleData"
42 #if defined (__SPU__) && defined (__CELLOS_LV2__)
47 return *((
const vec_float4*)&m_floats[0]);
50 #else //__CELLOS_LV2__ __SPU__
51 #ifdef TF2_USE_SSE // _WIN32
67 #endif //__CELLOS_LV2__ __SPU__
94 m_floats[0] += v.m_floats[0]; m_floats[1] += v.m_floats[1];m_floats[2] += v.m_floats[2];
103 m_floats[0] -= v.m_floats[0]; m_floats[1] -= v.m_floats[1];m_floats[2] -= v.m_floats[2];
110 m_floats[0] *=
s; m_floats[1] *=
s;m_floats[2] *=
s;
126 return m_floats[0] * v.m_floats[0] + m_floats[1] * v.m_floats[1] +m_floats[2] * v.m_floats[2];
185 m_floats[1] * v.m_floats[2] -m_floats[2] * v.m_floats[1],
186 m_floats[2] * v.m_floats[0] - m_floats[0] * v.m_floats[2],
187 m_floats[0] * v.m_floats[1] - m_floats[1] * v.m_floats[0]);
192 return m_floats[0] * (v1.m_floats[1] * v2.m_floats[2] - v1.m_floats[2] * v2.m_floats[1]) +
193 m_floats[1] * (v1.m_floats[2] * v2.m_floats[0] - v1.m_floats[0] * v2.m_floats[2]) +
194 m_floats[2] * (v1.m_floats[0] * v2.m_floats[1] - v1.m_floats[1] * v2.m_floats[0]);
201 return m_floats[0] < m_floats[1] ? (m_floats[0] <m_floats[2] ? 0 : 2) : (m_floats[1] <m_floats[2] ? 1 : 2);
208 return m_floats[0] < m_floats[1] ? (m_floats[1] <m_floats[2] ? 2 : 1) : (m_floats[0] <m_floats[2] ? 2 : 0);
213 return absolute().minAxis();
218 return absolute().maxAxis();
224 m_floats[0] =
s * v0.m_floats[0] + rt * v1.m_floats[0];
225 m_floats[1] =
s * v0.m_floats[1] + rt * v1.m_floats[1];
226 m_floats[2] =
s * v0.m_floats[2] + rt * v1.m_floats[2];
236 return Vector3(m_floats[0] + (v.m_floats[0] - m_floats[0]) *
t,
237 m_floats[1] + (v.m_floats[1] - m_floats[1]) *
t,
238 m_floats[2] + (v.m_floats[2] -m_floats[2]) *
t);
245 m_floats[0] *= v.m_floats[0]; m_floats[1] *= v.m_floats[1];m_floats[2] *= v.m_floats[2];
280 return ((m_floats[3]==other.m_floats[3]) && (m_floats[2]==other.m_floats[2]) && (m_floats[1]==other.m_floats[1]) && (m_floats[0]==other.m_floats[0]));
285 return !(*
this == other);
293 tf2SetMax(m_floats[0], other.m_floats[0]);
294 tf2SetMax(m_floats[1], other.m_floats[1]);
295 tf2SetMax(m_floats[2], other.m_floats[2]);
303 tf2SetMin(m_floats[0], other.m_floats[0]);
304 tf2SetMin(m_floats[1], other.m_floats[1]);
305 tf2SetMin(m_floats[2], other.m_floats[2]);
319 v0->setValue(0. ,-z() ,y());
320 v1->setValue(z() ,0. ,-x());
321 v2->setValue(-y() ,x() ,0.);
357 return Vector3(v1.m_floats[0] + v2.m_floats[0], v1.m_floats[1] + v2.m_floats[1], v1.m_floats[2] + v2.m_floats[2]);
364 return Vector3(v1.m_floats[0] * v2.m_floats[0], v1.m_floats[1] * v2.m_floats[1], v1.m_floats[2] * v2.m_floats[2]);
371 return Vector3(v1.m_floats[0] - v2.m_floats[0], v1.m_floats[1] - v2.m_floats[1], v1.m_floats[2] - v2.m_floats[2]);
377 return Vector3(-v.m_floats[0], -v.m_floats[1], -v.m_floats[2]);
384 return Vector3(v.m_floats[0] * s, v.m_floats[1] * s, v.m_floats[2] * s);
406 return Vector3(v1.m_floats[0] / v2.m_floats[0],v1.m_floats[1] / v2.m_floats[1],v1.m_floats[2] / v2.m_floats[2]);
421 return v1.distance2(v2);
429 return v1.distance(v2);
449 return v1.triple(v2, v3);
459 return v1.lerp(v2, t);
466 return (v - *
this).length2();
471 return (v - *
this).length();
483 Vector3 o = wAxis * wAxis.dot( *
this );
487 y = wAxis.cross( *
this );
492 class tf2Vector4 :
public Vector3
524 if (m_floats[0] > maxVal)
527 maxVal = m_floats[0];
529 if (m_floats[1] > maxVal)
532 maxVal = m_floats[1];
534 if (m_floats[2] > maxVal)
539 if (m_floats[3] > maxVal)
556 if (m_floats[0] < minVal)
559 minVal = m_floats[0];
561 if (m_floats[1] < minVal)
564 minVal = m_floats[1];
566 if (m_floats[2] < minVal)
571 if (m_floats[3] < minVal)
624 unsigned char* dest = (
unsigned char*) &destVal;
625 const unsigned char* src = (
const unsigned char*) &sourceVal;
638 for (
int i=0;i<4;i++)
650 for (
int i=0;i<4;i++)
663 p.setValue(0,-n[2]*k,n[1]*k);
665 q.setValue(a*k,-n[0]*p[2],n[0]*p[1]);
671 p.setValue(-n.y()*k,n.x()*k,0);
673 q.setValue(-n.z()*p.y(),n.z()*p.x(),a*k);
678 struct Vector3FloatData
683 struct Vector3DoubleData
692 for (
int i=0;i<4;i++)
693 dataOut.m_floats[i] =
float(m_floats[i]);
698 for (
int i=0;i<4;i++)
699 m_floats[i] =
tf2Scalar(dataIn.m_floats[i]);
706 for (
int i=0;i<4;i++)
707 dataOut.m_floats[i] =
double(m_floats[i]);
712 for (
int i=0;i<4;i++)
713 m_floats[i] =
tf2Scalar(dataIn.m_floats[i]);
720 for (
int i=0;i<4;i++)
721 dataOut.m_floats[i] = m_floats[i];
726 for (
int i=0;i<4;i++)
727 m_floats[i] = dataIn.m_floats[i];
732 #endif //TF2_VECTOR3_H