classicube_sys\vectors/
mod.rs1mod ivec;
2mod matrix;
3mod vec;
4
5pub use self::{ivec::*, matrix::*, vec::*};
6use crate::{
7 bindings::{Math_Cos, Math_Sin},
8 std_types::c_double,
9};
10
11#[macro_export]
13macro_rules! Vec3_Set {
14 ($v:expr, $x:expr, $y:expr, $z:expr) => {
15 $v.x = $x;
16 $v.y = $y;
17 $v.z = $z;
18 };
19}
20
21#[macro_export]
23macro_rules! Vec3_IsZero {
24 ($v:expr) => {
25 #[allow(clippy::float_cmp, clippy::cast_precision_loss)]
26 {
27 $v.x == 0 as _ && $v.y == 0 as _ && $v.z == 0 as _
28 }
29 };
30}
31
32#[macro_export]
33macro_rules! Vec3_AddBy {
34 ($dst:expr, $value:expr) => {
35 $crate::Vec3_Add($dst, $dst, $value)
36 };
37}
38
39#[macro_export]
40macro_rules! Vec3_SubBy {
41 ($dst:expr, $value:expr) => {
42 $crate::Vec3_Sub($dst, $dst, $value)
43 };
44}
45
46#[macro_export]
47macro_rules! Vec3_Mul1By {
48 ($dst:expr, $value:expr) => {
49 $crate::Vec3_Mul1($dst, $dst, $value)
50 };
51}
52
53#[macro_export]
54macro_rules! Vec3_Mul3By {
55 ($dst:expr, $value:expr) => {
56 $crate::Vec3_Mul3($dst, $dst, $value)
57 };
58}
59
60#[must_use]
61pub fn Tan_Simple(x: c_double) -> c_double {
62 unsafe { Math_Sin(x) / Math_Cos(x) }
63}