Rand des "Projektionsschirms"



  • Hi,
    ich hab ein einfaches Problem, weiß aber nicht, wie man da nach ner Lösung suchen soll:
    Ich will am Rande des OGL-Fensters ein Objekt plazieren, weiss jedoch nicht, wieviel Einheiten es vom Mittelpunkt bis zum Rand sind.

    Ich habe gluPerseptive verwendet um eine Perspektive zu schaffen. Dann müsste man sich doch die Bildschirmbreite (b) herleiten können:

    Es gibt ein Dreieck, in dem sich der fovy winkel befindet.
    Die Gegenkathete ist b/2 und die Ankathete "near"

    also: tan(fovy) = (b/2) / near
    -> b = tan(fovy)*near*2

    Jedoch stimmt dies nicht, wie ich durch proben herausfand?
    was hab ich falsch gemacht?
    gruß



  • Fast: tan(alpha/2) = b/(2n)



  • hi thx, ja sry das /2 hab ich im forum vergessen zu schreiben:

    es müsste sein:
    b= tan(alpha/2) * 2 * n

    kommt aber bei mir auch nicht hin denn:

    nach "gluPerspective(45,vp[2]/vp[3],1,1000);"
    und ein um 5 nach hinten verschobenes objekt, müsste dies am rand sein wenn ich es um soviel nach außen verschiebe:

    b/2 😞 tan(45/2) * 2 * (near-5) ) /2 = 3,31

    oder so, ka

    b/2 😞 tan(45/2) * 2 * (near+5) ) /2 = 4,97

    stimmt beides nicht mit dem überein, was ich sehe 😕

    der rand ist bei mir bei ca 4,2 einheiten zur seite



  • Also das Problem nochmal deutlicher:

    eingestellt:
    Projektionsmatrix auf: glu.gluPerspective(45, 600/300, 1, 1000);

    Hier der Screenshot
    http://s2b.directupload.net/file/d/2089/gvrj59t9_png.htm][IMG]http://s2b.directupload.net/images/100305/temp/gvrj59t9.png

    ein Quadrat auf dem Fenster ist 2x2 Einheiten groß.
    Vom Mittelpunkt bis zum rechten Rand sind es also etwa: 4,1 einheiten
    Vom Mittelpunkt bis zum oberen Rand sind es etwa : 2,1 einheiten

    Da die Quadrate aber um 5 einheiten nach hinten geschoben sind, muss ich rechnen:

    b = tan(45/2) * 2 * (1+5) = 4,9 ...hat also nichts mit dem gemessenem zu tun

    warum?



  • Der Abstand vom Mittelpunkt zum Rand von nem OpenGL Screen muss sich doch irgentwie berechnen lassen?? Wie werden denn Objekte sonst ganz an den Rand geschoben?


Anmelden zum Antworten