Struct kurbo::Point

source ·
pub struct Point {
    pub x: f64,
    pub y: f64,
}
Expand description

A 2D point.

This type represents a point in 2D space. It has the same layout as Vec2, but its meaning is different: Vec2 represents a change in location (for example velocity).

In general, kurbo overloads math operators where it makes sense, for example implementing Affine * Point as the point under the affine transformation. However Point + Point and f64 * Point are not implemented, because the operations do not make geometric sense. If you need to apply these operations, then 1) check what you’re doing makes geometric sense, then 2) use Point::to_vec2 to convert the point to a Vec2.

Fields§

§x: f64

The x coordinate.

§y: f64

The y coordinate.

Implementations§

source§

impl Point

source

pub const ZERO: Point = _

The point (0, 0).

source

pub const ORIGIN: Point = _

The point at the origin; (0, 0).

source

pub const fn new(x: f64, y: f64) -> Self

Create a new Point with the provided x and y coordinates.

source

pub const fn to_vec2(self) -> Vec2

Convert this point into a Vec2.

source

pub fn lerp(self, other: Point, t: f64) -> Point

Linearly interpolate between two points.

source

pub fn midpoint(self, other: Point) -> Point

Determine the midpoint of two points.

source

pub fn distance(self, other: Point) -> f64

Euclidean distance.

source

pub fn distance_squared(self, other: Point) -> f64

Squared Euclidean distance.

source

pub fn round(self) -> Point

Returns a new Point, with x and y rounded to the nearest integer.

§Examples
use kurbo::Point;
let a = Point::new(3.3, 3.6).round();
let b = Point::new(3.0, -3.1).round();
assert_eq!(a.x, 3.0);
assert_eq!(a.y, 4.0);
assert_eq!(b.x, 3.0);
assert_eq!(b.y, -3.0);
source

pub fn ceil(self) -> Point

Returns a new Point, with x and y rounded up to the nearest integer, unless they are already an integer.

§Examples
use kurbo::Point;
let a = Point::new(3.3, 3.6).ceil();
let b = Point::new(3.0, -3.1).ceil();
assert_eq!(a.x, 4.0);
assert_eq!(a.y, 4.0);
assert_eq!(b.x, 3.0);
assert_eq!(b.y, -3.0);
source

pub fn floor(self) -> Point

Returns a new Point, with x and y rounded down to the nearest integer, unless they are already an integer.

§Examples
use kurbo::Point;
let a = Point::new(3.3, 3.6).floor();
let b = Point::new(3.0, -3.1).floor();
assert_eq!(a.x, 3.0);
assert_eq!(a.y, 3.0);
assert_eq!(b.x, 3.0);
assert_eq!(b.y, -4.0);
source

pub fn expand(self) -> Point

Returns a new Point, with x and y rounded away from zero to the nearest integer, unless they are already an integer.

§Examples
use kurbo::Point;
let a = Point::new(3.3, 3.6).expand();
let b = Point::new(3.0, -3.1).expand();
assert_eq!(a.x, 4.0);
assert_eq!(a.y, 4.0);
assert_eq!(b.x, 3.0);
assert_eq!(b.y, -4.0);
source

pub fn trunc(self) -> Point

Returns a new Point, with x and y rounded towards zero to the nearest integer, unless they are already an integer.

§Examples
use kurbo::Point;
let a = Point::new(3.3, 3.6).trunc();
let b = Point::new(3.0, -3.1).trunc();
assert_eq!(a.x, 3.0);
assert_eq!(a.y, 3.0);
assert_eq!(b.x, 3.0);
assert_eq!(b.y, -3.0);
source

pub fn is_finite(self) -> bool

Is this point finite?

source

pub fn is_nan(self) -> bool

Is this point NaN?

Trait Implementations§

source§

impl Add<(f64, f64)> for Point

§

type Output = Point

The resulting type after applying the + operator.
source§

fn add(self, (x, y): (f64, f64)) -> Self

Performs the + operation. Read more
source§

impl Add<Vec2> for Point

§

type Output = Point

The resulting type after applying the + operator.
source§

fn add(self, other: Vec2) -> Self

Performs the + operation. Read more
source§

impl AddAssign<(f64, f64)> for Point

source§

fn add_assign(&mut self, (x, y): (f64, f64))

Performs the += operation. Read more
source§

impl AddAssign<Vec2> for Point

source§

fn add_assign(&mut self, other: Vec2)

Performs the += operation. Read more
source§

impl Clone for Point

source§

fn clone(&self) -> Point

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Point

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Point

source§

fn default() -> Point

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Point

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Point

source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<(f64, f64)> for Point

source§

fn from(v: (f64, f64)) -> Point

Converts to this type from the input type.
source§

impl From<Point> for (f64, f64)

source§

fn from(v: Point) -> (f64, f64)

Converts to this type from the input type.
source§

impl From<Point> for Point2<f64>

source§

fn from(p: Point) -> Point2<f64>

Converts to this type from the input type.
source§

impl From<Point2<f64>> for Point

source§

fn from(p: Point2<f64>) -> Point

Converts to this type from the input type.
source§

impl JsonSchema for Point

source§

fn schema_name() -> String

The name of the generated JSON Schema. Read more
source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
source§

fn json_schema(gen: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
source§

fn is_referenceable() -> bool

Whether JSON Schemas generated for this type should be re-used where possible using the $ref keyword. Read more
source§

impl Mul<Point> for Affine

§

type Output = Point

The resulting type after applying the * operator.
source§

fn mul(self, other: Point) -> Point

Performs the * operation. Read more
source§

impl Mul<Point> for TranslateScale

§

type Output = Point

The resulting type after applying the * operator.
source§

fn mul(self, other: Point) -> Point

Performs the * operation. Read more
source§

impl PartialEq for Point

source§

fn eq(&self, other: &Point) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Point

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub<(f64, f64)> for Point

§

type Output = Point

The resulting type after applying the - operator.
source§

fn sub(self, (x, y): (f64, f64)) -> Self

Performs the - operation. Read more
source§

impl Sub<Vec2> for Point

§

type Output = Point

The resulting type after applying the - operator.
source§

fn sub(self, other: Vec2) -> Self

Performs the - operation. Read more
source§

impl Sub for Point

§

type Output = Vec2

The resulting type after applying the - operator.
source§

fn sub(self, other: Point) -> Vec2

Performs the - operation. Read more
source§

impl SubAssign<(f64, f64)> for Point

source§

fn sub_assign(&mut self, (x, y): (f64, f64))

Performs the -= operation. Read more
source§

impl SubAssign<Vec2> for Point

source§

fn sub_assign(&mut self, other: Vec2)

Performs the -= operation. Read more
source§

impl Copy for Point

source§

impl StructuralPartialEq for Point

Auto Trait Implementations§

§

impl RefUnwindSafe for Point

§

impl Send for Point

§

impl Sync for Point

§

impl Unpin for Point

§

impl UnwindSafe for Point

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> DynClone for T
where T: Clone,

source§

fn __clone_box(&self, _: Private) -> *mut ()

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,