coord2d/new.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
/// ## creating a new Coord
/// #### Example
/// ```rust
/// use coord2d::*;
///
/// let a: coords::Coord = new_coord!(1, 2.0);
/// println!("{:?}", a);
/// // returns Coord {x: 1.0, y: 2.0}
/// let a: coords::Coord = new_coord!(2.0);
/// println!("{:?}", a);
/// // returns Coord {x: 0.0, y: 2.0}
/// ```
/// * the var **a** contains to var x and y as position in a graph (O, I, J)
/// * returns i32
#[macro_export]
macro_rules! new_coord {
() => {
$crate::coords::Coord { x: 0, y: 0 }
};
($y:expr) => {
$crate::coords::Coord { x: 0, y: $y as i32 }
};
($x:expr, $y:expr) => {
$crate::coords::Coord {
x: $x as i32,
y: $y as i32,
}
};
}
/// ## creating a new Vector
/// #### Example
/// ```rust
/// use coord2d::*;
///
/// let a: coords::Coord = new_coord!(1, 2.0);
/// let b: coords::Coord = new_coord!(0.4, 3.3);
/// let h:vectors::Vector = new_vector!(a, b);
/// ```
/// * the var **h** contains to var start point and end point point
/// * while magnitude get calculated automatically
#[macro_export]
macro_rules! new_vector {
() => {
$crate::vectors::Vector {
start: coords::Coord { x: 0, y: 0 },
end: coords::Coord { x: 0, y: 0 },
magnitude: 0.0,
}
};
($end:expr) => {
vectors::Vector {
start: coords::Coord { x: 0, y: 0 },
end: $end,
magnitude: vectors::get_magnitude(coords::Coord { x: 0, y: 0 }, $end as coords::Coord),
}
};
($start:expr, $end:expr) => {
vectors::Vector {
start: $start,
end: $end,
magnitude: vectors::get_magnitude($start as coords::Coord, $end as coords::Coord),
}
};
}