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 VEC2_H_INCLUDED
00027 #define VEC2_H_INCLUDED
00028
00029 struct kmMat4;
00030
00031 #ifndef kmScalar
00032 #define kmScalar float
00033 #endif
00034
00035 #pragma pack(push)
00036 #pragma pack(1)
00037 typedef struct kmVec2 {
00038 kmScalar x;
00039 kmScalar y;
00040 } kmVec2;
00041
00042 #pragma pack(pop)
00043
00044 #ifdef __cplusplus
00045 extern "C" {
00046 #endif
00047 kmVec2* kmVec2Fill(kmVec2* pOut, kmScalar x, kmScalar y);
00048 kmScalar kmVec2Length(const kmVec2* pIn);
00049 kmScalar kmVec2LengthSq(const kmVec2* pIn);
00050 kmVec2* kmVec2Normalize(kmVec2* pOut, const kmVec2* pIn);
00051 kmVec2* kmVec2Add(kmVec2* pOut, const kmVec2* pV1, const kmVec2* pV2);
00052 kmScalar kmVec2Dot(const kmVec2* pV1, const kmVec2* pV2);
00053 kmVec2* kmVec2Subtract(kmVec2* pOut, const kmVec2* pV1, const kmVec2* pV2);
00054 kmVec2* kmVec2Transform(kmVec2* pOut, const kmVec2* pV1, const struct kmMat4* pM);
00055 kmVec2* kmVec2TransformCoord(kmVec2* pOut, const kmVec2* pV, const struct kmMat4* pM);
00056 kmVec2* kmVec2Scale(kmVec2* pOut, const kmVec2* pIn, const kmScalar s);
00057 int kmVec2AreEqual(const kmVec2* p1, const kmVec2* p2);
00058
00059 #ifdef __cplusplus
00060 }
00061 #endif
00062
00063
00064 #endif // VEC2_H_INCLUDED