mirror of
https://github.com/PoetryInCode/simple-rigid-sim.git
synced 2026-08-13 11:24:39 -04:00
created bounding boxes
This commit is contained in:
parent
ecff6bd5b8
commit
d425ac7483
24
src/BoundingBox.cpp
Normal file
24
src/BoundingBox.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "BoundingBox.h"
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
BoundingBox::BoundingBox(Quad &quad) {
|
||||||
|
this->parent = (size_t)&quad;
|
||||||
|
init(quad);
|
||||||
|
}
|
||||||
|
BoundingBox::BoundingBox() {}
|
||||||
|
|
||||||
|
void BoundingBox::update() {
|
||||||
|
Quad *quad = (Quad *)parent;
|
||||||
|
init(quad[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BoundingBox::render(SDL_Renderer *rend) {
|
||||||
|
uint8_t r,g,b,a;
|
||||||
|
SDL_GetRenderDrawColor(rend,&r,&g,&b,&a);
|
||||||
|
SDL_SetRenderDrawColor(rend,WHITE);
|
||||||
|
SDL_RenderDrawLine(rend,box.topL.x,box.topL.y,box.topR.x,box.topR.y);
|
||||||
|
SDL_RenderDrawLine(rend,box.topR.x,box.topR.y,box.botR.x,box.botR.y);
|
||||||
|
SDL_RenderDrawLine(rend,box.botR.x,box.botR.y,box.botL.x,box.botL.y);
|
||||||
|
SDL_RenderDrawLine(rend,box.botL.x,box.botL.y,box.topL.x,box.topL.y);
|
||||||
|
SDL_SetRenderDrawColor(rend,r,g,b,a);
|
||||||
|
}
|
||||||
44
src/BoundingBox.h
Normal file
44
src/BoundingBox.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#include <cstddef>
|
||||||
|
#include "Quad.h"
|
||||||
|
|
||||||
|
class BoundingBox {
|
||||||
|
private:
|
||||||
|
size_t parent;
|
||||||
|
void init(Quad quad) {
|
||||||
|
xvalues[0] = quad.topL.x;
|
||||||
|
xvalues[1] = quad.topR.x;
|
||||||
|
xvalues[2] = quad.botR.x;
|
||||||
|
xvalues[3] = quad.botL.x;
|
||||||
|
|
||||||
|
yvalues[0] = quad.topL.y;
|
||||||
|
yvalues[1] = quad.topR.y;
|
||||||
|
yvalues[2] = quad.botR.y;
|
||||||
|
yvalues[3] = quad.botL.y;
|
||||||
|
|
||||||
|
for(int i=0; i<4; i++) {
|
||||||
|
if(xvalues[i] > max.x) {
|
||||||
|
max.x = xvalues[i];
|
||||||
|
} else {
|
||||||
|
if(xvalues[i] < min.x) {
|
||||||
|
min.x = xvalues[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(yvalues[i] > max.y) {
|
||||||
|
max.y = yvalues[i];
|
||||||
|
} else {
|
||||||
|
if(min.y < yvalues[i]) {
|
||||||
|
min.y = yvalues[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
box = Quad(Vector(min.x,min.y),Vector(max.x,max.y));
|
||||||
|
}
|
||||||
|
public:
|
||||||
|
int xvalues[4],yvalues[4];
|
||||||
|
Vector max,min;
|
||||||
|
Quad box;
|
||||||
|
BoundingBox(Quad &quad);
|
||||||
|
BoundingBox();
|
||||||
|
void update();
|
||||||
|
void render(SDL_Renderer *rend);
|
||||||
|
};
|
||||||
Loading…
x
Reference in New Issue
Block a user