Skip to content

Commit 9256749

Browse files
JondolfIQuick143
andauthored
Add more constructors and math helpers for primitive shapes (#10632)
# Objective Working towards finishing a part of #10572, this PR adds a ton of math helpers and useful constructors for primitive shapes. I also tried fixing some naming inconsistencies. ## Solution - Add mathematical helpers like `area`, `volume`, `perimeter`, `RegularPolygon::inradius` and so on, trying to cover all core mathematical properties of each shape - Add some constructors like `Rectangle::from_corners`, `Cuboid::from_corners` and `Plane3d::from_points` I also derived `PartialEq` for the shapes where it's trivial. Primitives like `Line2d` and `Segment2d` are not trivial because you could argue that they would be equal if they had an opposite direction. All mathematical methods have tests with reference values computed by hand or with external tools. ## Todo - [x] Add tests to verify that the values from mathematical helpers are correct --------- Co-authored-by: IQuick 143 <[email protected]>
1 parent fb124c3 commit 9256749

File tree

3 files changed

+567
-32
lines changed

3 files changed

+567
-32
lines changed

crates/bevy_math/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ keywords = ["bevy"]
1212
glam = { version = "0.25", features = ["bytemuck"] }
1313
serde = { version = "1", features = ["derive"], optional = true }
1414

15+
[dev-dependencies]
16+
approx = "0.5"
17+
1518
[features]
1619
serialize = ["dep:serde", "glam/serde"]
1720
# Enable approx for glam types to approximate floating point equality comparisons and assertions

0 commit comments

Comments
 (0)