Mapa agora feito em lua :D
[Projeto-PCG.git] / geometry.cpp
blobc618b2023fd83dcde30a65b71f42a3f46a91669a
1 #include "geometry.h"
2 #include "math.h"
3 #include <vector>
5 Linha::Linha(double x1,double y1,double x2, double y2) {
6 vertices[0].x = x1;
7 vertices[0].y = y1;
8 vertices[1].x = x2;
9 vertices[1].y = y2;
12 Rect::Rect(double x1,double y1,double x2, double y2) {
13 vertices[0].x = x1;
14 vertices[0].y = y1;
15 vertices[1].x = x2;
16 vertices[1].y = y2;
17 normaliza();
20 void Rect::normaliza() {
21 double xmin,xmax,ymin,ymax;
22 xmin = std::min(vertices[0].x,vertices[1].x);
23 xmax = std::max(vertices[0].x,vertices[1].x);
24 ymin = std::min(vertices[0].y,vertices[1].y);
25 ymax = std::max(vertices[0].y,vertices[1].y);
26 vertices[0].x = xmin;
27 vertices[1].x = xmax;
28 vertices[0].y = ymin;
29 vertices[1].y = ymax;
32 void Linha::desenha() {
33 glColor3f(0,0,0);
34 glBegin(GL_LINES);
35 glVertex3f(vertices[0].x, vertices[0].y, 0.0f); // origin of the line
36 glVertex3f(vertices[1].x, vertices[1].y, 0.0f); // origin of the line
37 glEnd( );
40 void Polygon::desenha() {
41 int n = linhas.size();
42 for (int i = 0; i < n; i++) {
43 linhas[i].desenha();
47 double operator*(const Ponto &a, const Ponto &b) {
48 return a.x * b.y - b.x * a.y;
51 Ponto operator-(const Ponto &a, const Ponto &b) {
52 Ponto ret;
53 ret.x = a.x - b.x;
54 ret.y = a.y - b.y;
55 return ret;
58 Ponto operator+(const Ponto &a, const Ponto &b) {
59 Ponto ret;
60 ret.x = a.x + b.x;
61 ret.y = a.y + b.y;
62 return ret;
65 double distance(const Ponto &a,const Ponto &b) {
66 return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
69 void drawCircle(double radius, int lines)
71 double i2rad = PI/(lines/2.0);
72 glBegin(GL_LINE_LOOP);
73 for (int i=0; i < lines; i++) {
74 double degInRad = i*i2rad;
75 glVertex2f(cos(degInRad)*radius,sin(degInRad)*radius);
78 glEnd();