Laden...

Eine kurve malen und sie zerlegen

Erstellt von Himo vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.592 Views
H
Himo Themenstarter:in
58 Beiträge seit 2005
vor 16 Jahren
Eine kurve malen und sie zerlegen

Hallo,
Ich möchte eine Kurven (egal ob linie, Bezier, Kreis..etc.) der Klasse Graphics malen und diese Kurve in gleich grösse Teile zerlegen, z.B in 10 stuck, damit ich dann bestimmte Objekte an diese 'Schnittpunkte zu verteilen. Weiss jeman wie das geht?
Wenn ich alle Punkte mit den X-Y-Koordinaten eines Graves in einer Liste hätte wäre das was ich brauche. Besonders interessant für mich ist eine Bezierkurve, ich kann aber von der Bezierkurve nur 4 Grundpunkte bekommen aber nicht alle echte Punkte vom Graf.
siehe Anlage.

danke

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Himo,

und die Beschreibung in http://de.wikipedia.org/wiki/B%C3%A9zierkurve nützt dabei nicht?

herbivore

H
Himo Themenstarter:in
58 Beiträge seit 2005
vor 16 Jahren

Original von herbivore
Hallo Himo,

und die Beschreibung in
>
nützt dabei nicht?

herbivore

Hi Herbivore;
Das habe ich auch unter der lupe genommen und hatte meine eigene Bezierkurve zufuss programmiert, wenn du meine zweite anlage schuast dann siehst du dass die Kurventeile nicht gleich lang sind, das liegt daran dass die Bezier kurve nach zeit skiziert wird und je unsymmetrischer die Zwei-Hilfepunkte auf der ebene liegen desto unterschidliescher sind die Teile der Kurve..
😁
Danke trotzdem und....thema ist noch offen.

Gelöschter Account
vor 16 Jahren

eine gute lösung fällt mir dazu auch nicht ein

meine lösung ist rechen- und zeitaufwändig (denk ich mal)

du könntest in eine bitmap zeichnen und mit GetPixel(int,int) die ganze bitmap durchlaufen und wo ein schwarzer pixel ist eben einen Point merken
dass teilt das ganze dann nicht in 10 abschnitte sodern in die anzahl der pixel die die linie ausmachen

MfG janismac

1.271 Beiträge seit 2005
vor 16 Jahren

Hallo janismac,

Ich könnte mir vorstellen, dass es mit einem GraphicsPath und der GraphicsPath.Flatten-Methode funktioniert. Für Infos dazu schau am besten in die :rtfm: MSDN-/SDK-Doku.
Getestet hab ich das aber noch nicht.
Viel Erfolg!

Gruß,
Thomas

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

H
Himo Themenstarter:in
58 Beiträge seit 2005
vor 16 Jahren

Mit dem GraphicsPath.Flatten-Methode brauch ich jetzt keine eigene Algoritmus zum Rechnen der Bezierkurve, aber die Abstände werden trotzdem nach Zeit berechnet und bleiben deshalb unterschidlisch von der Länge her.
Ich habe jetzt aus meiner Bezierkurve 33 Linien (zusammen gebunden sehen die aus wie eine Bezierkurve). Ich werde versuchen die gesamt Länge der Linien zu Rechnen und so vielleicht die Punkte gleichmässiger neu verteilen.
Weiss jemand auf die schnelle wie ich die Länge einer Linie rechne.
Grüsse

148 Beiträge seit 2006
vor 16 Jahren

ähm.. satz von pythagoras? 🤔

I cna tpye 300 wrods pre mnuite!

O
778 Beiträge seit 2007
vor 16 Jahren

Was heißt Linie? Wenn es eine Gerade ist, dann stimmt die Aussage von Mystique, ansonsten ist die Bogenlänge einer Funktion f(x) gleich dem Integral von x1 bis x2 (Anfangs und Endpunkt) über Wurzel (1+(f'(x))²)

//Edit: Letzteres ist natürlich eigentlich auch nur ein Pythagoras, insofern hatte Mystique da auch Recht...

H
Himo Themenstarter:in
58 Beiträge seit 2005
vor 16 Jahren

Thanks jungs...
anscheinend bleibt mir nichts übrich als zufuss Programmieren...Habe auf eine Bibliothek gehofft für die Abstände..aber schade...