summaryrefslogtreecommitdiff
path: root/src/constraint/beam.rs
diff options
context:
space:
mode:
authoreug-vs <eugene@eug-vs.xyz>2024-12-15 13:17:43 +0100
committereug-vs <eugene@eug-vs.xyz>2024-12-15 13:17:43 +0100
commit70afc5a7d871919776a64782e8b93404e6b0defd (patch)
treec3d8a273bddf4cbc3c55d06c751766b93b961a1f /src/constraint/beam.rs
parent297efa5127e83bea57132c503680dd348a725db5 (diff)
downloadparticle-physics-70afc5a7d871919776a64782e8b93404e6b0defd.tar.gz
feat!: add raylib rendering
Diffstat (limited to 'src/constraint/beam.rs')
-rw-r--r--src/constraint/beam.rs46
1 files changed, 0 insertions, 46 deletions
diff --git a/src/constraint/beam.rs b/src/constraint/beam.rs
deleted file mode 100644
index c953920..0000000
--- a/src/constraint/beam.rs
+++ /dev/null
@@ -1,46 +0,0 @@
-use nalgebra::{DVector, RowDVector};
-
-use crate::particle_system::{ParticleSystem, Scalar, N};
-
-use super::Constraint;
-
-pub struct BeamConstraint {
- pub particle_ids: [usize; 2],
- pub length: Scalar,
-
- jacobian: RowDVector<Scalar>,
-}
-
-impl ParticleSystem {
- pub fn add_beam_constraint(&mut self, particle_ids: [usize; 2]) {
- let a = &self.particles[particle_ids[0]];
- let b = &self.particles[particle_ids[1]];
-
- self.constraints.push(Box::new(BeamConstraint {
- particle_ids,
- length: (a.position - b.position).norm(),
- jacobian: RowDVector::zeros(self.particles.len() * N),
- }));
- }
-}
-
-impl Constraint for BeamConstraint {
- fn get_particles(&self) -> Vec<usize> {
- Vec::from(self.particle_ids)
- }
-
- fn c(&self, q: &DVector<Scalar>) -> Scalar {
- let a = q.fixed_rows::<N>(self.particle_ids[0] * N);
- let b = q.fixed_rows::<N>(self.particle_ids[1] * N);
-
- (a - b).norm() - self.length
- }
-
- fn set_jacobian(&mut self, jacobian: RowDVector<Scalar>) {
- self.jacobian = jacobian
- }
-
- fn jacobian_prev(&self) -> RowDVector<Scalar> {
- self.jacobian.clone()
- }
-}