mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 18:24:05 +02:00
implement basic math on vectors
This commit is contained in:
parent
c3ea161928
commit
74ab5072d2
1 changed files with 47 additions and 0 deletions
|
|
@ -1,3 +1,4 @@
|
|||
use std::ops::{Add, Sub};
|
||||
use bitbuffer::{BitRead, BitWrite};
|
||||
use parse_display::Display;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
|
@ -23,6 +24,30 @@ impl PartialEq for Vector {
|
|||
}
|
||||
}
|
||||
|
||||
impl Add for Vector {
|
||||
type Output = Vector;
|
||||
|
||||
fn add(self, rhs: Self) -> Self::Output {
|
||||
Vector {
|
||||
x: self.x + rhs.x,
|
||||
y: self.y + rhs.y,
|
||||
z: self.z + rhs.z,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Sub for Vector {
|
||||
type Output = Vector;
|
||||
|
||||
fn sub(self, rhs: Self) -> Self::Output {
|
||||
Vector {
|
||||
x: self.x - rhs.x,
|
||||
y: self.y - rhs.y,
|
||||
z: self.z - rhs.z,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
|
||||
#[derive(BitRead, BitWrite, Debug, Clone, Copy, Default, Serialize, Deserialize, Display)]
|
||||
#[display("({x}, {y})")]
|
||||
|
|
@ -42,3 +67,25 @@ impl From<Vector> for VectorXY {
|
|||
VectorXY { x: vec.x, y: vec.y }
|
||||
}
|
||||
}
|
||||
|
||||
impl Add for VectorXY {
|
||||
type Output = VectorXY;
|
||||
|
||||
fn add(self, rhs: Self) -> Self::Output {
|
||||
VectorXY {
|
||||
x: self.x + rhs.x,
|
||||
y: self.y + rhs.y,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Sub for VectorXY {
|
||||
type Output = VectorXY;
|
||||
|
||||
fn sub(self, rhs: Self) -> Self::Output {
|
||||
VectorXY {
|
||||
x: self.x - rhs.x,
|
||||
y: self.y - rhs.y,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue