Zum Inhalt springen

Kugel durch 4 Punkte in C# konstruieren(LGS/Matrix): welche Klasse/Methode?


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben
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.

Geschrieben
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.

Geschrieben
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 ;)

Geschrieben

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.

Geschrieben
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!

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...