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
Hallo Himo,
und die Beschreibung in http://de.wikipedia.org/wiki/B%C3%A9zierkurve nützt dabei nicht?
herbivore
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.
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
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.
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
ähm.. satz von pythagoras? 🤔
I cna tpye 300 wrods pre mnuite!
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...
Thanks jungs...
anscheinend bleibt mir nichts übrich als zufuss Programmieren...Habe auf eine Bibliothek gehofft für die Abstände..aber schade...