00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef VEC4_H_INCLUDED
00027 #define VEC4_H_INCLUDED
00028
00029 #include "utility.h"
00030
00031 struct kmMat4;
00032
00033 #pragma pack(push)
00034 #pragma pack(1)
00035
00036 typedef struct kmVec4 {
00037 kmScalar x;
00038 kmScalar y;
00039 kmScalar z;
00040 kmScalar w;
00041 } kmVec4;
00042
00043 #pragma pack(pop)
00044
00045 #ifdef __cplusplus
00046 extern "C" {
00047 #endif
00048
00049 kmVec4* kmVec4Fill(kmVec4* pOut, kmScalar x, kmScalar y, kmScalar z, kmScalar w);
00050 kmVec4* kmVec4Add(kmVec4* pOut, const kmVec4* pV1, const kmVec4* pV2);
00051 kmScalar kmVec4Dot(const kmVec4* pV1, const kmVec4* pV2);
00052 kmScalar kmVec4Length(const kmVec4* pIn);
00053 kmScalar kmVec4LengthSq(const kmVec4* pIn);
00054 kmVec4* kmVec4Lerp(kmVec4* pOut, const kmVec4* pV1, const kmVec4* pV2, kmScalar t);
00055 kmVec4* kmVec4Normalize(kmVec4* pOut, const kmVec4* pIn);
00056 kmVec4* kmVec4Scale(kmVec4* pOut, const kmVec4* pIn, const kmScalar s);
00057 kmVec4* kmVec4Subtract(kmVec4* pOut, const kmVec4* pV1, const kmVec4* pV2);
00058 kmVec4* kmVec4Transform(kmVec4* pOut, const kmVec4* pV, const struct kmMat4* pM);
00059 kmVec4* kmVec4TransformArray(kmVec4* pOut, unsigned int outStride,
00060 const kmVec4* pV, unsigned int vStride, const struct kmMat4* pM, unsigned int count);
00061 int kmVec4AreEqual(const kmVec4* p1, const kmVec4* p2);
00062 kmVec4* kmVec4Assign(kmVec4* pOut, const kmVec4* pIn);
00063
00064 #ifdef __cplusplus
00065 }
00066 #endif
00067
00068 #endif // VEC4_H_INCLUDED