4 #include <hkl/hkl-axis.h>
5 #include <hkl/hkl-quaternion.h>
11 static HklAxisConfig hkl_axis_config_default
= {{-M_PI
, M_PI
}, 0., 1};
13 void hkl_axis_config_randomize(HklAxisConfig
*self
)
15 double alea
= (double)rand() / (RAND_MAX
+ 1.);
16 self
->value
= self
->range
.min
+(self
->range
.max
-self
->range
.min
)*alea
;
20 void hkl_axis_config_init(HklAxisConfig
*self
, double min
, double max
,
21 double value
, int dirty
)
23 self
->range
.min
= min
;
24 self
->range
.max
= max
;
29 void hkl_axis_config_fprintf(FILE *f
, HklAxisConfig
*self
)
31 fprintf(f
, "% f [%f : %f] (%d)", self
->value
,
32 self
->range
.min
, self
->range
.max
, self
->dirty
);
39 void hkl_axis_init(HklAxis
*self
, char const *name
, HklVector
const *axis_v
)
42 self
->axis_v
= *axis_v
;
43 self
->config
= hkl_axis_config_default
;
46 void hkl_axis_get_config(HklAxis
*axis
, HklAxisConfig
*config
)
48 *config
= axis
->config
;
51 void hkl_axis_set_config(HklAxis
*axis
, HklAxisConfig
*config
)
53 axis
->config
= *config
;
54 axis
->config
.dirty
= HKL_TRUE
;
57 void hkl_axis_clear_dirty(HklAxis
*axis
)
59 axis
->config
.dirty
= HKL_FALSE
;
62 void hkl_axis_get_quaternion(HklAxis
const *axis
, HklQuaternion
*q
)
64 hkl_quaternion_from_angle_and_axe(q
, axis
->config
.value
,