Posts by onkel_keks

    genau, weil man in 3A nur die "mathematischen grundlagen" oder so implementieren soll...:ahhh:


    aber man kanns relativ einfach testen indem man in der funktion CG1Object::transform(...) provisorisch eine solche transformation anwendet...oder man macht gleich 3b dazu :rolleyes:



    EDIT: modelMatrixVector kann man eigentlich bis zum 5. beispiel nicht richtig testen; da die objektnormalen erst dann gebraucht werden...aber modelMatrixPoints kann man so testen.

    die CG1Matrix3x3 ist für die transformation der Normalvektoren der Objekte (siehe modelMatrixVector). Normalvektoren sind Richtungsvektoren, d.h. es kommt nur auf ihre Ausrichtung an. Und die Ausrichtung eines Vektors verändert sich nicht, wenn man ihn herumverschiebt. Daher braucht man für CG1Matrix3x3 keine Translate- - wohl aber Scale- und Rotate-Transformationen. (wobei uniform scaling wieder so eine sache ist...) ;)
    falls es wen interessiert :rolleyes:

    in welcher klasse/funktion bist du? ich rede von CG1Object::translate - du wahrscheinlich auch ;)
    also, du bekommst x, y, und z übergeben und sollst damit eine translate-matrix erzeugen. praktischerweise gibt es da die funktion CG1Matrix4x4::setTranslate (bzw. CG1Matrix3x3), wie du bemerkt hast. nur musst du die von setTranslate erhaltene matrix nicht mit x, y und z aus CG1Object::translate multiplizieren, sondern natürlich diese x, y und z CG1Matrix4x4::setTranslate als Parameter übergeben - setTranslate baut ja die Matrix mit den angegebenen Parametern für dich.
    und was macht man dann mit der so erhaltenen matrix? tip: denk an die super-geile-ultimativ-matrix. :)

    Im Buch stehts...in den VO-Folien stehts...


    jedenfalls: um einen Punkt (x,y,z) zu verschieben (translatieren...oda so...:P) kann man ihn mit einer bestimmten Matrix multiplizieren. Das geht natürlich auch einfacher, aber der Vorteil der Matrix-Methode ist: es gibt auch für Rotation und Skalierung eine Matrix; und man kann all diese Matrizen zu einer super-geilen-mega-ultimativ-Matrix zusammenmultiplizieren.
    modelMatrixPoint ist deine Ultimativ-Matrix für jeden Punkt eines Objects, modelMatrixVector ist sie für die Normalen der Objects.
    Wie eine Translation-, Rotations- bzw. Skalierungsmatrix aussieht steht ausführlich im Buch. Vielleicht auch in den VO-Folien/Unterlagen? Kann sein.

    z-clipping muss nicht implementiert werden, das ist eine fleißaufgabe, die extrapunkte bringt.


    davon hab ich gerüchteweise gehört, konnte allerdings auf der lva-homepage nichts dazu finden...gibt es da noch irgendwo detailliertere angaben bzw. definitionen, was einem zusatzpunkte bringt? :ausheck:

    danke für die antwort,


    hab mittlerweile auch den fehler bezgl. translation gefunden (nach-rechts-verschieben verschiebt nach links): ich hab bei setCameraDistance schwachsinn gebaut...


    was mir noch probleme bereitet ist die kamerarotation: schon klar dass sich nicht die kamera sondern die welt um die kamera dreht (so wie ich sagen kann alles dreht sich um mich :D). ABER: wie kann es sein, dass die kamera auf den ursprung schauen soll, wenn sie sich im ursprung befindet (zprp=0; zvp=-2)? in meinen augen würde das nur sinn machen, wenn die kamera um (0,0,-2) rotiert, weil dort ja die view plane ist...oder?? hilfe? :wave2:


    und nur so aus interesse...könnte evtl. jemand, der schon fertig und von der richtigkeit seiner lösung überzeugt ist, einen screenshot vom teapot-lowres _ohne_ irgendwelche world-transformationen (also so, wie's aussieht gleich nachdem der teapot geladen wurde) posten?



    danke, mfg onkel_keks


    EDIT: mist, wieder was vergessen: wenn ich jetzt die 2d-atoffs lade (etwa pacman; mit doOnlyWorldTrans), wird er rechts oben außerhalb meines sichtbereichs gezeichnet. wenn ich isometrische skalierung anwende seh ich ihn dann auch (oder mit etwas herumprobieren mit translationen). nur dass er am kopf steht. was soll das? ist das gut so? hä?

    ich führe den thread mal einfach weiter...der allgemeine titel gefällt mir.


    aaaalso: unglaublicherweise werden jetzt die 3d-files bei mir richtig gezeichnet...soweit ich das beurteilen kann funktioniert auch alles.
    folgende fragen sind aber noch offen:


    • bzgl kamera-durch-maus-bewegens: das soll doch eigentlich so funktionieren, dass die kamera quasi um den ursprung rotiert. bei mir ist es aber so, dass die kamera um sich selbst rotiert...ich kann mir ad hoc nicht wirklich vorstellen, wie das anders sein soll. denn: laut empfehlung hab ich den projection reference point auf (0,0,0) und die view plane auf z=-1 gesetzt. eine kamera, die also um den ursprung rotieren soll, während sie sich im ursprung befindet muss doch um sich selbst rotieren...oder? :rolleyes:
    • clipping: ich habe nichts in die richtung implementiert (zumindest nicht bewusst). natürlich das clipping vom 2. bsp, aber kein "3d-clipping" mit far-view-plane und near-view-plane. hab ich das (treffenderweise ohne es zu bemerken) schon mit der projection matrix gemacht? oder dem umrechnen auf device koordinaten?
    • normalen: was soll ich damit? sie stehen, soweit isses klar, in modelMatrixVector. wie sind sie aber in der viewing pipeline zu behandeln? ich hab mal eine World- und eine Viewing- transformation damit angestellt. normalisieren könnt ich sie nachher natürlich auch. reicht das? irgendwie fehlt da die überprüfbarkeit...
    • und schließlich: ich hab jetzt ein objekt auf meinem canvas, etwa das u-boot. initially zeigt die spitze des ubootes nach links. dann klick ich auf den pfeil für die x-translation nach links...und das uboot bewegt sich nach rechts! passt das?

    danke für etwaige hilfestellungen, :p
    grüße
    onkel_keks


    oder funktioniert die steuerung über da UI erst nachdem bsp3b fertig ist?


    ja; für die fertigstellung von 3a muss das noch nicht implementiert werden. aus test- und spaßgründen ist es aber sinnvoll...dazu musst du die CG1Object::transform(...) implementieren.


    EDIT: natürlich nicht die ganze transform(...) funktion, sondern nur die world transformation der points (für die 2d-atoffs)

    hallo,


    [in der Methode transform()]
    muss ich da eine spezielle World Transformation implementieren? Oder besteht die "World Transformation" aus herumklicken auf Buttons in der GUI? :o
    Dasselbe (nein, das gleiche) bei Viewing Transformation: die Kamera liegt ja im Ursprung und ist axes-aligned. In der GUI find ich auch keine Möglichkeit, die Kamera zu verschieben oder zu drehen. Was genau soll ich dann noch bei der Viewing Transformation implementieren? :confused:



    Danke, mfg onkel_keks


    EDIT: Denkfehler. My bad. Durch rotateX, scale, etc in CG1Object erstellt man ja nur die Matrix...die dann angewendet werden muss...oho :ahhh:

    Neocron: so hätt ich das auch verstanden.


    blöde frage wahrscheinlich, aber macht es sinn, bei translate() auch den transformationMode TRANSFORMATION_LEFTTRANSLATE zu implementieren? eigentlich nicht? im kommentar dieser funktion steht trotzdem was von allen dreien...copy-paste-faulheit?



    ja und noch was...multLeft() und multRight(): das kann man jetzt so und so sehen, welche matrix links und welche rechts steht. ich habs mal so implementiert, dass wenn m1.multLeft(m2) aufgerufen wird, m1*m2 und wenn m1.multRight(m2) m2*m1 berechnet wird. ja? nein?


    danke, mfg onkel_keks

    mahlzeit,


    was du gepostet hast entspricht nicht der angabe weil ein moore-schaltwerk gefragt ist. bei diesem hängt der ausgang nur vom aktuellen zustand, nicht aber vom eingang ab. beim mealy-schaltwerk hingegen hängt der ausgang sowohl vom aktuellen zustand als auch vom eingang ab. du hast also ein mealy schaltwerk und kein moore-sw konstruiert...daher braucht man auch 3 latches und nicht nur 2.
    wobei es mit 2 vieeel eleganter is :p

    Update: Hat sich erledigt ;-) Wer Lust und Rechte hat, kann den Thread löschen.


    Hallo zusammen,


    ich bin gerade draufgekommen dass ich eine Pseudo-Terminkollision hab...zu der Sekunde, wo die Datenmod-Prüfung aufhört, fängt eine andere Prüfung an. Die andere Prüfung - GSI - findet im Radinger Hörsaal statt. Für Datenmod bin ich in Gruppe C, die im EI 7 stattfindet. Es gibt aber auch die Gruppe D, die ebenfalls im Radinger HS stattfindet. Wenn es also irgendwen gibt, der in Gruppe D ist und nichts gegen einen Tausch mit Gruppe C hat, bitte MELDEN!! Bitte entweder hier antworten oder e-Mail an martin.schenk@student.tuwien.ac.at


    Danke
    Martin


    P.S. Ja, ich hab dasselbe auch im TUWIS-Forum geschrieben...sorry für das Doppel-Posting aber es ist ziemlich wichtig für mich...

    wobei noch anzumerken wäre...aus dem skriptum geht das eigentlich nicht hervor. dort heißt es nur:
    "Ist y ein Knoten des linken Unterbaumes von x so gilt y.key <= x.key. Ist z ein Knoten des rechten Unterbaumes von x so gilt z.key >= x.key."


    Da steht nix davon dass auch in allen Subknoten der Key kleiner bzw größer sein muss. Obwohl es eigentlich logisch ist, dass es so sein sollte, sonst würde die Sache ja nicht viel Sinn machen. :p


    Edit: Für einen isSearchTree() wär ich auch dankbar... oder einen Tip wie man das so hinbiegen kann, dass überprüft wird, ob der Key des linken Kindknotens kleiner ist als die Keys aller vorhergehenden Elternknoten und für den Key des rechten Kindknotens vice versa. Da steh ich grad irgendwie auf der Leitung.


    Edit2: Ich hasse es ja, das zu sagen, aber: lol. Ganz einfach. Man darf nur nicht zu Baum-fixiert sein. Oder heißt es irgendwo, dass man diese Aufgabe anhand des rekonstruierten Baumes lösen muss? :D

    also mir wär ja schon geholfen wenn mir jemand sagen kann wie man die wegunabhängigkeit zeit. soll man irgend einen weg nehmen und dann kürzt sich dieser weg auf magische weise raus? oder wie? :confused:

    'morgen,


    ich weiß ja nicht ob ich schon wieder halluziniere aber ich bild mir ein irgendwo gelesen zu haben, dass man von dem übungsblatt die ersten 12 beispiele machen muss und weitere 5, die man sich aus den verbleibenden 12 aussuchen kann. ist das so? oder muss man alle machen? :distur:



    grüße, onkel_keks