1 #ifndef __HKL_VECTOR_H__
2 #define __HKL_VECTOR_H__
6 #include <hkl/hkl-macros.h>
10 /* forward declaration begin */
11 typedef struct _HklMatrix HklMatrix
;
12 typedef struct _HklQuaternion HklQuaternion
;
13 /* forward declaration end */
15 typedef struct _HklVector HklVector
;
22 extern void hkl_vector_init(HklVector
*self
, double x
, double y
, double z
);
24 extern void hkl_vector_fprintf(FILE *file
, HklVector
const *self
);
26 extern int hkl_vector_cmp(HklVector
const *self
, HklVector
const *vector
);
28 extern int hkl_vector_is_opposite(HklVector
const *self
,
29 HklVector
const *vector
);
31 extern void hkl_vector_minus_vector(HklVector
*self
, HklVector
const *vector
);
33 extern void hkl_vector_div_double(HklVector
*self
, double const d
);
35 extern void hkl_vector_times_double(HklVector
*self
, double const d
);
37 extern void hkl_vector_times_vector(HklVector
*self
, HklVector
const *vector
);
39 extern void hkl_vector_times_smatrix(HklVector
*self
, HklMatrix
const *m
);
41 extern double hkl_vector_sum(HklVector
const *self
);
43 extern double hkl_vector_scalar_product(HklVector
const *self
,
44 HklVector
const *vector
);
46 extern void hkl_vector_vectorial_product(HklVector
*self
,
47 HklVector
const *vector
);
49 extern double hkl_vector_angle(HklVector
const *self
,
50 HklVector
const *vector
);
52 extern double hkl_vector_norm2(HklVector
const *self
);
54 extern int hkl_vector_normalize(HklVector
*self
);
56 extern int hkl_vector_is_colinear(HklVector
const *self
,
57 HklVector
const *vector
);
59 extern void hkl_vector_randomize(HklVector
*self
);
61 extern void hkl_vector_randomize_vector(HklVector
*self
,
62 HklVector
const *vector
);
64 extern void hkl_vector_randomize_vector_vector(HklVector
*self
,
65 HklVector
const *vector1
,
66 HklVector
const *vector2
);
68 extern void hkl_vector_rotated_around_vector(HklVector
*self
,
72 extern void hkl_vector_rotated_quaternion(HklVector
*self
,
73 HklQuaternion
const *q
);
75 extern int hkl_vector_is_null(HklVector
const *self
);
77 extern void hkl_vector_project_on_plan(HklVector
*self
,
78 HklVector
const *plan
);