Hallo, ich habe eine Liste von Punkten p1...pn[x,y]. Diese Punkte befinden sich alle innerhalb einer Fläche, die ihrerseits von vier Punkten k1...k4[x,y] definiert ist. Diese Fläche ist "irregulär" oder wie man das nennt, also unregelmäßig. Werden jetzt einer oder mehrere der Begrenzungspunkte k in unterschiedliche Richtungen verschoben, so soll sich der Ort der Punkte p innerhalb der Fläche ebenfalls verschieben. Etwa so, als ob es sich um ein bedrucktes Gummituch handelt, dass man mehr oder weniger dehnt oder staucht ... Mir ist klar, dass ich im Prinzip das delta-x und delta-y jedes der Begrenzungspunkte k in Abhängigkeit vom Abstand zu jedem p-Punkt auf diesen anteilig anwenden muss. Unklar ist mir der Gradient, also Funktion und Steilheit des Abfallens ... wann wird Null erreicht? Ein P-Punkt, der sich unmittelbar neben einem K-Punkt befindet, macht dessen Verschiebung zu beinahe 100% mit. Wie sieht es mit den weiter entfernten Punkten aus? Um wieviel wird die Wirkung verringert ... ? Danke für Tips.
Das läuft wohl auf ein Mehrkörpersystem wie bei Schwerkraftberechnungen hinaus. Für die Berechnung sehe ich zwei Wege: 1. Kompliziert über Integrale und ein dazu passendes Gleichungsystem 2. Iterativ, in dem du dir Gummibänder zwischen den Objekten vorstellst. Die Lösung wäre dann nur annähernd, weil du nicht alle Kräfte berücksichtigst. Irgendeine Definition für die wirkende 'Kraft' mußt du aber schon selbst aufstellen. Das kann dir keiner abnehmen. Bei einem Gummituch wäre dies eine nichtlineare Funktion, nämlich die der Zugfestigkeit für Gummi. Gruß - A.
Das ist doch stinknormale Vektorrechnung. Was genau möchtest du denn haben? - Zuerst virtuellen Nullpunkt berechnen, in dem die Verschiebung = 0 ist. Sollte irgendwo in der Mitte sein. - Ab hier ist alles schön linear, Wert ist abhängig von d. Abstand virtuelle Mitte zu bew. Begrenzungspunkt.
>Ein P-Punkt, der sich unmittelbar neben einem K-Punkt befindet, macht >dessen Verschiebung zu beinahe 100% mit. Gut. Dann überlege und benenne doch einmal einen Punkt auf der Fläche, der keine oder nur eine sehr geringe Verschiebung erfahren würde. Oder anders ausgedrückt: Wenn Du sagst: >Werden jetzt einer oder mehrere der Begrenzungspunkte k in unterschiedliche >Richtungen verschoben dann stellt sich die Frage in Bezug auf welchen Punkt diese Begrenzungspunkte k verschoben werden. (Es ist eigentlich egal ob der Bezugspunkt identisch mit einem der Begrenzungspunkte ist oder nicht.) >Gradient, alsoFunktion und Steilheit des Abfallens ... wann wird Null >erreicht? Ob die Verschiebung entlang einer Linie vom Bezugspunkt zum verschobenen Punkt k linear ist oder nicht (also eine Art nichtlinearer oder linearer Gradient angewendet werden muss und wenn ja welcher) hängt von der Anwendung ab. Ich bin mir nicht ganz klar ob Du das Gummituchbeispiel wirklich mit Bedacht gewählt hast. Bitte erkläre das doch mal.
In was soll es codiert werden? Wie definierst du deine Punkte, wird die Grafik Pixel für Pixel gezeichnet? Ich weiß zwar auf was du hinaus willst, aber ein bísschen mehr Info wäre gut. Wahrscheinlich definierst du irgendwo ein grafikobkjekt, dem du die Parameter der Punkte übergibst, oder? In einer Schleife kannst du nun deine Änderung in Abhängikeit der K - Punkte Änderung auf die P - Punkte aufteilen, d.h. je mehr du dich z.B. in die X - Richtung änderst, umso mehr änderst du deine Punkte in X Richtung dim g as graphics = Me.CreateGraphics With g .ScaleTransform(Pixel) ......was man halt so braucht end with dim p as pen = New .......(color, with) For i as integer = 0 to DeltaAktuell redim p (color, with jetzt von i abhängig) dim Punkte() as PointF = {NewPointF(x1 + i,y1+i),x2,y2)} p.draw.....(punkte) EndFor Weiß nicht was du machst, dies wäre VB. Leider habe ich hier keine Software, der Code geht natürlich nicht, aber vl erkennst du meine Idee dahinter. Die Intensitätist nun in der schleife gleich wie die Änderung abhängig. Bitte nicht wegen dem Code erschlagen, der ist nur aus dem Stegreif, aber mit der geeigneten Software sieht man eh, was für Propertys erwartet werden. Steilheit wäre dann wohl recht linear, denke ich.... Mfg
Wo ist die virtuelle Mitte, wenn einer oder mehrere der Begrenzungspunkte NICHT bewegt werden? Frank
Ich würde, aufgrund der wahrscheinlich stetigen Änderungen, die Mitte immer als Hälfte der Länge nehmen, damit bleiben deine Änderung bezogen auf den aktuellen Zustand der Grafik, immer gleich.
>Wo ist die virtuelle Mitte, wenn einer oder mehrere der >Begrenzungspunkte NICHT bewegt werden? Was für eine Mitte? Wenn mehrere Randpunkte fixiert sind so schneidet die Gerade, die durch den bewegten Punkt und den jweils behandelten Punkt (auf dem Tuch) läuft, eine (im einfachen Fall) der Geraden die durch die fixierten Punkte läuft. Wenn mehrere der Geraden geschnitten werden so könnte man je nach Anwendung (hast Du leider nicht geschrieben) die jeweils näher liegende nehmen (also den näher liegenden Schnittpunkt).
Das Problem ist, das ein Gummituch nicht kräftefrei und ohne das unmittelbar neben der kürzesten Verbindung zwischem fixierten und bewegtem Punkt gezogen werden können. BITTE Schreibe wozu das dienen soll, damit man das entscheiden kann.
Mist, da fehlt was. Das Problem ist, das ein Gummituch nicht kräftefrei und ohne das unmittelbar neben der kürzesten Verbindung zwischem fixierten und bewegtem Punkt, liegenden Punkte mitziehen, gezogen werden können.
Aber ehrlich: Darauf hättest Du auch kommen können wenn Du, wie angeregt, folgendes getan hättest: >Gut. Dann überlege und benenne doch einmal einen Punkt auf der Fläche, >der keine oder nur eine sehr geringe Verschiebung erfahren würde.
Das mit der Mitte ist irreführen. Da sich der Punkt der nicht fixiert ist, ja nicht zwangszweise in irgendeiner Art von Mitte des Polygons (etwa dem geometrischem Schwerpunkt) befinden muss. Was sich nicht bewegt, sind jene Randpunkt, die fixiert sind oder auf einer Geraden entlang von fixierten Punkten liegen (FALLS, es KEINE Gummifläche ist). Bei einer Gummifläche wird sich der Rand zwischen zwei fixierten Punkten in Richtung der Zugkraft hin "einbeulen", also eine in etwas parabelförmige Kurve irgendeines Grades geben.
Bei den Punktdaten handelt es sich um HPGL-Befehle für einen Laserplotter, der bereits bedruckte Folien ausschneiden soll. Es hat sich herausgestellt, dass Skalieren, Verschieben und Drehen nicht genügen, weil sich die Folien auch ungleichmäßig dehnen oder im Drucker seitlich wandern. Bei einer Länge von 2,50 Meter können schon mal Abweichungen von 3..5 mm auftreten. Deshalb drucke ich vier Passmarken mit, die ich dann am Plotter mit einer in RealBasic geschriebenen Anwendung einmesse (Laserpointer) und damit die geladenen HPGL-Daten korrigiere - das funktioniert bereits. Allerdings nutze ich z.Zt. nur die drei Marken - vorn rechts (Nullpunkt des Plotters), - vorn links (maxx und y=0) und - hinten links (maxx und maxy). Wie erwähnt reichen Skalieren, Verschieben und Drehen nicht, ich brauche eine Verzerrung zwischen allen vier Eckpunkten. Die genannten drei Ecken passen dann zwar, aber hinten rechts läufts immer ein wenig aus dem Ruder ... Die Daten liegen als absolute Koordinaten mit 1/100 mm im Integer-Format vor. Frank Das Beispiel mit dem Gummituch war nur dazu da, den Sachverhalt plastisch darzustellen, sooo extrem dehnt sich das Material mat. nicht ...
>Das Beispiel mit dem Gummituch war nur dazu da, den Sachverhalt >plastisch darzustellen, sooo extrem dehnt sich das Material mat. nicht Es ging bei der Frage nicht darum, ob die Dehnung gering ist, sondern welche Charakteristik sie hat. Eine Plotfolie wird sich da sicherlich wieder anders verhalten als ein Gummi. Es kommt auch darauf an wodurch sich da eine Veränderung ergibt bzw. ob die Änderung lokal unterschiedlich ist, weil etwa der Stift auf einer kleinen Fläche extrem viel herumrödelt und die Folie damit erwärmt oder auch mechanisch verformt. >Es hat sich herausgestellt, dass Skalieren, Verschieben und Drehen nicht >genügen, weil sich die Folien auch ungleichmäßig dehnen oder im Drucker >seitlich wandern Ungleichmäßig? Drehen hilft nicht? Das ist böse. Das wird dann darauf hinauslaufen, das Du mehr Referenzpunkte brauchst, wenn Du die Charakterstik der Dehnung nicht sonstwie bestimmen kannst. Ist die Streckung auch in horizontaler und vertikaler (oder sonstwie orthogonalen Richtungen) unterschiedlich? Ein anderer Ansatzpunkt wäre vielleicht das man an den Zeichendaten angreift. Es liegt ja nahe, das die Streckungen mit dem Zeichnen zu tun haben. Man könnte also in einem ersten Versuch mal entlang der x und y Achse die Summe der Strichlängen bilden um einen Anhaltswert für die Streckung und ihrer Verteilung über die dazu orthogonale Achse zu erhalten.
Nehmen wir z.B. mal folgendes an. DIe Zeichenung besteht nur aus Strichen entlang der X achse. Die Striche sind unterscheidlich lang. --------- | --------- | --------- | -------------- | ------ | ----------------- | ----------------- | ------ | -------------- --------- | --------- | --------- | Die vertikalen Striche rechts sollen symbolisieren wie weit sich der Folienrand verschoben hat. Eigentlich wird auch noch die Reihenfolge von senkrechten und waagerechten Strichen eine Rolle spielen und die unterschiedlichen Strichstärken. Aber als Ansatzpunkt wird das ganz gut sein.
Wo ich so darüber nachdenke, fällt mir noch eine ganze Menge mehr ein. Könnte man direkt ein Projekt daraus machen, wenn man einen findet der es bezahlt. Andererseits dürftest Du nicht der erste sein, der das Problem hat. Immerhin gibt es diese Dinger schon seit mehr 20 Jahren.
Ich denke, fürs Erste sollten vier Refernzpunkte ringsherum genügen. Es geht darum, die Kontur um bereits gedruckte Grafiken auszuschneiden, da wird also nicht viel herumgerödelt. Kein Vergleich mit dem feinteiligen Ausschneiden von Text oder komplexen Logos. Ich glaube, es muss sich auch um eine Lineare Verzerrung handeln, d.h. dass nach dem Verschieben eines oder mehrer Refernzpunkte eine Gerade durch drei Punkte auf der Fläche immer noch eine Gerade ist und keine Kurve ... Frank
> Wo ich so darüber nachdenke, fällt mir noch eine ganze Menge mehr ein. > Könnte man direkt ein Projekt daraus machen, wenn man einen findet der > es bezahlt. Andererseits dürftest Du nicht der erste sein, der das > Problem hat. Immerhin gibt es diese Dinger schon seit mehr 20 Jahren. Abgesehen von der Formel für die Verzerrung ist das Ganze schon brauchbar. Der nächste Schritt ist das automatische Finden und Einmessen der Marken mit einer Kamera statt Laserpointer. Es gibt solche Lösungen fertig, mit Kamera ab 8000,- € aufwärts. Frank
>Es geht darum, die Kontur um bereits gedruckte Grafiken auszuschneiden, da >wird also nicht viel herumgerödelt. Das habe ich auch so verstanden. Ich meinte das herumrödeln beim plotten. Wenn etwas auf einer Stelle mehr Details geplottet werden, könnte die Verzerrung an dieser Stelle stärker sein. >dass nach dem Verschieben eines oder mehrer Refernzpunkte eine Gerade >durch drei Punkte auf der Fläche immer noch eine Gerade ist und keine >Kurve ... Das könnte man ja anhand eines Beispielplots feststellen. Aber gut. Also gut: Wenn Du also annimst, dass die Streckung über die gesamte Länge linear ist, dann verstehe ich aber folgende Bemerkung aus Deinem ersten Post nicht. >Unklar ist mir der Gradient, also >Funktion und Steilheit des Abfallens Dann ist doch auch der Gradient linear, oder? Und Deine Annahme einer linearen Streckung passt auch nicht auf folgende Aussage: >Wie erwähnt reichen Skalieren, Verschieben und Drehen nicht, ich brauche >eine Verzerrung Entweder die Verzerrung ist linear, dann sollten drei Punkte und eine skalierung und Verschiebung reichen. Oder sie ist nicht-linear, dann reicht Streckung und Verschiebung nicht. Daraus folgt: Nimm eine nicht-lineare Streckung an oder korrigiere eine der oben genannten Aussagen.
>Abgesehen von der Formel für die Verzerrung ist das Ganze schon brauchbar.
Tut mir leid, aber dann verstehe ich nicht womit Du ein Problem hast.
Eine lineare Streckung solltest Du doch hinbekommen oder?
>Es gibt solche Lösungen fertig, mit Kamera ab 8000,- € aufwärts.
Naja. So ungefähr würde ich mir auch die Entwicklungskosten (zzgl.
Material und Geräte) vorstellen.
> Das habe ich auch so verstanden. Ich meinte das herumrödeln beim > plotten. Wenn etwas auf einer Stelle mehr Details geplottet werden, > könnte die Verzerrung an dieser Stelle stärker sein. Die Folien sind nicht geplottet, sie sind bedruckt. In einem Encad Novajet, Großformat-Tintenpisser. Druckmaterial ist Vinylfolie, eine Dehnung durch das Aufbringen der pigmenierten Tinte ist nicht anzunehmen. Geplottet wird nur die Kontur. Die Koordinaten der Punkte aus denen diese sich zusammensetzt, würde ich gerne anhand der Verschiebung der Referenzpunkte korrigieren. Um den Effekt mal darzustellen, folgende Grafik ... Frank
Hübsche Kontur. ;-) >Die Folien sind nicht geplottet >Geplottet wird nur die Kontur. Entschuldige, aber was denn nun? Wird die Kontur, geplottet und geschnitten oder nur geschnitten? Nach welchem Vorgang genau fällt die Verzerrung auf?
Ich nehme an, das Du das Bild mal so in Photoshop konstruiert hast, oder? Oder macht es Sinn es zu analysieren? Unten bei den Füssen sind die Abstände noch ok. Dann an der Unterkante des Kleidchens sieht es aus als wenn die Folie vertikal geschrumpft ist. Dann aber nach rechts gedehnt und am Kopf wieder vertikal gedehnt. Oder so ähnlich. Sieht merkwürdig aus.
1. Bild drucken in Großformat_drucker_ von PDF-Datei. Da ist die Umrisslinie nicht drin, nicht zu sehen. Fertigen Druck entnehmen. 2. gedrucktes Bild in Plotter spannen, Datei mit Umrisslinie laden und schneiden (komplett durchtrennen, ist hinterher wie ein "Pappkamerad") Theoretisch passen gedrucktes Bild und geplottete Umrisslinie perfekt zusammen, da aus dem gleichen Dokument erstellt. In der Realität gibt es Abweichungen, die ich rechnerisch korrigieren will, so dass die Kontur trotzdem außerhalb der Dame läuft (ist nur ein Beispiel). Frank
Auwei wrote:
> Ich nehme an, das Du das Bild mal so in Photoshop konstruiert hast,
Dieses Beispiel ist nur zur Veranschaulichung konstruiert, es ist kein
realer Fall. Es ist außerden extrem übertrieben.
Während der gedruckte Teil (Hintergund und Lady) ein wenig verzerrt
werden (auch nicht immer gleich viel und nicht immer in die selbe
Richtung), sind die HPGL-Daten unverändert. Ich möchte diese aber
rechnerisch nachkorrigieren, damit der teure Druck trotzdem sauber
ausgeschnitten und verwendet werden kann.
Frank
Aber falls die linke senkrechte und untere waagerechte Kante gerade und orthogonal sind (bleiben) dann ist das in meinen Posts von 18:22 und 18:34 ein ganz guter Ansatz. Die Streckung ist nur nicht konstant über die jeweils orthogonale Richtung sondern nimmt zu (oder ab). Diese ganze Fragerei wegen Gummi und so hatte eher damit zu tun, das z.B. waagerecht die Dehnung über die Länge zunimmt. Nicht damit, das sie senkrecht zu einer Richtung veränderlich ist. Du brauchst also eine Formel wo die Dehnung in die eine Richtung auch von der anderen abhängig ist. Zeig mal bitte was Du schon für eine Formel aufgestellt hast. Sie muss also irgendwie schon x und y berücksichtigen. Sowas in der Art x-faktor = f(y) = y * ((xmark-xmax) / ymax) y-faktor = f(x) = x * ((ymark-ymax) / xmax)
Ich habe da noch nicht viel zu zeigen, habe lediglich für jeden Gitterpunkt die Abstände zu den Eckpunkten per Pythagoras ermittelt, weil ich mit denen die delta-x und delta-y gewichtet auf die Gitterpunkte übertragen wollte. Es kann durchaus sein, dass alle vier Eckpunkte nicht dort sind, wo sie hingehören. Ok, das reduziert sich dann auf drei, wenn der eine der (reltive) Nullpunkt ist ... Die Darstellung mit nur einem "ausgebüchstem" Eckpunkt sollte das Problem leichter verständlich machen. Frank
Das Problem mit Deinem Beispielbild ist das es nicht ganz zu der Annahme passt, das die Verzerrung linear ist. Der rechte Unterarm der Dame berührt die Kontur. Ist also nach links (des Bildes oder nach unten verzerrt, oder beides) Hingegen berührt die rechte Kopfseite die Kontur. Das Bild ist also nach oben rechts verzerrt. Ich verstehe schon das Du das nun mal eben schnell konstruiert hast, aber es hilft nicht das Problem qualitativ zu beschreiben. Ich weiss schon was Verzerrungen sind, da hätte es das Bild nicht gebraucht. Das einzige was da Bild nun gebracht hat, ist zu klären wie Du den Begriff Gradient in dem Zusammenhang verstehst. Versuche mal meine Formel. Das ist schon ein ganz guter Ansatzpunkt.
>Es kann durchaus sein, dass alle vier Eckpunkte nicht dort sind, wo sie >hingehören. Gut. Es mag ja sein, das Du irgendeine Art Polygon hast. Das wäre an sich überhaupt kein Problem. Für Linearität kannst Du auch prüfen, ob die Kanten gerade bleiben. Das Problem ist das auch eine Kombination von Drehung und Streckung nicht hinhaut. Dann hast Du definitiv keine lineare Streckung und Drehung, also auch keine geraden Kanten. Du brauchst also mehr Referenzpunkte. Und dann ist noch die Frage ob das bei jedem Bild gleich ist.
> Ja, Aber WANN denn nun?
Beim Drucken oder dem nachfolgenden Handling. Evtl. beim Transport durch
den Drucker oder in Abhängigkeit von Luftfeuchte bzw. Temperatur.
Das gedruckte Bild auf der Folie ist nicht mehr perfekt rechteckig. Auf
1..2 Meter um die 3..5 mm, also ca. 2 Promille. Das ist ansich nicht
viel und fällt normalerweise miemandem auf. Aber beim Konturenscheiden,
dann fällt es eben richtig toll auf ...
Frank
Hm. Ist das nichts anderes als die Erweiterung der Kalibrierungsroutine eines Touchpanels durch eine im Raum nach hinten gekippte Ebene? Du kannst dir wohl die Source zu der Nintendo WII-Demo eines Clipboards an einer weißen Wand mit der eingebauten Infrarot-Kamera und einem Laserpointer runterladen. Der Typ sollte nach deiner Beschreibung die Formeln für eine geneigte Projektionsfläche im Programm stehen haben. Hier das Projekt "Low-Cost Multi-point Interactive Whiteboards Using the Wiimote" ist es: http://www.cs.cmu.edu/~johnny/projects/wii/ Es gibt davon auch Videos, wo man es sehen kann. Gruß - A.
@ Abdul >Ist das nichts anderes als die Erweiterung der Kalibrierungsroutine >eines Touchpanels durch eine im Raum nach hinten gekippte Ebene? Das wäre ja nur eine anders dargestellte lineare Dreh-Streckung. Aber, die Abbildung ist nicht linear verzerrt.
Weiter oben schrieb er, daß er nur drei Punkte benutzt. Touchpanels werden über 4 Punkte kalibriert. Das sollte schonmal besser sein. So nebenbei: Folien werden auf Rollen produziert. Also wird die X- und die Y-Streckung recht unterschiedlich sein. So werden z.B. billige Polarisatorfolien hergestellt... Gruß - A.
Ich glaube, ich habe ein (überraschend einfaches) mathematisches Modell gefunden, die Umsetzung ist nur noch Fleißarbeit. Ich spanne quasi zwischen den gegenüberliegenden Seiten Netzlinien auf, deren Anzahl auch nach einer Transformation konstant bleibt. Da sich bei einer Transformation die Länge der Seiten ändert, ändern sich auch die Abstände zwischen den Netzlinien ... diese sind meine Koordinaten ... feddich! Frank
Das ist dann was Abdul meinte. Ich lag übrigens falsch als ich das für eine schon besprochene Sache hielt. Dies ist nämlich nicht enfach nur eine Dreh-Streckung. (Oder jedenfalls eine nicht-lineare). Also: Viel Erfolg.
Nachdem die Verformung des "Gummituchs" ein mechanisches Problem ist, fällt mir "Finite Elemente" als Methode ein. Ich habe zwar keine Ahnung von Mechanik, vermute aber. dass man mit den Spannungsvektoren an den Punkten deren Verschiebung berechnen kann. -Michael http://de.wikipedia.org/wiki/Finite-Elemente-Methode
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.