Design-Frage
-
Hallo - ich möchte ne Funktion schreiben, die berechnet ob eine Ebene eine Gerade schneidet - nun gibt es da ja 3 Ergebnisse:
Schneiden sich nicht (sind parallel, aber verschoben)
Schneiden sich in einem Punkt (sind nicht parallel)
Schneiden sich in einer Gerade (Gerade ist in er Ebene enthalten => sind parallel und nicht verschoben)Die Rechnung sollte nicht so das Problem sein - aber wie bekomm ich ne Funktion hin, die genau das kann, einfach anzuwenden ist und so ^^
Meine Idee wäre ein pair gewesen - mit nem enum (NOTHING / PUNKT / GERADE) und nem Pointer, der je nach enum gecastet wird (oder eben null ist ^^).
Ist die durchführbar und vor allem: Ist die sauber? (Ich komm ja dadurch dann auch in die missliche Situation nen delete anwenden zu müssen ohne das new selbst aufgerufen zu haben (wird halt in der Funktion gemacht -.-) Deshalb: Hat jemand ne bessere Idee?bb
-
Ich fände das so gut:
namespace intersection { enum result { contains, intersects, parallel }; } intersection::result intersect( const plane& p, const line& l, point& result );Dann kann man halt so mit dem Ergebnis umgehen:
point r; if( intersect( p, l, r ) == intersection::intersects ) { // Mach was mit r }
-
Hmm... gut - ist zwar sicherlich nicht optimal, falls man die Gerade immer braucht, weil man sie erst noch basteln muss, aber ansonsten sicherlich nicht die schlechteste Lösung - danke ^^
bb
-
Hrmmm, ich kann dir gerade nicht folgen. Welche Gerade meinst du?
-
Ach ja - die, die man eh schon hat t_T
Sry, ist noch ziemlich früh und gestern war ja bekanntlich Freitag - reicht das als Ausrede?

bb
-
Wem sagst du das? *Kaffeeschlürf*