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
use scalar::Scalar; use std::marker::Send; #[derive(Debug, Clone, Copy)] pub struct Point<S> { pub x: S, pub y: S, } unsafe impl<S: Scalar> Send for Point<S> {} impl<S: Scalar> Point<S> { pub fn new(x: S, y: S) -> Self { Point { x, y } } pub fn origin() -> Self { Point { x: S::zero(), y: S::zero(), } } pub fn from_point(p: &Point<S>) -> Self { Point { x: p.x, y: p.y } } pub fn translate(&mut self, dx: S, dy: S) { self.x = self.x + dx; self.y = self.y + dy; } pub fn translate_x(&mut self, dx: S) { self.x = self.x + dx; } pub fn translate_y(&mut self, dy: S) { self.y = self.y + dy; } }