non mi ricordo nemmeno io che cosa ho aggiunto

This commit is contained in:
uan
2025-12-25 15:18:06 +01:00
parent e4c77ed5e2
commit 930330d024
3 changed files with 17 additions and 13 deletions

View File

@@ -1,6 +1,7 @@
#include "objects.h"
#include <math.h>
#include <raymath.h>
#include <stdio.h>
#define min(a, b) (a>b?b:a);
#define max(a, b) (a>b?a:b);
@@ -61,7 +62,7 @@ void resolve_collision(object *obj1, object *obj2)
float sumrad = obj1->r+obj2->r;
float mindistsq = sumrad*sumrad;
if (distsq < mindistsq) {
if (distsq <= mindistsq) {
float dist = sqrtf(distsq);
if (dist == 0) {
@@ -73,9 +74,8 @@ void resolve_collision(object *obj1, object *obj2)
float overlap = sumrad - dist;
Vector3 separation = Vector3Scale(normal, overlap / 2.0f);
obj1->pos = Vector3Subtract(obj1->pos, separation);
obj2->pos = Vector3Add(obj2->pos, separation);
obj1->pos = Vector3Add(obj1->pos, separation);
obj2->pos = Vector3Subtract(obj2->pos, separation);
} else {
normal = Vector3Normalize(normal);
@@ -87,8 +87,8 @@ void resolve_collision(object *obj1, object *obj2)
if (vel1_normal - vel2_normal > 0) return;
float totalmass = obj1->mass + obj2->mass;
float vel1_normal_final = (obj1->mass * vel1_normal + obj2->mass * vel2_normal - obj2->mass * obj2->restitution * (vel1_normal - vel2_normal)) / totalmass;
float vel2_normal_final = (obj1->mass * vel1_normal + obj2->mass * vel2_normal - obj2->mass * obj1->restitution * (vel2_normal - vel1_normal)) / totalmass;
float vel1_normal_final = (obj1->mass * vel1_normal + obj2->mass * vel2_normal - obj2->mass * (vel1_normal - vel2_normal)) * obj1->restitution / totalmass;
float vel2_normal_final = (obj1->mass * vel1_normal + obj2->mass * vel2_normal - obj2->mass * (vel2_normal - vel1_normal)) * obj2->restitution / totalmass;
Vector3 vel1_tang = Vector3Subtract(obj1->vel, Vector3Scale(normal, vel1_normal));
Vector3 vel2_tang = Vector3Subtract(obj2->vel, Vector3Scale(normal, vel2_normal));