Ich soll ein Programm schreiben, daß einen gegebenen Polygonzug erst generalisiert (also „glättet“, so wie ich das verstanden habe…), und ihn dann verbreitert, also praktisch daraus eine Fläche erstellt.
Kennt vieleicht jemand einen Alogrithmus dazu, oder ein Programm oder eine Bibliothek, in C, C++, oder VB, mit dem so etwas geht?
Ich habe schon Programm geschrieben, daß aber bei Spezialfällen nicht funktioniert…
Hi,
Polygonzüge sind Splines erster Ordnung, die nächsten sind kubische Splines, kleine nette Pascal-Programme kann ich Dir per Mail schicken, oder guck mal in den Bereich numerische Mathematik bei http://www.math.niu.edu/~rusin/known-math/index/41-X…
wenn ich Dich richtig verstanden habe, dann sprichst Du von Bezier- oder Spline- Funktionen. Eine geglaettete Kurve geht durch jeden der Kontrollpunkte des Polygons. Dabei laesst sich der Einfluss der einzelnen Punkte bestimmen. Natuerlich gibt es diese Funktionen auch in der dritten Dimension.
Vielleicht meinst Du auch nur eine feste 2D-Kurve, die durch Transformation eine Flaeche aufspannt? Ich empfehle Dir ein Buch:
Computergrafik von Fellner, Spektrum
Dort findet sich auch Quellcode in einer Pascal-aehnlichen Art. Leider musst Du Dich auf ein wenig Mathe einlassen.
Schreib doch was Du mit dieser Flaeche machen willst. Darstellen oder Schnittpunkte berechnen? Wenn Du nicht weiterkommst, dann helfe ich Dir.
Naja, mein Chef hat ein Kunst-Programm geschrieben, das halt schöne Sachen auf dem Bldschirm ausgeben soll.
Als Erweiterung baraucht er dann wohl eine Funktion, die aus einem gegebenen Polygonzug (eine gegebenenen Menge von Punkten x(i), y(i) | i=1,6 ) entweder eine Fläche berechnet, die der Nähe der „Stützstellen“ abgrundet sein soll, oder zuerst diese Kurve abflacht und dann daraus eine Fläche erstellt…
Splines dürften wohl rausfallen, da auch Quadrate und senkrechte Lienen möglich sein sollen… was dann doch mehrere Y-Werte für einen X-Wert bedeuten sollte…
Hm, diskrete Approximation vielleicht?
Kommt erst nächte Woche in der Mathe-Vorlesung…
Naja, auf jeden Fall schon mal danke, ich werde mir das Buch mal anschauen…
So, jetzt versuche ich mich mal verständlich auszudrücken:
Also, geht im Prinzip nur darum, aus einem Polygonzug eine Fläche zu erstellen.
Das Problem ist folgendes:
Ein Polygonzug kann auch Kurven enthalten, die in meinem Programm nicht ausgefüllt werden.
Ich habe es so programmiert, das die Linie einfach ein paar Milimeter senkrecht zu ihr gespiegelt wird…
Hmm, ich moechte Dir wirklich gerne helfen, aber ich verstehe Dein Problem nicht.
Da es ein Kunstprogramm ist, nehme ich an, dass Dein Programm etwas auf dem Bildschirm ausgeben soll. Und zwar ein gefuellter Polygonzug mit abgerundeten Ecken, oder? Bezier, Spline usw. Funktionen sind Kurven. Ungefaehr so: f(t) = (x,y). Mit dem Parameter 0