distance checking and cleaning

This commit is contained in:
Solomon W. 2020-06-01 13:19:03 -04:00
parent c65ae423f3
commit 5969248278
4 changed files with 48 additions and 10 deletions

View File

@ -1,8 +1,13 @@
#include "Vector.h" #include "Vector.h"
#include <math.h>
Vector::Vector(float x, float y) { Vector::Vector(float x, float y) {
this->x=x; this->x=x;
this->y=y; this->y=y;
} }
Vector::Vector() {} Vector::Vector() {}
int Vector::distanceTo(Vector vec) {
return sqrt(pow(abs(x - vec.x),2)+pow(abs(y - vec.y),2));
}

View File

@ -5,5 +5,6 @@ class Vector {
float x,y; float x,y;
Vector(); Vector();
Vector(float x, float y); Vector(float x, float y);
int distanceTo(Vector vec);
}; };
#endif #endif

View File

@ -1,29 +1,54 @@
#include "phys_obj.h" #include "phys_obj.h"
#ifndef PI /*
#define PI 3.14159265359
#endif
phys_obj::phys_obj(Quad object, Vector init_vel) { phys_obj::phys_obj(Quad object, Vector init_vel) {
this->obj=object; this->obj=object;
this->velocity=init_vel; this->velocity=init_vel;
this->bounds=BoundingBox(object); this->bounds=BoundingBox(object);
} }*/
void phys_obj::force(Vector vec) { void phys_obj::force(Vector vec) {
this->velocity.x += vec.x; this->velocity.x += vec.x;
this->velocity.y += vec.y; this->velocity.y += vec.y;
} }
void phys_obj::render(SDL_Renderer *rend) { void phys_obj::render(SDL_Renderer *rend) {
/*
if(obj.isInitialized()) {
if(circle.isInitialized()) {
circle.render(rend);
} else {
fprintf(stderr,"[ERROR] Could not render object");
}
} else {
obj.render(rend);
}*/
obj.render(rend); obj.render(rend);
bounds.render(rend); }
phys_obj::phys_obj(Circle c, Vector init_vel) {
this->obj = c;
this->velocity = init_vel;
}
phys_obj::phys_obj(Circle c) {
this->obj = c;
this->velocity = Vector(0,0);
} }
void phys_obj::translate(Vector vec) { void phys_obj::translate(Vector vec) {
obj.translate(vec); obj.translate(vec);
bounds.update(); //bounds.update();
}
int phys_obj::distanceTo(Circle c) {
return obj.center.distanceTo(c.center);
} }
bool phys_obj::checkCollision(phys_obj o) { bool phys_obj::checkCollision(phys_obj o) {
if(distanceTo(o.obj) <= obj.radius) {
return true;
} else {
return false;
}
} }
void phys_obj::calculate_vectors(std::vector<phys_obj> objects) { void phys_obj::calculate_vectors(std::vector<phys_obj> objects) {

View File

@ -1,15 +1,22 @@
#include "BoundingBox.h" #include "BoundingBox.h"
#include "Circle.h"
#include <vector> #include <vector>
class phys_obj { class phys_obj {
public: public:
Vector velocity; Vector velocity;
Quad obj; //Quad obj;
Circle obj;
BoundingBox bounds; BoundingBox bounds;
phys_obj(Quad object, Vector init_vel); phys_obj();
//phys_obj(Quad object);
//phys_obj(Quad object, Vector init_vel);
phys_obj(Circle c);
phys_obj(Circle c, Vector init_vel);
void force(Vector vec); void force(Vector vec);
void render(SDL_Renderer *rend); void render(SDL_Renderer *rend);
static void calculate_vectors(std::vector<phys_obj> objects); static void calculate_vectors(std::vector<phys_obj> objects);
void translate(Vector vec); void translate(Vector vec);
bool checkCollision(phys_obj o); bool checkCollision(phys_obj o);
int distanceTo(Circle c);
}; };