Expand description
Opinionated 2D math library for building GUIs.
Includes vectors, positions, rectangles etc.
Conventions (unless otherwise specified):
- All angles are in radians
- X+ is right and Y+ is down.
- (0,0) is left top.
- Dimension order is always
x y
§Integrating with other math libraries.
emath
does not strive to become a general purpose or all-powerful math library.
For that, use something else (glam
, nalgebra
, …)
and enable the mint
feature flag in emath
to enable implicit conversion to/from emath
.
§Feature flags
§Optional dependencies
Re-exports§
Modules§
- align
- One- and two-dimensional alignment (
Align::Center
,Align2::LEFT_TOP
etc). - easing
- Easing functions for animations.
- smart_
aim - Find “simple” numbers is some range. Used by sliders.
Structs§
- History
- This struct tracks recent values of some time series.
- Ordered
Float - Wraps a floating-point value to add total order and hash.
Possible types for
T
aref32
andf64
. - Pos2
- A position on screen.
- Rangef
- Inclusive range of floats, i.e.
min..=max
, but more ergonomic thanRangeInclusive
. - Rect
- A rectangular region of space.
- Rect
Transform - Linearly transforms positions from one
Rect
to another. - Rot2
- Represents a rotation in the 2D plane.
- TSTransform
- Linearly transforms positions via a translation, then a scaling.
- Vec2
- A vector has a direction and length.
A
Vec2
is often used to represent a size. - Vec2b
- Two bools, one for each axis (X and Y).
Constants§
- GUI_
ROUNDING - We (sometimes) round sizes and coordinates to an even multiple of this value.
Traits§
- Float
- Extension trait to provide
ord()
method. - GuiRounding
- Trait for rounding coordinates and sizes to align with either .
- NumExt
- Extends
f32
,Vec2
etc withat_least
andat_most
as aliases formax
andmin
. - Numeric
- Implemented for all builtin numeric types
- One
- Helper trait to implement
lerp
andremap
. - Real
- Helper trait to implement
lerp
andremap
.
Functions§
- almost_
equal - Return true when arguments are the same within some rounding error.
- ease_
in_ ease_ out - Ease in, ease out.
- exponential_
smooth_ factor - Calculate a lerp-factor for exponential smoothing using a time step.
- format_
with_ decimals_ in_ range - Use as few decimals as possible to show the value accurately, but within the given range.
- format_
with_ minimum_ decimals - interpolation_
factor - If you have a value animating over time, how much towards its target do you need to move it this frame?
- inverse_
lerp - Where in the range is this value? Returns 0-1 if within the range.
- lerp
- Linear interpolation.
- normalized_
angle - Wrap angle to
[-PI, PI]
range. - pos2
pos2(x, y) == Pos2::new(x, y)
- remap
- Linearly remap a value from one range to another,
so that when
x == from.start()
returnsto.start()
and whenx == from.end()
returnsto.end()
. - remap_
clamp - Like
remap
, but also clamps the value so that the returned value is always in theto
range. - round_
to_ decimals - Round a value to the given number of decimal places.
- vec2
vec2(x, y) == Vec2::new(x, y)