00001 #ifndef __VECTORI_H__
00002 #define __VECTORI_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 typedef struct tagVector2i
00016 {
00017 int x;
00018 int y;
00019 }
00020 Vector2i;
00021
00022
00023 #define ZeroVector2i( V ) \
00024 { \
00025 ( V ).x = 0; \
00026 ( V ).y = 0; \
00027 }
00028
00029
00030 #define IsZeroVector2i( V ) \
00031 ( \
00032 0 == ( V ).x && \
00033 0 == ( V ).y \
00034 )
00035
00036
00037 #define SetVector2i( V, X, Y ) \
00038 { \
00039 ( V ).x = ( X ); \
00040 ( V ).y = ( Y ); \
00041 }
00042
00043
00044 #define AddVector2i( A, B, C ) \
00045 { \
00046 ( C ).x = ( A ).x + ( B ).x; \
00047 ( C ).y = ( A ).y + ( B ).y; \
00048 }
00049
00050
00051 #define SubVector2i( A, B, C ) \
00052 { \
00053 ( C ).x = ( A ).x - ( B ).x; \
00054 ( C ).y = ( A ).y - ( B ).y; \
00055 }
00056
00057
00058 #define ReverseVector2i( A, C ) \
00059 { \
00060 ( C ).x = -( A ).x; \
00061 ( C ).y = -( A ).y; \
00062 }
00063
00064
00065 #define DotProduct2i( A, B )\
00066 ( ( A ).x*( B ).x + ( A ).y*( B ).y )
00067
00068
00069
00070
00071
00072
00073 typedef struct tagVector3i
00074 {
00075 int x;
00076 int y;
00077 int z;
00078 }
00079 Vector3i;
00080
00081
00082 #define ZeroVector3i( V ) \
00083 { \
00084 ( V ).x = 0; \
00085 ( V ).y = 0; \
00086 ( V ).z = 0; \
00087 }
00088
00089
00090 #define IsZeroVector3i( V ) \
00091 ( \
00092 0 == ( V ).x && \
00093 0 == ( V ).y && \
00094 0 == ( V ).z \
00095 )
00096
00097
00098 #define SetVector3i( V, X, Y, Z ) \
00099 { \
00100 ( V ).x = ( X ); \
00101 ( V ).y = ( Y ); \
00102 ( V ).z = ( Z ); \
00103 }
00104
00105
00106 #define AddVector3i( A, B, C ) \
00107 { \
00108 ( C ).x = ( A ).x + ( B ).x; \
00109 ( C ).y = ( A ).y + ( B ).y; \
00110 ( C ).z = ( A ).z + ( B ).z; \
00111 }
00112
00113
00114 #define SubVector3i( A, B, C ) \
00115 { \
00116 ( C ).x = ( A ).x - ( B ).x; \
00117 ( C ).y = ( A ).y - ( B ).y; \
00118 ( C ).z = ( A ).z - ( B ).z; \
00119 }
00120
00121
00122 #define ReverseVector3i( A, C ) \
00123 { \
00124 ( C ).x = -( A ).x; \
00125 ( C ).y = -( A ).y; \
00126 ( C ).z = -( A ).z; \
00127 }
00128
00129
00130 #endif
00131