Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Eine kurve malen und sie zerlegen
Himo
myCSharp.de - Member



Dabei seit:
Beiträge: 58
Herkunft: Kurdistan

Themenstarter:

Eine kurve malen und sie zerlegen

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Himo am .
Attachments
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Himo,

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

herbivore
private Nachricht | Beiträge des Benutzers
Himo
myCSharp.de - Member



Dabei seit:
Beiträge: 58
Herkunft: Kurdistan

Themenstarter:

beantworten | zitieren | melden

Zitat
Original von herbivore
Hallo Himo,

und die Beschreibung in http://de.wikipedia.org/wiki/B%C3%A9zierkurve 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..
:-D
Danke trotzdem und....thema ist noch offen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Himo am .
Attachments
private Nachricht | Beiträge des Benutzers
janismac
myCSharp.de - Member



Dabei seit:
Beiträge: 183

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
progger
myCSharp.de - Member

Avatar #avatar-2094.gif


Dabei seit:
Beiträge: 1.271
Herkunft: Nähe von München

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Himo
myCSharp.de - Member



Dabei seit:
Beiträge: 58
Herkunft: Kurdistan

Themenstarter:

beantworten | zitieren | melden

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
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Himo am .
private Nachricht | Beiträge des Benutzers
Mystique
myCSharp.de - Member

Avatar #avatar-1933.png


Dabei seit:
Beiträge: 148
Herkunft: Stuttgart

beantworten | zitieren | melden

ähm.. satz von pythagoras?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Mystique am .
I cna tpye 300 wrods pre mnuite!
private Nachricht | Beiträge des Benutzers
onlinegurke
myCSharp.de - Member



Dabei seit:
Beiträge: 779
Herkunft: Dresdner in Karlsruhe

beantworten | zitieren | melden

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...
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von onlinegurke am .
private Nachricht | Beiträge des Benutzers
Himo
myCSharp.de - Member



Dabei seit:
Beiträge: 58
Herkunft: Kurdistan

Themenstarter:

beantworten | zitieren | melden

Thanks jungs...
anscheinend bleibt mir nichts übrich als zufuss Programmieren...Habe auf eine Bibliothek gehofft für die Abstände..aber schade...
private Nachricht | Beiträge des Benutzers