Fixed-point 2D geometry.
MIT License
Bot releases are visible (Hide)
Features:
Added Rect.size
to get the width and height of a rectangle as a Pos
:
Rect.fromLTWH(5, 5, 2, 2).size; // Pos(2, 2)
Full Changelog: https://github.com/matanlurey/lodim/compare/v0.1.3...v0.1.4
Published by matanlurey about 2 months ago
No public API changes.
Full Changelog: https://github.com/matanlurey/lodim/compare/v0.1.3+1...v0.1.3+2
Published by matanlurey about 2 months ago
No public API changes.
Full Changelog: https://github.com/matanlurey/lodim/compare/v0.1.3...v0.1.3+1
Published by matanlurey about 2 months ago
Features:
Added optional parameter size
to <Pos>.toRect
when converting a position:
Pos(5, 5).toRect(size: Pos(2, 2)); // Rect.fromLTWH(5, 5, 2, 2)
Added <Pos>.toSize
to convert a position, optionally with an offset:
Pos(5, 5).toSize(); // Rect.fromLTWH(0, 0, 5, 5)
Pos(5, 5).toSize(Pos(2, 2)); // Rect.fromLTWH(2, 2, 5, 5)
Added Rect.fromWH
to create a width, height, and optional offset:
Rect.fromWH(5, 5); // Rect.fromLTWH(0, 0, 5, 5)
Rect.fromWH(5, 5, Pos(2, 2)); // Rect.fromLTWH(2, 2, 5, 5)
Added <Rect>.normalize()
to convert a rectangle to one with positive width
and height:
Rect.fromLTRB(5, 5, 3, 3).normalize(); // Rect.fromLTRB(3, 3, 5, 5)
Rect.fromLTRB(3, 3, -2, -2).normalize(); // Rect.fromLTRB(-2, -2, 3, 3)
Full Changelog: https://github.com/matanlurey/lodim/compare/v0.1.2...v0.1.3
Published by matanlurey 2 months ago
Features:
Added Pos.truncate
to convert doubles to an integer position:
Pos.truncate(5.5, 5.5); // Pos(5, 5)
Added Pos.floor
to convert doubles to an integer position, rounding down:
Pos.floor(5.5, 5.5); // Pos(5, 5)
Added Pos.byDistanceTo
to create a comparator that sorts positions based
on distance to a given position:
final comparator = Pos.byDistanceTo(Pos(5, 5));
[Pos(0, 0), Pos(1, 1), Pos(2, 2)].sort(comparator); // [Pos(2, 2), Pos(1, 1), Pos(0, 0)]
Added <Pos>.map
to apply a function to each component of a position:
Pos(5, 5).map((x) => x * 2); // Pos(10, 10)
Added <Pos>.toList
to convert a position to a list of integers:
Pos(5, 5).toList(); // [5, 5]
Added <Pos>.xy
to get the x and y components of a position as a tuple:
Pos(5, 5).xy; // (5, 5)
Published by matanlurey 3 months ago
Deprecations:
Deprecated Direction.values
in favor of the identical Direction.all
:
- for (final dir in Direction.values) {
+ for (final dir in Direction.all) {
Misc:
package:sector
.Full Changelog: https://github.com/matanlurey/lodim/compare/v0.1.1...v0.1.1+1
Published by matanlurey 3 months ago
Pos
Added vectorLine
as a faster Line
function (alternative to bresenham
):
vectorLine(Pos(0, 0), Pos(2, 2)); // [Pos(0, 0), Pos(1, 1), Pos(2, 2)]
Added diagonal
distance to compliment manhattan
and chebyshev
distances:
Pos(0, 0).distanceTo(Pos(3, 4), diagonal); // 5.0
Added <Pos>.inflate
, which uses the position as the center of a rectangle
and inflates it by the given delta Pos
offset:
Pos(5, 5).inflate(Pos(2, 2)); // Rect.fromLTRB(3, 3, 7, 7)
Added <Pos>.toRect()
to convert a position to a rectangle with a size of
1x1:
Pos(5, 5).toRect(); // Rect.fromLTWH(5, 5, 1, 1)
Added <Pos>.max
, <Pos>.min
, and <Pos>.clamp
to get the maximum, minimum,
and clamped position between two positions:
Pos(5, 5).max(Pos(3, 3)); // Pos(5, 5)
Pos(5, 5).min(Pos(3, 3)); // Pos(3, 3)
Pos(5, 5).clamp(Pos(3, 3), Pos(7, 7)); // Pos(5, 5)
Added <Pos>.approximateNormalized
, which returns a new position with the
same direction but a magnitude as close as possible to 1, which is the best
possible for fixed-point positions:
Pos(10, 20).approximateNormalized; // Pos(1, 2)
Added <Pos>.dot
and <Pos>.cross
to calculate the dot and cross products
between two positions:
Pos(1, 2).dot(Pos(3, 4)); // 11
Pos(1, 2).cross(Pos(3, 4)); // -2
Added missing core operators: ~/
, %
, ~
, <<
, >>
.
Rect
Added <Rect>.inflate
and <Rect>.deflate
, which, given a delta Pos
offset
inflates or deflates the rectangle by that amount:
final rect = Rect.fromLTWH(0, 0, 10, 10);
rect.inflate(Pos(2, 2)); // Rect.fromLTRB(-2, -2, 12, 12)
rect.deflate(Pos(2, 2)); // Rect.fromLTRB(2, 2, 8, 8)
Added a new extension on (int, int)
to convert a tuple to a Pos
:
(5, 5).toPos(); // Pos(5, 5)
Added approximateSqrt
, to calculate the integer square root of a number
without rounding:
approximateSqrt(10); // 3
Full Changelog: https://github.com/matanlurey/lodim/compare/v0.1.0...v0.1.1
Published by matanlurey 3 months ago