Crates.io | bevy_heavy |
lib.rs | bevy_heavy |
version | |
source | src |
created_at | 2024-12-04 17:21:04.604802 |
updated_at | 2024-12-04 17:21:04.604802 |
description | Mass property computation for Bevy's geometric primitives. |
homepage | |
repository | |
max_upload_size | |
id | 1472319 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
bevy_heavy
bevy_heavy
is a crate for computing mass properties (mass, angular inertia, and center of mass)
for the geometric primitives in the Bevy game engine. This is typically required
for things like physics simulations.
MassProperties2d
and MassProperties3d
structs containing the mass, angular inertia, and local center of massbevy_reflect
and serde
through the bevy_reflect
and serialize
feature flagsMass properties can be computed individually for shapes using the mass
, angular_inertia
,
and center_of_mass
methods:
use bevy_heavy::{ComputeMassProperties2d, MassProperties2d};
use bevy_math::{primitives::Rectangle, Vec2};
let rectangle = Rectangle::new(2.0, 1.0);
let density = 2.0;
let mass = rectangle.mass(density);
let angular_inertia = rectangle.angular_inertia(mass);
let center_of_mass = rectangle.center_of_mass();
You can also compute all mass properties at once, returning MassProperties2d
for 2D shapes,
or MassProperties3d
for 3D shapes. This can be more efficient when more than one property is needed.
let mass_props = rectangle.mass_properties(density);
The mass property types have several helper methods for various transformations and operations:
let shifted_inertia = mass_props.shifted_angular_inertia(Vec2::new(-3.5, 1.0));
let global_center_of_mass = mass_props.global_center_of_mass(Vec2::new(5.0, 7.5));
You can also add and subtract mass properties:
let mass_props_2 = MassProperties2d::new(mass, angular_inertia, Vec2::new(0.0, 1.0));
let sum = mass_props + mass_props_2;
approx::assert_relative_eq!(sum - mass_props_2, mass_props);
To support mass property computation for custom shapes, implement ComputeMassProperties2d
or ComputeMassProperties3d
for them.
bevy_math
Versionsbevy_math |
bevy_heavy |
---|---|
0.15 | 0.1 |
bevy_heavy
is free, open source, and permissively licensed! Except where noted (below and/or in individual files),
all code in this repository is dual-licensed under either:
at your option. This dual-licensing approach is the de-facto standard in the Rust ecosystem, and there are very good reasons to include both.