Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Klikanie obiektu

Ostatnio zmodyfikowano 2016-03-28 00:11
Autor Wiadomość
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ć
C/C++
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();
};
C/C++
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 ); // key musi byc funkcja, nie moze byc metoda
    a.init();
    glutMainLoop();
    system( "pause" );
    return 0;
}
C/C++
bool cProstokat::is_clicked()
{
    POINT pnt;
    GetCursorPos( & pnt );
    float x__ = x -(( a + x ) / 500 ) * pnt.x; //probowalem cos z internetu, ale lipa
    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<x_ && (x+a)>x_ && y<y_ && (y+b)>y_)
    if( x - a / 2 < x__ && x + a / 2 > x__ ) // && y-b/2<pnt.y && y+b/2>pnt.y)
    {
        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;
}
P-146616
Garniturek
Temat założony przez niniejszego użytkownika
» 2016-03-28 00:11:51
Można by to zrobić jakoś przez GL_SELECT?
P-146626
« 1 »
  Strona 1 z 1