-
Notifications
You must be signed in to change notification settings - Fork 0
/
palet.cpp
80 lines (63 loc) · 2.74 KB
/
palet.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include "palet.h"
// Constructeur
Palet::Palet(float positionX)
{
posx_=positionX;
QImage imagetex=QGLWidget::convertToGLFormat(QImage(QString(":/images/Palet.jpg")));
glGenTextures(1,&Texture_);
glBindTexture(GL_TEXTURE_2D,Texture_);
glTexImage2D(GL_TEXTURE_2D,0,3,imagetex.width(),imagetex.height(),0,GL_RGBA,GL_UNSIGNED_BYTE,imagetex.bits());
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
void Palet::Display(){
glPushMatrix();
glTranslatef(posx_,0,0);
glTranslatef(0,-29.0,0);//Set position Verticale
//faire le dessin avec texture
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,Texture_);
glBegin(GL_QUADS);
glTexCoord2f(0, 0);glVertex3f(7.0f, 1.0f, 2.5f);
glTexCoord2f(1, 0);glVertex3f(-7.0f, 1.0f, 2.5f);
glTexCoord2f(1, 1);glVertex3f(-7.0f, -1.0f, 2.5f);
glTexCoord2f(0, 1);glVertex3f(7.0f, -1.0f, 2.5f);
glTexCoord2f(0, 0);glVertex3f(7.0f, 1.0f, -2.5f);
glTexCoord2f(1, 0);glVertex3f(7.0f, -1.0f, -2.5f);
glTexCoord2f(1, 1);glVertex3f(-7.0f, -1.0f, -2.5f);
glTexCoord2f(0, 1);glVertex3f(-7.0f, 1.0f, -2.5f);
glTexCoord2f(0, 0);glVertex3f(7.0f, -1.0f, -2.5f);
glTexCoord2f(1, 0);glVertex3f(7.0f, -1.0f, 2.5f);
glTexCoord2f(1, 1);glVertex3f(-7.0f,-1.0f, 2.5f);
glTexCoord2f(0, 1);glVertex3f(-7.0f, -1.0f, -2.5f);
glTexCoord2f(0, 0);glVertex3f(7.0f, 1.0f, -2.5f);
glTexCoord2f(1, 0);glVertex3f(-7.0f, 1.0f, -2.5f);
glTexCoord2f(1, 1);glVertex3f(-7.0f, 1.0f, 2.5f);
glTexCoord2f(0, 1);glVertex3f(7.0f, 1.0f, 2.5f);
glTexCoord2f(0, 0);glVertex3f(-7.0f, 1.0f, -2.5f);
glTexCoord2f(1, 0);glVertex3f(-7.0f, -1.0f, -2.5f);
glTexCoord2f(1, 1);glVertex3f(-7.0f, -1.0f, 2.5f);
glTexCoord2f(0, 1);glVertex3f(-7.0f, 1.0f, 2.5f);
glTexCoord2f(0, 0);glVertex3f(7.0f, 1.0f, -2.5f);
glTexCoord2f(1, 0);glVertex3f(7.0f, 1.0f, 2.5f);
glTexCoord2f(1, 1);glVertex3f(7.0f, -1.0f, 2.5f);
glTexCoord2f(0, 1);glVertex3f(7.0f, -1.0f, -2.5f);
glEnd();
glDisable(GL_TEXTURE_2D);
glPopMatrix();
}
void Palet::UpdatePos(float position){
posx_=position;
}
float Palet::InteractPalet(float x,float y,float angle){
if (((y-0.707>=(-29-1))&&(y-0.707<=(-29+1))&&(x-0.707>=posx_-7.0)&&(x-0.707<=posx_+7.0))||((y-1>=(-29+1))&&(y-1<=(-29-1))&&(x>=posx_-7.0)&&(x<=posx_+7.0))||((y-0.707>=(-29-1))&&(y-0.707<=(-29+1))&&(x+0.707>=posx_-7.0)&&(x+0.707<=posx_+7.0))){
float dist=posx_-x;
//qDebug()<<x<<y<<angle*180/3.1415<<dist;
if(dist>=-7.1 && dist<=7.1){
if (dist==0) return -angle;
else return -(2*(-5*dist+90)-angle*180/3.1415)*(3.1415/180);
}
else return angle;
}
return angle;
}