<?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[Designfrage Camera Klasse]]></title><description><![CDATA[<p>Hi,</p>
<p>hab mal ne kleine Designfrage zu meiner Camera Klasse für eine 3D-Anwendung. Ich habe 2 Typen von Kameras: Eine frei bewegliche und eine, die immer auf ein Ziel fixiert ist. Eigentlich wollte ich es mit einer Klasse implementieren, der man im Ctor per enum Wert die Art der Kamera übergibt. In den Methoden wird dann wo nötig mit nem if() auf den jeweiligen Typ eingegangne. Also in etwa so:<br />
Camera freeCam(0, 2, 3, FREE_CAM);<br />
oder<br />
Camera targetCam(0, 0, 1, TARGET_CAM);</p>
<p>und z.B.:<br />
void Camera::StrafeLeft(float translation) {<br />
if(cameraType == FREE_CAM)<br />
// verschiebe nach links<br />
else<br />
// mache krasse Kreisbewegung nach links und bleibe aufs Ziel ausgerichtet<br />
}</p>
<p>Meine Frage: Ist das gut so oder sind die paar if() in einigen Methoden ein Indiz dafür, dass ich eher ableiten sollte? Aber ich wüsste dann garnicht genau, welche Klasse von welcher erben sollte.<br />
Hm, wie würdet ihr das designen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192306/designfrage-camera-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 10:14:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192306.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Sep 2007 17:52:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Designfrage Camera Klasse on Wed, 12 Sep 2007 17:52:19 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>hab mal ne kleine Designfrage zu meiner Camera Klasse für eine 3D-Anwendung. Ich habe 2 Typen von Kameras: Eine frei bewegliche und eine, die immer auf ein Ziel fixiert ist. Eigentlich wollte ich es mit einer Klasse implementieren, der man im Ctor per enum Wert die Art der Kamera übergibt. In den Methoden wird dann wo nötig mit nem if() auf den jeweiligen Typ eingegangne. Also in etwa so:<br />
Camera freeCam(0, 2, 3, FREE_CAM);<br />
oder<br />
Camera targetCam(0, 0, 1, TARGET_CAM);</p>
<p>und z.B.:<br />
void Camera::StrafeLeft(float translation) {<br />
if(cameraType == FREE_CAM)<br />
// verschiebe nach links<br />
else<br />
// mache krasse Kreisbewegung nach links und bleibe aufs Ziel ausgerichtet<br />
}</p>
<p>Meine Frage: Ist das gut so oder sind die paar if() in einigen Methoden ein Indiz dafür, dass ich eher ableiten sollte? Aber ich wüsste dann garnicht genau, welche Klasse von welcher erben sollte.<br />
Hm, wie würdet ihr das designen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364190</guid><dc:creator><![CDATA[JamesCameraon]]></dc:creator><pubDate>Wed, 12 Sep 2007 17:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage Camera Klasse on Wed, 12 Sep 2007 18:05:34 GMT]]></title><description><![CDATA[<p>ich würde es so machen, dass eine camera ein T*target hat. Wenn target != 0 ist, dann wird die camera nach erfolgter bewegung wieder neu auf target ausgerichtet:</p>
<pre><code class="language-cpp">void Camera::StrafeLeft(float translation) { 
    // verschiebe nach links 
    angleToTarget();
}

void camera::angleToTarget() {
    if (target)
        // ausrichten
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1364199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364199</guid><dc:creator><![CDATA[piXelshooter]]></dc:creator><pubDate>Wed, 12 Sep 2007 18:05:34 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage Camera Klasse on Wed, 12 Sep 2007 18:07:58 GMT]]></title><description><![CDATA[<p>Also zwei verschiedene Klassen würde ich an der Stelle nicht verwenden, da du, falls du den Kameratyp wechseln möchtest, immer deine alte Kamera zerstören und eine neue anlegen müsstest...<br />
Ich aber die Kameratypen innerhalb der Klasse nicht unterscheiden, sondern nur eine Kamera implementieren, die entweder ein Ziel haben kann, oder nicht. Je nach dem würde ich dann den Blickvektor der Kamera festlegen und mich bei allen Bewegungsoperationen auf diesen beziehen.</p>
<p>Grüße,</p>
<p>Martin</p>
<p>edit: Ja, so wie pixelshooter hatte ich mir das auch ungefähr gedacht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364201</guid><dc:creator><![CDATA[JimmydaMage]]></dc:creator><pubDate>Wed, 12 Sep 2007 18:07:58 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage Camera Klasse on Wed, 12 Sep 2007 18:43:52 GMT]]></title><description><![CDATA[<p>Hm.<br />
Ich würde das über einen Controller regeln... also über eine externe Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364230</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 12 Sep 2007 18:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage Camera Klasse on Wed, 12 Sep 2007 18:51:06 GMT]]></title><description><![CDATA[<p>Hmm ... kommt drauf an ... wenn du noch nach außen hin flexibel für Erweiterungen (neue Kameras) sein willst, empfiehlt es sich, einfach eine Basisklasse ICamera anzulegen. Wo du die Kamera dann brauchst, legst du einen einen Pointer auf diesen Basistypen an. Für jede spezielle Kamera einfach eine neue Klasse von ICamera ableiten. (Polymorphie) ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364234</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 12 Sep 2007 18:51:06 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage Camera Klasse on Wed, 12 Sep 2007 19:17:45 GMT]]></title><description><![CDATA[<p>die meisten 3D Design programme machen es so:<br />
Es gibt Camera:Objekt. Ein Objekt hat ein Achsensystem, kann verschoben werden etc. eine camera kann halt außerdem filmen.</p>
<p>Dann gibts ausrichtugstags. Die könnte man so realisieren, dass, sobald sich etwas an der szenerie ändert (müsste die szene von den objekten gemeldet bekommen), ruft die szene die tags auf (szene muss alle tags kennen), die ihnen zugeordneten objekte zu verändern.<br />
Zum beispiel kann ein align tag dann nach einer manipulation wieder die manipulatoren benutzen, um ein objekt wieder auszurichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364247</guid><dc:creator><![CDATA[piXelshooter]]></dc:creator><pubDate>Wed, 12 Sep 2007 19:17:45 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage Camera Klasse on Wed, 12 Sep 2007 19:19:49 GMT]]></title><description><![CDATA[<p>Eventuell das State Pattern anwenden? Nur so eine Idee, ich hab jetzt auch keine Lust das auszuführen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364249</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 12 Sep 2007 19:19:49 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage Camera Klasse on Wed, 12 Sep 2007 19:22:51 GMT]]></title><description><![CDATA[<p>Hmm ganz normalerweise ist eine Kamera auch nur ein Node in einem SceneManager ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364250</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 12 Sep 2007 19:22:51 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage Camera Klasse on Wed, 12 Sep 2007 19:44:05 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>Hmm ganz normalerweise ist eine Kamera auch nur ein Node in einem SceneManager ^^</p>
</blockquote>
<p>Was hat das mit der Frage zu tun?</p>
<p>State Pattern.. wtf?! Nene, ich mach das jetzt ganz simpel und unterscheide mit einem enum die 2 Kameratypen^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364264</guid><dc:creator><![CDATA[JamesCameraon]]></dc:creator><pubDate>Wed, 12 Sep 2007 19:44:05 GMT</pubDate></item><item><title><![CDATA[Reply to Designfrage Camera Klasse on Wed, 12 Sep 2007 19:54:33 GMT]]></title><description><![CDATA[<p>Hab mir gerade mal das State Pattern auf Wiki angeschaut (<a href="http://en.wikipedia.org/wiki/State_pattern" rel="nofollow">http://en.wikipedia.org/wiki/State_pattern</a>) und hätte dazu jetzt kurze einige Fragen:</p>
<p>Die Klasse DrawingController hat Methoden, die den konkreten Zustand setzen (selectPenTool() etc.). Aber das ist doch schlecht, da beim Schreiben der Klasse <em>Controller bereits alle Subklassen von AbstractTool bekannt sein müssen.<br />
Umgehen kann ich das ja nur, wenn ich DrawingController eine Methode wie setAbstractTool(AbstractTool</em> tool); gebe, oder?</p>
<p>Wieso benutzt DrawingController einen std::auto_ptr? Da kann ich ja auch einfach einen normalen Pointer benutzen und bei jedem setAbstractTool ein delete machen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364269</guid><dc:creator><![CDATA[JamesCameraon]]></dc:creator><pubDate>Wed, 12 Sep 2007 19:54:33 GMT</pubDate></item></channel></rss>