Frage

Ich könnte brauchen eine B-Spline ( http://en.wikipedia.org zu visualisieren / wiki / B-Spline ) in .NET. Ich weiß nicht wo ich anfangen soll. Gibt es eine einfache Möglichkeit, oder Bibliothek, es zu tun? Ich würde es vorziehen, es in Silverlight zu tun, aber WPF und Win Forms ist auch in Ordnung. Ich stelle mir die Software als ein Koordinatensystem mit einigen Kontrollpunkten, die Sie hinzufügen, löschen oder Verursachung bewegen die Spline neu gestrichen werden. Beachten Sie, dass ich den mathematischen Hintergrund fehlt. Ich fand einige Methoden in GDI +, die für die Zeichnung Splines bestimmt scheinen, aber ich bin nicht sicher, ob diese B-Splines.

Jede Beratung wäre sehr geschätzt. Bibliotheken, Code, Links zu den Führungen oder allgemeine Anregungen sind willkommen.

War es hilfreich?

Lösung

Ich habe für einige wissenschaftliche Code eine ganze Weile vor ein sehr schnelles Programm geschrieben, das Splines verwendet. Insbesondere sind diese Splines NURBS (nicht-uniforme rationale Basis Splines). Dies ist die generalisierte Form des Splines. Alle anderen Splines sind Spezialfälle dieser Art. Der Knotenvektor wird verwendet, um die Spline, und die rekursive Cox de Boor-Algorithmus verwendet wird, zu erzeugen, um den Wert eines Punktes zu berechnen. Der C # -Code ist sehr schlecht, es war etwas, was ich warf zusammen schnell ein Problem zu lösen, und bevor ich war ein mehr poliert Entwickler. Wenn Sie Cox de Boor google, finden Sie viele Seiten finden, die die theoretische Untermauerung von Splines diskutieren. Hüten Sie sich vor, die meisten von ihnen irgendeine Art von Fehler haben (einige von ihnen in ihrer Diskussion über den Knotenvektor)

http://stochfit.svn.sourceforge.net/viewvc/ stochfit / trunk / NURBs /

Ich habe nicht alle mathematischen Einzelheiten erinnern, aber versuchen, zu helfen, wenn ich die Antwort wissen. Viel Glück, das war sehr schwierig, Wissen auf meinem Teil zu erwerben!

EDIT - Ich glaube, dass Sie ein B-Spline von diesen Methoden, wenn man das Gewicht für einen gegebenen Punkt auf 1 gesetzt

.

Andere Tipps

Eine B-Spline ist eine Lösung für ein Problem, vielleicht sollten Sie Ihr Problem beschreiben und fragen, was die beste Lösung ist. GDI + enthält DrawBezier und DrawCurve für Zeichnung Splines, die ein guter Punkt, um zu starten könnten. So etwas wie folgt aus:

Point p1 = new Point(10, 10);
Point p2 = new Point(50, 10);
Point p3 = new Point(10, 50);
Point p4 = new Point(50, 50);
e.Graphics.DrawBezier(Pens.Blue, p1, p2, p3, p4);

P2 und P3 sind nicht Teil der Kurve, sondern ‚Kontrollpunkt‘, bewegen sie den Effekt zu sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top