add constants, delegate vector length calculation
This commit is contained in:
parent
2feaed6fd5
commit
1eaa48d511
3 changed files with 23 additions and 24 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue