Skip to content

Commit

Permalink
Add more constructors and math helpers for primitive shapes (bevyengi…
Browse files Browse the repository at this point in the history
…ne#10632)

# Objective

Working towards finishing a part of bevyengine#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]>
  • Loading branch information
Jondolf and IQuick143 authored Jan 29, 2024
1 parent fb124c3 commit 9256749
Show file tree
Hide file tree
Showing 3 changed files with 567 additions and 32 deletions.
3 changes: 3 additions & 0 deletions crates/bevy_math/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ keywords = ["bevy"]
glam = { version = "0.25", features = ["bytemuck"] }
serde = { version = "1", features = ["derive"], optional = true }

[dev-dependencies]
approx = "0.5"

[features]
serialize = ["dep:serde", "glam/serde"]
# Enable approx for glam types to approximate floating point equality comparisons and assertions
Expand Down
Loading

0 comments on commit 9256749

Please sign in to comment.