Klikanie obiektu
Ostatnio zmodyfikowano 2016-03-28 00:11
Garniturek Temat założony przez niniejszego użytkownika |
Klikanie obiektu » 2016-03-27 20:42:12 Witam, chciałbym aby po kliknięciu na obiekt coś się działo, ale nie wiem jak to zaprogramować, bo współrzędne kursora myszki są inne niż współrzędne okienka. Nie wiem jak je przekształcić class cFigura { protected: float x, y, kat, R, G, B; public: cFigura(); virtual void rysuj() = 0; virtual void skaluj( float skala ) = 0; virtual bool is_clicked() = 0; }; class cProstokat : public cFigura { float a, b; public: cProstokat(); cProstokat( float _x, float _y, float _a, float _b ); virtual void rysuj(); virtual void skaluj( float skala ); virtual bool is_clicked(); };
cScena a; vector < cFigura *>::iterator it; int main( int argc, char * argv[] ) { cProstokat pr; a.tab.push_back( & pr ); it = a.tab.begin(); glutInit( & argc, argv ); glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB ); glutInitWindowSize( 500, 500 ); glutInitWindowPosition( 0, 0 ); glutCreateWindow( "simple" ); glutDisplayFunc( rysuj ); glutMouseFunc( Mysz ); glutKeyboardFunc( klawisz ); a.init(); glutMainLoop(); system( "pause" ); return 0; }
bool cProstokat::is_clicked() { POINT pnt; GetCursorPos( & pnt ); float x__ = x -(( a + x ) / 500 ) * pnt.x; float y__ = y -( b / 500 ) * pnt.y; float x_ =( 1.0f * pnt.x ) / 500 - 1.0f; float y_ = 1.0f -( 1.0f * pnt.y ) / 500; float y1 = pnt.y - 0.5 * 500; cout << x << " " << x - a << " " << pnt.x << " " << x__; if( x - a / 2 < x__ && x + a / 2 > x__ ) { return true; cout << "3" << endl; } else return false; } cFigura::cFigura() { x = 1; y = 1; kat = 1; R = 0.5; G = 0.5; B = 0.5; }
cProstokat::cProstokat() { x = 1; y = 1; a = 1; b = 1; }
cProstokat::cProstokat( float _x, float _y, float _a, float _b ) { x = _x; y = _y; a = _a; b = _b; }
|
|
Garniturek Temat założony przez niniejszego użytkownika |
» 2016-03-28 00:11:51 Można by to zrobić jakoś przez GL_SELECT? |
|
« 1 » |