Suchergebnisse

Suchergebnisse 1-10 von insgesamt 10.

  • Benutzer-Avatarbild

    Hi das System ist eigentlich losgelöst von System.Drawing. Insofern wäre es für eine Schicht sinnvoll, Point, etc. manuell nochmal zu definieren und dann halt [Vector] + [Vector] = [Vector] und [Point] + [Vector] = [Point]. Modelliere btw. die Matrix-Klasse doch einfach als Interface IMatrix (und dann Implementierung z.B. per Extension). Ansonsten siehts übrigens ganz nice aus. Gruß ~blaze~

  • Benutzer-Avatarbild

    Jep, aber du könntest Structures verwenden statt Matrizen. VB.NET-Quellcode (10 Zeilen) So z.B. könnte das aussehen. Dann halt konkrete Typen implementieren für IMatrix(Of Single) und 4x4-Matrix. Ist halt etwas overengineered, aber dann kannst du über Extensions eben die konkreten Funktionen wie Invert, etc. implementieren. Vector wäre dann nat. analog. Structures sind bei sowas halt praktischer als Klassen. Die Implementierung einer Matrix-Klasse mit dynamischer Anzahl von Rows und Columns wär'…

  • Benutzer-Avatarbild

    Ich hatte es so gedacht: VB.NET-Quellcode (93 Zeilen) Gruß ~blaze~

  • Benutzer-Avatarbild

    Im Prinzip genügt eine Matrix-Klasse sicher, aber wenn man Matrix2x2 oder über homogene Koordinaten eine 3x3-Matrix, etc. z.B. für Rendering verwendet, sind halt doch relativ grobe Unterschiede zwischen Klassen und Strukturen zu erkennen. Insbesondere müssen die dann nicht geklont werden, wenn man auf den konkreten Typ ausweicht. Allerdings kann man über das Interface eben auch nicht-statische Typen zur Verfügung stellen. Aso, ganz vergessen: du kannst auch für die restlichen Typen einfach IConv…

  • Benutzer-Avatarbild

    Hatte bei beiden btw. das Extension-Attribut vergessen. Bei meinem Code ist's so, dass IMatrix(Of T) von IMatrix erbt, welches eben den ElementType zurückgibt. Für bekannte Matrixtypen (IMatrix(Of Single), IMatrix(Of Double)) kann die Implementierung halt konkretisiert werden. Ansonsten wird überprüft, ob der ElementType IConvertable implementiert. Wenn das der Fall ist, können Elemente IConvertible zugewiesen werden - daher die Abfrage auf IsAssignable (die ganzen primitiven Datentypen implemen…

  • Benutzer-Avatarbild

    Das wäre dann eine IMatrix(Of Double), die die Rows und Columns im Konstruktor übergeben bekommt und nur die Properties nach außen reicht. Diese Matrix ist dann aber eine Klasse und keine Structure. Das gleiche Phänomen tritt übrigens bei einigen Leuten auf, die mit mir schon mal ein Projekt durchgeführt haben... Gruß ~blaze~

  • Benutzer-Avatarbild

    Ich lös' das Problem dann meist so, dass zwei Klassen noch mal Methoden anbieten, die das nicht auf abstrakter Ebene lösen, sondern auf diskreter, also z.B. für Matrix2x2 eine Überladung mit Function Multiply(Matrix2x2, Matrix2x) As Matrix2x2 und bei der Extension/statischen Methode in einer zusätzlichen Klasse eben eine Überladung auf IMatrix, IMatrix o.ä. Gruß ~blaze~

  • Benutzer-Avatarbild

    Würd' an deiner Stelle eh eine Kopie davon anfertigen, bevor du groß Änderungen vornimmst. Meist sind' solche Architektureingriffe dann doch etwas größer. Interfaces sind ja von der Logik her nichts anderes, als abstrakte Klassen, wobei eine Klasse eben mehrere davon implementieren kann. Gruß ~blaze~

  • Benutzer-Avatarbild

    War eh nur 'n Vorschlag. War ursprünglich bei 'nem Mathparser so gedacht. Der hat jetzt allerdings 'ne komplett neue Architektur erhalten. Gruß ~blaze~

  • Benutzer-Avatarbild

    @Eistee: kannst dir ja mal das hier anschauen: MathLib Die Herleitung der Ableitungsregeln ist 'n paar Postings vorher. Gruß ~blaze~