Faby Geschrieben 12. August 2011 Geschrieben 12. August 2011 Hallo! Ich möchte in C# eine Kugel anhand von 4 Punkten (bzw. 5, da diese Anzahl fest vorgegeben ist) berechnen. Gegeben sind, wie bereits erwähnt, 4 Punkte mit jeweils X,Y und Z Koordinate. Nun habe ich versucht dieses Vorgehen nachzubilden: Kugel durch 4 Punkte konstruieren (siehe "Beispiel") Bisher verwendete ich die Matrix3D Klasse (System.Windows.Media.Media3D) Matrix3D Structure (System.Windows.Media.Media3D) um ein Matrix-Objekt zu erstellen und anschließend mit den Koordinaten-Werten zu befüllen. Ich dachte mir, anhand einer Methode die Unbekannten A,B,C,D zu bestimmen und durch eine Division durch 2 für B,C,D den Mittelpunkt der Kugel bestimmen zu können. Nun weiss ich nicht, ob ich hierfür die korrekte Klasse verwende bzw. ob es überhaupt eine passende Klasse für mein Vorhaben gibt. Falls mir die Klasse Matrix3D doch weiterhilft: mit welcher Methode ist es möglich, die Unbekannten zu bestimmen? Zur Info: die Determinanten ( -(x2 + y2 + z2) ) der Koeffizientenmatrix bestimme ich mit 4 (bzw. 5) double-Variablen. Diese stehen also auch zur Verfügung, falls eine Methode diese benötigt (und nicht selbst errechnet). Ich danke bereits im Voraus! Gruß Faby Zitieren
flashpixx Geschrieben 12. August 2011 Geschrieben 12. August 2011 Stell die Matrix auf und betrachte sie als lineares Gleichungssystem (LGS) und löse es. Hierfür sollte man aus der Schule Gaußsches Eliminationsverfahren kennen, was man aber in der Realität nicht verwendet, man verwendet ein numerisches Verfahren wie Gaußsches Eliminationsverfahren Für die Lösung gibt es spezielle Bibliotheken, die sich "Solver" nennen mit denen man solche LGS numerisch lösen kann. Eine Bibliothek, die das bewerkstelligt wäre LAPACK Zitieren
Faby Geschrieben 12. August 2011 Autor Geschrieben 12. August 2011 Hallo flashpixx, danke.LAPACK scheint unter der BSD-Lizenz zu stehen. Ist das Kompilieren einer solchen Library in eine .dll möglich und anschließend auch im .NET Framework verwendbar? Kennst du hierfür evtl. ein Tutorial für die Kompilierung? Finde gerade nur Tutorials für C, C++ und Haskell. Zitieren
Faby Geschrieben 12. August 2011 Autor Geschrieben 12. August 2011 Got it. LAPACK for Windows Ich melde mich nach der Implementierung sicherlich nochmals. Daher Thread bitte nicht schließen. Zitieren
flashpixx Geschrieben 12. August 2011 Geschrieben 12. August 2011 LAPack habe ich selbst unter Cygwin laufen. Inwieweit man das in C# dann einbinden kann, da muss ich passen, da ich mit C# nicht arbeite, sondern mit C++. Als Alternativen wäre Math Kernel Library from Intel - Intel® Software Network denkbar. Du benötigst lediglich einen LGS Solver, evtl wird Dir so etwas auch durch andere Bibliotheken zur Verfügung gestellt Zitieren
Faby Geschrieben 12. August 2011 Autor Geschrieben 12. August 2011 LAPack habe ich selbst unter Cygwin laufen. Inwieweit man das in C# dann einbinden kann, da muss ich passen, da ich mit C# nicht arbeite, sondern mit C++. Als Alternativen wäre Math Kernel Library from Intel - Intel® Software Network denkbar. Du benötigst lediglich einen LGS Solver, evtl wird Dir so etwas auch durch andere Bibliotheken zur Verfügung gestellt Ich bevorzuge hier lieber Freeware bzw. bereits enthaltene Librarys aus dem .NET Framework, da das Projekt für ein Unternehmen entwickelt wird. Evtl. kann ein C#-Kenner noch einen Tipp aussprechen? Danke bisher flashpixx. Zitieren
Faby Geschrieben 12. August 2011 Autor Geschrieben 12. August 2011 So. Ich verwende nun DotNumerics (DotNumerics). Kennt sich hier jemand damit aus und kann mir speziell in meinem Fall weiterhelfen? Zitieren
lilith2k3 Geschrieben 12. August 2011 Geschrieben 12. August 2011 Ich bevorzuge hier lieber Freeware bzw. bereits enthaltene Librarys aus dem .NET Framework, da das Projekt für ein Unternehmen entwickelt wird. Evtl. kann ein C#-Kenner noch einen Tipp aussprechen? Danke bisher flashpixx. BSD-Lizenz heißt nicht, dass es für den kommerziellen Gebrauch nicht geeignet ist, im Gegenteil. BSD sorgt dafür, dass das ursprüngliche Projekt Open bleibt. Was danach kommt, ist im Prinzip egal. Ich empfinde BSD als eine freiere Lizenz - hat aber den Nachteil, dass eventuelle Weiterentwicklungen eben nicht mehr offengelegt werden müssen. Also kein Copyleft. Zitieren
Faby Geschrieben 12. August 2011 Autor Geschrieben 12. August 2011 BSD-Lizenz heißt nicht, dass es für den kommerziellen Gebrauch nicht geeignet ist, im Gegenteil. BSD sorgt dafür, dass das ursprüngliche Projekt Open bleibt. Was danach kommt, ist im Prinzip egal. Ich empfinde BSD als eine freiere Lizenz - hat aber den Nachteil, dass eventuelle Weiterentwicklungen eben nicht mehr offengelegt werden müssen. Also kein Copyleft. Mit Ich bevorzuge hier lieber Freeware bzw. bereits enthaltene Librarys aus dem .NET Framework, da das Projekt für ein Unternehmen entwickelt wird. habe ich mich auf Math Kernel Library from Intel - Intel® Software Network bezogen. Was die BSD-Lizenz bewirkt, weiß ich Zitieren
Bubble Geschrieben 13. August 2011 Geschrieben 13. August 2011 Nun weiss ich nicht, ob ich hierfür die korrekte Klasse verwende bzw. ob es überhaupt eine passende Klasse für mein Vorhaben gibt. Die Klasse beschreibt zwar auch eine 4x4 Matrix, bietet aber nicht das, was Du sucht (das wäre ein Solver). Es gibt dafür natürlich fertige Implementierungen, selbst machen ist für nicht zeitkritische oder numerisch ungünstige Fälle aber auch nicht allzu schwer. Zitieren
flashpixx Geschrieben 13. August 2011 Geschrieben 13. August 2011 Die Klasse beschreibt zwar auch eine 4x4 Matrix, bietet aber nicht das, was Du sucht (das wäre ein Solver). Das hatte ich in meinem ersten Posting schon erwähnt! Es gibt dafür natürlich fertige Implementierungen, selbst machen ist für nicht zeitkritische oder numerisch ungünstige Fälle aber auch nicht allzu schwer. Auch das hatte ich erwähnt und darauf hingewiesen, dass man dieses mit Hilfe einer LR / LU Zerlung durchführen kann! Zitieren
Bubble Geschrieben 14. August 2011 Geschrieben 14. August 2011 Das hatte ich in meinem ersten Posting schon erwähnt! Auch das hatte ich erwähnt Und wo ist dabei jetzt das Problem? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.