Array verwalten



  • Hallo zusammen,
    ich hab ein kleines Problem.
    Ich möchte habe
    osg::Vec3Array* res = (osg::Vec3Array*)quad->getVertexArray();
    gemacht und möchte jetzt an die einzelnen Werte des Vectors kommen.
    D.h. ich muss Vec3Array in ein Vec3 umwandeln.

    aber wie???

    Nochmal anders erklärt.

    ich habe eine Vec3Array in dem, zum Beispiel, vier Vec3(x,y,z) stehen.
    und an die vier Vec3(x,y,z) möchte ich jetzt ran kommen, um mir anschließend die x , y und z Werte auszugeben.

    Danke schonmal!


  • Mod

    Ohne zu wissen, was ein Vec3Array ist, rate ich mal: (*res)[index]



  • Hat mir jetzt leider nicht geholfen...



  • Nochmal anders erklärt.

    ich habe eine Vec3Array in dem, zum Beispiel, vier Vec3(x,y,z) stehen.
    und an die vier Vec3(x,y,z) möchte ich jetzt ran kommen, um mir anschließend die x , y und z Werte auszugeben.

    🙂 Danke.



  • RTFM



  • Hilf mir doch.


  • Mod

    82kolu schrieb:

    Hilf mir doch.

    Du weißt nicht genug über C++, um meine Antwort zu verstehen. Wenn du meine Antwort nicht versteht, dann verstehst du nicht genug von Arrays, um überhaupt damit zu arbeiten. Sollen wir dir dein ganzes Programm schreiben?



  • Das ist eine Zeile



  • 82kolu schrieb:

    Hilf mir doch.

    Die Doku der von Dir verwendeten Bibliothek musst Du schon selbst lesen. Vec3Array und Vec3 sind erstmal nur Namen, hinter denen wer-weiß-was für Typen stecken könnten, die nicht jeder kennen wird. Ich helfe Dir, in dem ich auf das hier verweise.



  • Habs auch ohne eure wollen wir mal sagen belehrungen geschafft.

    an die, die es ernsthaft versucht haben Danke!



  • Mir kam schon das osg verdächtig bekannt vor, OpenSceneGraph

    An instance of osg::Vec3Array can be used to store these triples. Since osg::Vec3Array is derived from the STL vector class, we can use the push_back method to add array elements.

    http://www.cplusplus.com/reference/stl/vector/

    Unter Element access findest du die Methoden die du brauchst, um auf einzelne Vec3 Objekte zuzugreifen, wie du an den Inhalt dann rankommst musst du mal in der Dokumentation von OSG nachschauen, wird aber vermutlich nicht so schwierig sein.

    Ich hab die Stelle beim googlen schon gefunden wo es stehen könnte, ist aber allerdings bei mir nicht erreichbar http://openscenegraph.sourceforge.net/documentation/OpenSceneGraph/doc/doc++/osg/HIER.html

    edit: Na dann, hat sich ja geklärt 😉


  • Mod

    82kolu schrieb:

    Das ist eine Zeile

    Und? Na schön:

    Sehr geehrter Herr oder Frau 82kolu,

    betreffend ihrer Anfrage vom 6.Oktober 2011 zum Thema "Array verwalten", möchte ich, ihr ergebenster SeppJ, sie darauf aufmerksam machen, dass für den Zugriff auf die Elemente eines Arrays, auf welches man einen Pointer hat, in ihrem Originalschreiben ref genannt, zuerst besagter Pointer dereferenziert werden muss, auch geschreiben als *ref. Sodann kann man mit den wohlbekannten Arraydereferenzierungsoperatoren, in C++ als [] geschreiben, weiterarbeiten. Da jedoch die Arrayderefernzierungsoperatoren stärker binden als der Pointerderefernzierungsoperator * , wie Sie der Fachliteratur zur schönen Sprache C++ mit Leichtigkeit entnehmen können, müssen wir sie ergebedst darauf aufmerksam machen, dass der Vorrang von Operatoren mit den Prioritätsregelungsoperatoren, geschrieben () , geregelt werden kann. Dies bedeutet im Klartext, dass der Arrayderefenzierungsoperator, [] , auf den prioritatsgeregelten, dereferenzierten Arrayzeiger, in diesem Beispiel weiterhin ref , also insgesamt (*ref) angewendet werden muss. Das Gesamtergebnis, wenn Sie soweit folgen konnten ist dann (*ref)[index] , wenn wir in diesem Beispiel weiterhin mit den Konventionen von oben (also ref ist ein Zeiger auf ein Array) weiter arbeiten und einmal hypothetisch annehmen, dass ihre durchlaucht Person auf den Index mit Nummer index in diesem Array, auf welches der Zeiger, in diesem Beispiel ref genannt zeigt, zugreifen wünschen. Sie können auch mit Leichtigkeit diesen Index ändern, indem sie für das index in diesem Beispiel etwas anderes einsetzen, beispielsweise hund , wenn Sie, wieder rein hypothetisch gesprochen, auf einen Index hund in diesem Array, auf welches der Zeiger zeigt, der in diesem Beispiel ref genannt wird, zeigt, zugreifen wünschen.
    Das so erhaltene Element können sie dann benutzen in einer Form, wie es Ihnen, durchlauchte(r) 82kolu beliebt.

    Hochachtungsvoll, mit den allerbesten Grüßen meinserseits und des gesamten C++.de-Forums möchte ich mich bei Ihnen für ihre sehr geschätzte Aufmerksamkeit beim Lesen dieses kleinen Textes der hoffentlich ihre Anfrage beantwortet und keine weiteren Fragen offen lässt, bedanken.

    Freundlichst, ihr ergebener Diener

    SeppJ.



  • phcn.fraggle schrieb:

    Since osg::Vec3Array is derived from the STL vector class, we can use the push_back method to add array elements.

    Ohje, wieder so eine misslungene lib.


  • Mod

    314159265358979 schrieb:

    Ohje, wieder so eine misslungene lib.

    Vielleicht ist es nur ein typedef oder "derived" ist nur im übertragenden Sinne gemeint. Und virtuelle Funktionen oder eigene Datenelemente wird etwas mit diesem Namen vermutlich auch nicht haben.



  • SeppJ schrieb:

    82kolu schrieb:

    Das ist eine Zeile

    Und? Na schön:

    Sehr geehrter Herr oder Frau 82kolu,

    betreffend ihrer Anfrage vom 6.Oktober 2011 zum Thema "Array verwalten", möchte ich, ihr ergebenster SeppJ, sie darauf aufmerksam machen, dass für den Zugriff auf die Elemente eines Arrays, auf welches man einen Pointer hat, in ihrem Originalschreiben ref genannt, zuerst besagter Pointer dereferenziert werden muss, auch geschreiben als *ref. Sodann kann man mit den wohlbekannten Arraydereferenzierungsoperatoren, in C++ als [] geschreiben, weiterarbeiten. Da jedoch die Arrayderefernzierungsoperatoren stärker binden als der Pointerderefernzierungsoperator * , wie Sie der Fachliteratur zur schönen Sprache C++ mit Leichtigkeit entnehmen können, müssen wir sie ergebedst darauf aufmerksam machen, dass der Vorrang von Operatoren mit den Prioritätsregelungsoperatoren, geschrieben () , geregelt werden kann. Dies bedeutet im Klartext, dass der Arrayderefenzierungsoperator, [] , auf den prioritatsgeregelten, dereferenzierten Arrayzeiger, in diesem Beispiel weiterhin ref , also insgesamt (*ref) angewendet werden muss. Das Gesamtergebnis, wenn Sie soweit folgen konnten ist dann (*ref)[index] , wenn wir in diesem Beispiel weiterhin mit den Konventionen von oben (also ref ist ein Zeiger auf ein Array) weiter arbeiten und einmal hypothetisch annehmen, dass ihre durchlaucht Person auf den Index mit Nummer index in diesem Array, auf welches der Zeiger, in diesem Beispiel ref genannt zeigt, zugreifen wünschen. Sie können auch mit Leichtigkeit diesen Index ändern, indem sie für das index in diesem Beispiel etwas anderes einsetzen, beispielsweise hund , wenn Sie, wieder rein hypothetisch gesprochen, auf einen Index hund in diesem Array, auf welches der Zeiger zeigt, der in diesem Beispiel ref genannt wird, zeigt, zugreifen wünschen.
    Das so erhaltene Element können sie dann benutzen in einer Form, wie es Ihnen, durchlauchte(r) 82kolu beliebt.

    Hochachtungsvoll, mit den allerbesten Grüßen meinserseits und des gesamten C++.de-Forums möchte ich mich bei Ihnen für ihre sehr geschätzte Aufmerksamkeit beim Lesen dieses kleinen Textes der hoffentlich ihre Anfrage beantwortet und keine weiteren Fragen offen lässt, bedanken.

    Freundlichst, ihr ergebener Diener

    SeppJ.

    Warum nicht gleich so? 😉
    Hat sich die Zeit, die du für den Text gebraucht hast, wenigstens ausgezahllt?
    Hast das hoffentlich bezahlt bekommen 😛

    best regards,
    82kolu

    @phcn.fraggle

    Besten Dank !!


  • Mod

    Ja, ich werde vom Internet nach Zeilen bezahlt.



  • 82kolu schrieb:

    Habs [...] geschafft.

    Cool! ...wenn man sich nur'n bissel anstrengt...

    Also, ne konkrete C++ Frage hätt' ich Dir auch beantwortet... aber sowas geht ja mal gar nicht. Ich hoffe, das siehst Du inzwischen ein... 😉


Log in to reply