Crate emath[−][src]
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
Re-exports
Modules
One- and two-dimensional alignment (Align::Center, Align2::LEFT_TOP etc).
Find “simple” numbers is some range. Used by sliders.
Macros
An assert that is only active when egui is compiled with the egui_assert feature
or with the debug_egui_assert feature in debug builds.
Structs
A position on screen.
A rectangular region of space.
Linearly transforms positions from one Rect to another.
Represents a rotation in the 2D plane.
A rotation of 𝞃/4 = 90° rotates the X axis to the Y axis.
Normally a Rot2 is normalized (unit-length).
If not, it will also scale vectors.
Traits
Extends f32, Vec2 etc with at_least and at_most as aliases for max and min.
Implemented for all builtin numeric types
Functions
Return true when arguments are the same within some rounding error.
Returns range.start() if x <= range.start(),
returns range.end() if x >= range.end()
and returns x elsewhen.
Linear interpolation.
Wrap angle to [-PI, PI] range.
pos2(x,y) == Pos2::new(x, y)
Linearly remap a value from one range to another,
so that when x == from.start() returns to.start()
and when x == from.end() returns to.end().
Like remap, but also clamps the value so that the returned value is always in the to range.
Round a value to the given number of decimal places.
vec2(x,y) == Vec2::new(x, y)
