Eine Gerade via Parameterdarstellung



  • Hallo,

    ich bräuchte eine Möglichkeit, einen Punkt auf einer Gerade zu zeichen, an einer beliebigen Stelle, veränderbar via Parameter t.

    Afaik sollte das so aussehen :

    Ortsvektor P0 + t*Ortsvektor P1 = Pz (0<=t<=1)

    nun weiß ich aber nicht, wie ich das in Visual Studios umsetzen kann.

    Ein Array Data mit den Punkten liegt vor :

    glVertex3fv((&(data[10][0] + t*data[0][0])));

    so scheint es nicht zu gehen 😉

    vllt könnt ihr mit helfen !

    Lg


  • Mod

    benutz glVertex3f (ohne v) und uebergebe dort die 3 komponenten einzeln, dann kannst du pro komponente (also x y und z) mit deiner formel ohne probleme die position ausrechnen.



  • Wenn der Typ von "data[0]" eine Vektor-Klasse ist, dann kannst du vermutlich einfach sowas schreiben:

    Vector3F p = data[10] + t * data[0];
    
    glVertex3fv(&p[0]); // angenommen Vector3F hat nen operator[], und die Elemente liegen schön brav hintereinander
    

    Und natürlich muss es P = P0 + t * (P1 - P0) heissen, wenn P1 auch ein Ortsvektor ist.



  • Danke für die Antworten !

    @hustbaer :

    Leider bekomme ich so die Fehlermeldung :

    error C2297: '*': Ungültig, da der rechte Operand vom Typ 'GLfloat [3]' ist

    Und mit dem Ortsvektor, hast du natürlich recht 🙂

    lg


  • Mod

    hustbaer schrieb:

    Wenn der Typ von "data[0]" eine Vektor-Klasse ist,...

    du hast zuviel vertrauen in die welt 😉

    glVertex3f(data[10][0] + t*data[0][0],data[10][1] + t*data[0][1],data[10][2] + t*data[0][2]);
    

Anmelden zum Antworten