add constants, delegate vector length calculation

This commit is contained in:
Raptorox 2025-08-01 18:09:08 +02:00
parent 2feaed6fd5
commit 1eaa48d511
No known key found for this signature in database
GPG key ID: 8B3556FC3ED1F6D8
3 changed files with 23 additions and 24 deletions

View file

@ -1,3 +1,4 @@
use crate::math;
use crate::particle::Particle;
use std::cell::RefCell;
use std::rc::Rc;
@ -15,15 +16,12 @@ impl Link {
pub fn solve(&mut self) {
let vec = self.p2.borrow().pos - self.p1.borrow().pos;
let vec_len = (vec.x * vec.x + vec.y * vec.y).sqrt();
let vec_len = math::vec_len(vec);
if vec_len > self.length {
let vec_norm = vec / vec_len;
let max_stretch = 0.5;
let clamped_len = vec_len.min(self.length + max_stretch);
let displacement = clamped_len - vec_len;
let displacement = self.length - vec_len;
let stiffness = 999.;
let vec_scaled = vec_norm * displacement * stiffness;