<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Suche ne Vector implementierung (nicht std::vector)]]></title><description><![CDATA[<p>Ich suche eine Implementierung einer vernünftigen 3D Vektor klasse, inklusive der gängingen Operatoren wie Länge, Addition, Subtraktion usw.<br />
Bevor ich mir die selber schreibe, frage ich erstmal hier. Da man bei C++ bei vector immer nur auf std::vector stößt, habe ich im Web nichts kluges finden können.</p>
<p>Wäre dankbar für jeden Tipp</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228379/suche-ne-vector-implementierung-nicht-std-vector</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 14:54:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228379.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Nov 2008 14:20:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Thu, 27 Nov 2008 14:20:26 GMT]]></title><description><![CDATA[<p>Ich suche eine Implementierung einer vernünftigen 3D Vektor klasse, inklusive der gängingen Operatoren wie Länge, Addition, Subtraktion usw.<br />
Bevor ich mir die selber schreibe, frage ich erstmal hier. Da man bei C++ bei vector immer nur auf std::vector stößt, habe ich im Web nichts kluges finden können.</p>
<p>Wäre dankbar für jeden Tipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621834</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Thu, 27 Nov 2008 14:20:26 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Thu, 27 Nov 2008 14:24:25 GMT]]></title><description><![CDATA[<p>Hab mal selber einen geschrieben, wenns das ist was du suchst...</p>
<pre><code class="language-cpp">typedef struct Vector
	{
		Vector() {};
		float x, y, z;

		Vector(float new_x, float new_y, float new_z)
		{
			x=new_x;
			y=new_y;
			z=new_z;
		}

		Vector operator+(const Vector &amp;vector)
		{
			return Vector(vector.x+x, vector.y+y, vector.z+z);
		}

		Vector operator-(const Vector &amp;vector)
		{
			return Vector(x-vector.x, y-vector.y, z-vector.z);
		}

		Vector operator*(const float number)
		{
			return Vector(x*number, y*number, z*number);
		}

		Vector operator/(const float number)
		{
			return Vector(x/number, y/number, z/number);
		}
	};
</code></pre>
<p>Wenn du den Vektor global verwenden möchtest, solltest du ihn natürlich als eigene Klasse initialisieren und nicht wie ich, als struct...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621837</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 27 Nov 2008 14:24:25 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Thu, 27 Nov 2008 14:35:09 GMT]]></title><description><![CDATA[<p>Jepp, das drüfte es tun, länge, winkel usw kann ich ja hinzufügen.</p>
<p>Danke</p>
<p>Ganz merkwürdig, dass Boost da nichts hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621854</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Thu, 27 Nov 2008 14:35:09 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Thu, 27 Nov 2008 15:16:50 GMT]]></title><description><![CDATA[<p>boost hat ublas, zu finden in numeric.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621892</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 27 Nov 2008 15:16:50 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Thu, 27 Nov 2008 16:02:34 GMT]]></title><description><![CDATA[<p>lol way...</p>
<p>- Initialisierungsliste<br />
- typedef struct {/*struct*/}; &lt;= was soll das?<br />
- warsum sind x, y, z public?<br />
- Vector() {} &lt;= warum denn so was und nicht wie es jeder normale mensch macht x(09; y(0), z(0) in die Initialiserungsliste?</p>
<p>Ich hör erst mal auf - hast es ja sicherlich gut gemeint... ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621933</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 27 Nov 2008 16:02:34 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 06:33:16 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Ich hör erst mal auf - hast es ja sicherlich gut gemeint... ^^</p>
</blockquote>
<p>Seine Fehler zu verbreiten kann nie gut gemeint sein. (wir haben ihn so weit ich mich erinnern kann mehrmals darauf hingewiesen die Initialisierungsliste usw. zu benutzen..)</p>
<p>btw:<br />
Die Variablen bei einem Vector public zu machen finde ich duraus legitim. Eines der wenigen Ausnahmen der Regel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622250</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 28 Nov 2008 06:33:16 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 06:39:39 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Seine Fehler zu verbreiten kann nie gut gemeint sein.</p>
</blockquote>
<p>Klar wird das gut gemeint sein. Oder meinst du, er hat aus Bösartigkeit gepostet? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>drakon schrieb:</p>
<blockquote>
<p>Die Variablen bei einem Vector public zu machen finde ich duraus legitim. Eines der wenigen Ausnahmen der Regel.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> Gerade bei einer solchen fixen Schnittstelle, da nervt ein getX &amp; setX nur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622252</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 28 Nov 2008 06:39:39 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 07:24:42 GMT]]></title><description><![CDATA[<p>Fehlt noch rescale und ein paar Rotationsoperationen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Dann wärs super</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622262</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Fri, 28 Nov 2008 07:24:42 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 07:24:43 GMT]]></title><description><![CDATA[<p>dennoch ist das ganze ein schlechtes Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622263</guid><dc:creator><![CDATA[vlad_tepesch]]></dc:creator><pubDate>Fri, 28 Nov 2008 07:24:43 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 07:31:06 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>Seine Fehler zu verbreiten kann nie gut gemeint sein.</p>
</blockquote>
<p>Klar wird das gut gemeint sein. Oder meinst du, er hat aus Bösartigkeit gepostet? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Ne, das nicht, aber ich mag mich erinnern, dass wir ihn mehrmals darauf hingewiesen haben, dass er Initialisierungslisten usw. benutzen sollte und ihn auch auf andere Fehler seinerseits hingewiesen. Und das ignoriert er offensichtlich..<br />
Und somit ist dem OP überhaupt nicht geholfen, wenn er sich schlechte Methoden aneignet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622265</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 28 Nov 2008 07:31:06 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 08:01:58 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Ne, das nicht, aber ich mag mich erinnern, dass wir ihn mehrmals darauf hingewiesen haben, dass er Initialisierungslisten usw. benutzen sollte und ihn auch auf andere Fehler seinerseits hingewiesen.</p>
</blockquote>
<p>Sicher, das kann man trotzdem anders rüberbringen.</p>
<p>Zum Thema: Bei solchen häufig verwendeten Konstrukten lohnt sich auch öfters ein Blick in die <a href="http://google.de/codesearch" rel="nofollow">Google Codesuche</a>, die Suche nach <a href="http://google.de/codesearch?q=vec3d&amp;hl=de&amp;btnG=Code+suchen" rel="nofollow">vec3d</a> zeigt da schon einiges sinnvolles. Man muss halt die Lizenz beachten, aber sonst eine prima Möglichkeit für Inspirationen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622272</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 28 Nov 2008 08:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 10:08:07 GMT]]></title><description><![CDATA[<p>Hab mal was gebastelt, in Anlehnung an ways Code.</p>
<p>Verbesserungen immer gewünscht</p>
<pre><code class="language-cpp">#pragma once

#include &lt;complex&gt;
#include &lt;algorithm&gt;

class Vector
{
public: 

	static double angleInBetweenDegree(const Vector &amp; v1, const Vector &amp;v2)
	{
		double angle = std::acos(v1.dotProduct(v2));
		return std::min(angle, 360-angle);
	}

	Vector() {};

	Vector(double new_x, double new_y, double new_z):x(new_x),y(new_y), z(new_z)
    {   
    }

    Vector operator+(const Vector &amp;vector)
    {
        return Vector(vector.x+x, vector.y+y, vector.z+z);
    }

    Vector operator-(const Vector &amp;vector)
    {
        return Vector(x-vector.x, y-vector.y, z-vector.z);
    }

    Vector operator*(const double number)
    {
        return Vector(x*number, y*number, z*number);
    }

    Vector operator/(const double number)
    {
        return Vector(x/number, y/number, z/number);
    }

	bool operator==(const Vector &amp; v) const
    {
		return x == v.x &amp;&amp; y == v.y &amp;&amp; z == v.z;
    }

	double dotProduct(const Vector &amp;vector) const
	{
		return x*vector.x+y*vector.y+z*vector.z;
	}

	double length() const
	{
		return std::sqrt(std::pow(x,2.)+std::pow(y,2.)+std::pow(z,2.));
	}

	Vector crossProduct(const Vector &amp;v) const
	{
		return Vector(y*v.z-z*v.y, z*v.x-x*v.z,x*v.y-y*v.x);
	}

	void rescale(double newScale)
	{
		normalize();
		*this = *this * newScale;
	}

	void normalize()
	{
		*this =  *this* 1/length();
	}

	/**
	 * Returs the angle of this vector in degrees from the X + plane from 0 to 360
	 */
	double angleInDegreeFromX() const
	{
		Vector v(1,0,0);

		return Vector::angleInBetweenDegree(*this, v);
	}

// Public values for quick access until C++ provides C# like properties :D
	double x;
	double y;
	double z;
};
</code></pre>
<p>Edit: sehe gerade das std::min in der static funzt nicht, hmmmmmmm why?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622335</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Fri, 28 Nov 2008 10:08:07 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 11:00:02 GMT]]></title><description><![CDATA[<p>Seikilos schrieb:</p>
<blockquote>
<p>Edit: sehe gerade das std::min in der static funzt nicht, hmmmmmmm why?</p>
</blockquote>
<p>Du bist doch inzwischen lange genug dabei, um zu wissen dass wir keine Kristallkugeln haben, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622354</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 28 Nov 2008 11:00:02 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 11:11:05 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>- warsum sind x, y, z public?</p>
</blockquote>
<p>lol unskilled...</p>
<p>drakon hat es eh schon gesagt, information hiding wäre hier unangebracht. Zum einen kann ein Vektor alle möglichen Werte die seine Datentypen aufnehmen können, annehmen, ohne dass er invalid wird, es gibt keine Invarianten einzuhalten. Die Respräsentation eines Vektors ist offensichtlich und eindeutig. Zum anderen ist Vektor - davon kann man glaube ich ausgehen - eine eher performance-kritische Klasse.</p>
<p>Die Vektor-Klasse hat übrigens zu viele Member. Sollte man in freie Funktionen ändern. Kapselung spielt zwar keine Rolle, aber das wird sich später noch im Code bemerkbar machen, dass etwaige Rechnungen viel schöner formatieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622357</guid><dc:creator><![CDATA[Vektorklassenfachmann]]></dc:creator><pubDate>Fri, 28 Nov 2008 11:11:05 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 11:14:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// ...

Vector a;
Vector b;

// ...

Vector c;

c = (a + b).length();
// vs.
c =vectorLength(a + b);
</code></pre>
<p>Ein populäres Beispiel...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622358</guid><dc:creator><![CDATA[Vektorklassenfachmann]]></dc:creator><pubDate>Fri, 28 Nov 2008 11:14:02 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 11:21:08 GMT]]></title><description><![CDATA[<blockquote>
<p>Die Vektor-Klasse hat übrigens zu viele Member. Sollte man in freie Funktionen ändern. Kapselung spielt zwar keine Rolle, aber das wird sich später noch im Code bemerkbar machen, dass etwaige Rechnungen viel schöner formatieren.</p>
</blockquote>
<p>Erstens das und dann kann ein Vektor auch andere Datentypen haben, also kann man da sehr schön eine template draus machen..</p>
<p>Was aber definitiv da noch rein muss ist die Initialisierungsliste im Standardkonstruktor. Ansonsten kannst du dich auf sehr viel schöne, komische Sachen freuen, wenn du dein Code mal in Release kompilierst..</p>
<p>Dann kann man da (fortgeschritten) noch ein wenig mit boost Operatoren auslagern.</p>
<p>Habe ich hier mal für jemanden aus dem Forum gemacht. (Aber für einen Point, kommt aber auf das gleiche raus bei einem vektor..)<br />
<a href="http://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=10398&amp;postdays=0&amp;postorder=asc&amp;start=0" rel="nofollow">http://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=10398&amp;postdays=0&amp;postorder=asc&amp;start=0</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622360</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 28 Nov 2008 11:21:08 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 11:27:55 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Was aber definitiv da noch rein muss ist die Initialisierungsliste im Standardkonstruktor. Ansonsten kannst du dich auf sehr viel schöne, komische Sachen freuen, wenn du dein Code mal in Release kompilierst..</p>
</blockquote>
<p>Naja, darüber kann man auch wieder ein wenig streiten. Es gibt schon eine Reihe recht guten Argumenten, die dagegen sprechen:<br />
1.) Die builtins müssen auch von Hand initialisiert werden<br />
2.) Ein Vektor hat keinen eindeutigen Default-Wert (wobei ein Nullvektor natürlich naheliegend wäre)<br />
3.) Es kostet Zeit und nützt nicht viel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622361</guid><dc:creator><![CDATA[Vektorklassenfachmann]]></dc:creator><pubDate>Fri, 28 Nov 2008 11:27:55 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 11:32:30 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>... und dann kann ein Vektor auch andere Datentypen haben, also kann man da sehr schön eine template draus machen..</p>
<p>Was aber definitiv da noch rein muss ist die Initialisierungsliste im Standardkonstruktor. Ansonsten kannst du dich auf sehr viel schöne, komische Sachen freuen, wenn du dein Code mal in Release kompilierst..</p>
<p>Dann kann man da (fortgeschritten) noch ein wenig mit boost Operatoren auslagern.</p>
</blockquote>
<p>dann nimm doch gleich den <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-154875-and-postdays-is-0-and-postorder-is-asc-and-highlight-is-basicvector-and-start-is-20.html" rel="nofollow">basic_vector&lt;&gt;</a> hier aus dem Forum. Im selben Thread sind auch noch andere Varianten zu sehen.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622365</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Fri, 28 Nov 2008 11:32:30 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 11:39:29 GMT]]></title><description><![CDATA[<p>Richtig, aber</p>
<p>Vektorklassenfachmann schrieb:</p>
<blockquote>
<p>Naja, darüber kann man auch wieder ein wenig streiten. Es gibt schon eine Reihe recht guten Argumenten, die dagegen sprechen:<br />
1.) Die builtins müssen auch von Hand initialisiert werden</p>
</blockquote>
<p>Ist ein vector ein Builtin? - Nein. Ich als User erwarte, dass es anständig 0-Initialisiert ist. (Muss nicht sein. Gut dokumentiert spricht eigl. nix dagegen das nicht zu machen.)</p>
<p>Vektorklassenfachmann schrieb:</p>
<blockquote>
<p>2.) Ein Vektor hat keinen eindeutigen Default-Wert (wobei ein Nullvektor natürlich naheliegend wäre)</p>
</blockquote>
<p>Ich würde sagen, dass die Member von einem Vektor 0-initialisiert sind, dann ist auch der Vektor 0-initialisiert..</p>
<p>Vektorklassenfachmann schrieb:</p>
<blockquote>
<p>3.) Es kostet Zeit und nützt nicht viel.</p>
</blockquote>
<p>Da stimme ich dir nicht zu. Es kostet definitiv mehr Zeit,aber das ist im Normalfall nicht das Problem. Es nützt schon, da es Fehler zuvorkommen kann, wo man sich auf 0-Initialisierung verlässt.<br />
Bei einer Matrix ist das z.B wieder eine andere Frage. Wenn z.B viele Matrizen ständig erzeugt und zerstört werde, kann es durchaus ein Flaschenhals werden. Bei einem Vektor ist das aber imo weniger der Fall. (Ich habe eine Sprite-Engine, die ständig neue Objekte erstellt, die Hauptsächlich Vektoren beinhaltet und die Erzeugung ist nich annährend im Optimierkritischen Bereich..;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622370</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 28 Nov 2008 11:39:29 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 11:42:40 GMT]]></title><description><![CDATA[<blockquote>
<p>1.) Die builtins müssen auch von Hand initialisiert werden</p>
</blockquote>
<p>EDIT:<br />
Doch, jetzt habe ich den Satz verstanden. Meine Antwort war quatsch.</p>
<blockquote>
<p>2.) Ein Vektor hat keinen eindeutigen Default-Wert (wobei ein Nullvektor natürlich naheliegend wäre)</p>
</blockquote>
<p>Zumindest sollte klar sein ob der Vector sinnige Werte enthält. Da ist alles besser als ein undefinierter Vektor (es seidenn, dieser hätte ein isValid Flag o.ä.)</p>
<blockquote>
<p>3.) Es kostet Zeit und nützt nicht viel.</p>
</blockquote>
<p>Was kostet Zeit? Das Coden oder die Konstruktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622373</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 28 Nov 2008 11:42:40 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 11:53:14 GMT]]></title><description><![CDATA[<p>Meine Vorschläge:<br />
1. Ich würde den Typ der Klasse zum Template machen<br />
2. Ich würde die dimension als Template übergeben</p>
<pre><code class="language-cpp">template&lt;class T, int DIM&gt;
class Vector
{
  T getVal(int dim);
  void setVal(int dim, T val);

private:
  T m_vec[DIM];

}
</code></pre>
<p>3. ich würde getter und setter schreiben (für spezialisierte 2d und 3d Templates).<br />
da vekoren aber ein standardkonstrukt sind, würde ich die zugriffsfunktionen kurz halten:</p>
<pre><code class="language-cpp">T x()const
{ return m_vec[0];}
T y()const
{ return m_vec[1];}
T z()const
{ return m_vec[2];}

T&amp; x()
{ return m_vec[0];}
T&amp; y()
{ return m_vec[1];}
T&amp; z()
{ return m_vec[2];}
</code></pre>
<p>Das ist zwar nicht ganz so üblich, aber das Kombiniert die Vorteile von getter/Setter mit einfacher Benutzbarkeit.<br />
man kann dann sowas schreiben.</p>
<pre><code class="language-cpp">Point&lt;float,3&gt; p;
 p.x() += 3;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1622377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622377</guid><dc:creator><![CDATA[vlad_tepesch]]></dc:creator><pubDate>Fri, 28 Nov 2008 11:53:14 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 11:53:30 GMT]]></title><description><![CDATA[<p>Da ich mit openscenegraph vertraut bin, nehme ich die Vektorklassen davon.</p>
<p>btw würde Typisierung sich nicht eher negativ auf die Performance auswirken?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622380</guid><dc:creator><![CDATA[Seikilos]]></dc:creator><pubDate>Fri, 28 Nov 2008 11:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 12:02:00 GMT]]></title><description><![CDATA[<p>Seikilos schrieb:</p>
<blockquote>
<pre><code class="language-cpp">static double angleInBetweenDegree(const Vector &amp; v1, const Vector &amp;v2)
	{
		double angle = std::acos(v1.dotProduct(v2));
		return std::min(angle, 360-angle);
	}
</code></pre>
</blockquote>
<p>eigentlich gilt doch:</p>
<p>φ = ZWischenwinkel<br />
a = der eine Vektor<br />
b = der andere Vektor<br />
° = Ersatz für das Skalarproduktzeichen<br />
cos φ = (a°b)/(|a|*|b|)<br />
sprich bei deinem &quot;angleInBetweenDegree&quot; fehlt die Division durch das Produkt der 2 Vektorlängen<br />
außerdem gibt std::acos doch rad-Angaben und keine Gradangaben (also Grad im Sinne von Degree) zurück oder?</p>
<p>:xmas1:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622384</guid><dc:creator><![CDATA[Paul Manns]]></dc:creator><pubDate>Fri, 28 Nov 2008 12:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 12:09:11 GMT]]></title><description><![CDATA[<p>drakon, wie oft benötigst du einen Nullvektor? Und wie oft kommst du in eine Situation, in der du z.B. viele Vektoren in einem std::vector &quot;vorbereitest&quot;, um sie später mit anständigen Werten zu befüllen. Die Null-Initialisierung hat dir dann nichts gebracht.</p>
<p>Für mich erscheint ein Fall, in dem man wirklich Nullvektoren benötigt, ein wenig konstruiert. Auf jeden Fall sollten die seltener sein, als jene, in denen man Vektoren erzeugt aber erst später mit anständigen Werten belegt. Das kann man zwar bestimmt oftmals auch optimieren, aber das bleibt trotzdem meine Meinung.</p>
<p>Und der Vergleich zu Matrizen... Angenommen, ich habe dreimal so viele Vektoren, als Matrizen. Dann habe ich einen äquivalenten Flaschenhals, natürlich von 3x3 Matrizen ausgehend.</p>
<p>LordJaxom, wie sinnig ist ein Nullvektor? Man definiert damit Undefiniertheit, was für einen Vektor nicht wirklich viel Sinn macht. Bei Zeigern schreibe ich oft Code, der von der Gültigkeit des Zeigers abhängt. Wie oft mache ich das für Vektoren? Wenn ich einen Vektor verwende bevor ich ihn mit korrekten Werten belegt habe, führt es in beiden Fällen zu einem Fehler. Ein Nullvektor erleichtert das Debugging unwesentlich, in der Release-Version bietet er gar keine Vorteile mehr.</p>
<p>Ein isValid-Flag sollte eine Vektorklasse selbst nicht haben, höchstens eine Klasse die Vektoren hält und für ein solches Flag auch einen guten Grund hat (ein Vektorenmanager meinetwegen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ... ich weiß im Moment keinen guten Anwendungsfall!)</p>
<p>Zeit kostet es natürlich bei der Konstruktion.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622390</guid><dc:creator><![CDATA[Vektorklassenfachmann]]></dc:creator><pubDate>Fri, 28 Nov 2008 12:09:11 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 12:12:25 GMT]]></title><description><![CDATA[<p>wth, ich sagte doch bereits das er den Vektor als eigene Klasse initialisieren sollte, dann gibts kein typedef struct und keine public Variablen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622395</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Fri, 28 Nov 2008 12:12:25 GMT</pubDate></item><item><title><![CDATA[Reply to Suche ne Vector implementierung (nicht std::vector) on Fri, 28 Nov 2008 12:30:30 GMT]]></title><description><![CDATA[<p>Zu den Boost-Operatoren: Ich finde sie an sich eine schöne Sache, aber Compile-Zeit (erhöht wegen boost/operators.hpp, wird wahrscheinlich in fast jedem Modul eingebunden) kann auch ein Kriterium bei der Code-Entwicklung sein. Die Redundanz oder Tippzeit sollte bei dieser Vector-Klasse imho letzt-rangig sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622417</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Fri, 28 Nov 2008 12:30:30 GMT</pubDate></item></channel></rss>