diff options
| author | Sébastien Crozet <developer@crozet.re> | 2020-11-23 15:52:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-23 15:52:22 +0100 |
| commit | c641114f016c47f6b22acc084610847f88ff5a66 (patch) | |
| tree | d171cf0a72927b76ee20fda8f215477b4a5cd987 /examples3d | |
| parent | 4219bedb8b09a31a7ee8a9cd687db493215174a3 (diff) | |
| parent | c7ed2c99c12747ce8dc765e0ac0f40967bc8bacd (diff) | |
| download | rapier-c641114f016c47f6b22acc084610847f88ff5a66.tar.gz rapier-c641114f016c47f6b22acc084610847f88ff5a66.tar.bz2 rapier-c641114f016c47f6b22acc084610847f88ff5a66.zip | |
Merge pull request #67 from dimforge/determinism_apple_m1
Fix cross-platform determinism on the Apple M1 processor
Diffstat (limited to 'examples3d')
| -rw-r--r-- | examples3d/heightfield3.rs | 8 | ||||
| -rw-r--r-- | examples3d/trimesh3.rs | 7 |
2 files changed, 11 insertions, 4 deletions
diff --git a/examples3d/heightfield3.rs b/examples3d/heightfield3.rs index 6af93c7..59380d5 100644 --- a/examples3d/heightfield3.rs +++ b/examples3d/heightfield3.rs @@ -1,4 +1,4 @@ -use na::{DMatrix, Point3, Vector3}; +use na::{ComplexField, DMatrix, Point3, Vector3}; use rapier3d::dynamics::{JointSet, RigidBodyBuilder, RigidBodySet}; use rapier3d::geometry::{ColliderBuilder, ColliderSet}; use rapier_testbed3d::Testbed; @@ -23,7 +23,11 @@ pub fn init_world(testbed: &mut Testbed) { } else { let x = i as f32 * ground_size.x / (nsubdivs as f32); let z = j as f32 * ground_size.z / (nsubdivs as f32); - x.sin() + z.cos() + + // NOTE: make sure we use the sin/cos from simba to ensure + // cross-platform determinism of the example when the + // enhanced_determinism feature is enabled. + (<f32 as ComplexField>::sin(x) + <f32 as ComplexField>::cos(z)) } }); diff --git a/examples3d/trimesh3.rs b/examples3d/trimesh3.rs index 2a96bda..0cee465 100644 --- a/examples3d/trimesh3.rs +++ b/examples3d/trimesh3.rs @@ -1,4 +1,4 @@ -use na::Point3; +use na::{ComplexField, Point3}; use rapier3d::dynamics::{JointSet, RigidBodyBuilder, RigidBodySet}; use rapier3d::geometry::{ColliderBuilder, ColliderSet}; use rapier_testbed3d::Testbed; @@ -30,7 +30,10 @@ pub fn init_world(testbed: &mut Testbed) { // so we switch z and y here and set a random altitude at each point. for p in vertices.iter_mut() { p.z = p.y; - p.y = (p.x.sin() + p.z.cos()) * ground_height; + // NOTE: make sure we use the sin/cos from simba to ensure + // cross-platform determinism of the example when the + // enhanced_determinism feature is enabled. + p.y = (<f32 as ComplexField>::sin(p.x) + <f32 as ComplexField>::cos(p.z)) * ground_height; if p.x.abs() == ground_size / 2.0 || p.z.abs() == ground_size / 2.0 { p.y = 10.0; |
