Ajuste leve na velocidade permitindo movimentos mais sutis
[Projeto-PCG.git] / geometry.h
bloba41bdaaf56e6a0ba4299cdf7340349b9840fa013
1 #ifndef GEOMETRIA_H
2 #define GEOMETRIA_H
3 #include "SDL/SDL.h"
4 #include "SDL/SDL_opengl.h"
5 #include <vector>
7 const double PI = 3.14159265358979323846;
9 struct Ponto {
10 double x,y;
11 Ponto () { }
12 Ponto (double x1, double y1) {x = x1; y = y1;}
15 double distance(const Ponto &a,const Ponto &b);
17 double operator*(const Ponto &a, const Ponto &b);
18 Ponto operator-(const Ponto &a, const Ponto &b);
19 Ponto operator+(const Ponto &a, const Ponto &b);
21 class Linha {
22 public:
23 Ponto vertices[2];
24 double color[3];
26 void translate(Ponto v);
27 void desenha();
28 Linha(double x1,double y1,double x2, double y2);
29 Linha(Ponto a, Ponto b) {vertices[0] = a; vertices[1] = b; color[0] = color[1] = color[2] = 0.0; }
32 class Rect {
33 private:
34 void normaliza();
35 public:
36 Ponto vertices[2];
37 Rect(double x1,double y1,double x2, double y2);
38 Rect(Ponto a, Ponto b) {vertices[0] = a; vertices[1] = b; normaliza();}
41 class Polygon {
42 public:
43 std::vector<Linha> linhas;
44 void addLinha(Linha linha) {linhas.push_back(linha);}
45 void desenha();
46 void translate(Ponto v);
49 void drawCircle(double radius, int lines);
50 bool linesIntersect(const Linha a,const Linha b);
51 double timeToIntersection(const Linha a,const Linha b);
52 double abs(double x);
53 double sign(double n);
54 double closerToZero(double a, double b);
56 #endif