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
#[derive(Clone, Debug, PartialEq)]
pub enum ImtGeometry {
	Line([ImtPoint; 2]),
	Curve([ImtPoint; 3]),
}

#[derive(Clone, Debug, PartialEq)]
pub struct ImtPosition {
	pub x: f32,
	pub y: f32,
}

#[derive(Clone, Debug, PartialEq)]
pub struct ImtPoint {
	pub x: f32,
	pub y: f32,
}

impl ImtPoint {
	pub fn lerp(&self, t: f32, other: &Self) -> Self {
		ImtPoint {
			x: self.x + ((other.x - self.x) * t),
			y: self.y + ((other.y - self.y) * t),
		}
	}

	pub fn dist(&self, other: &Self) -> f32 {
		((self.x - other.x).powi(2) + (self.y - other.y).powi(2)).sqrt()
	}
}