Laden...

Forenbeiträge von Gimmick Ingesamt 154 Beiträge

02.12.2015 - 12:44 Uhr

Erst mal danke für die Antwort ^^.

Okay, das mit den Schnittpunkten bekomm ich denk ich hin.

In dem Fall muss ich aber noch beachten, dass sich der y-Achsenabschnitt n nicht linear bewegt. Ich münze ja quasi die von einem Betrachter gesehene Bewegung auf die Gerade um und wenn sich die Gerade auf dem Bild um 90° gedreht hat bewegt sie sich ja nur noch nach links, bei 180° eigentlich nach unten, bei 270° nach rechts und dann wieder nach oben 🤔

Das heisst ich brauche sowas wie n=jcos(Pii) für den y-Achsenabschnitt und bei der Steigung müsste ich Fälle einbauen, da ja eine senkrechte Gerade keine Funktion hat.

... oder? =)

Edit: Ach was rede ich da. Die Drehrichtung auf meinem eigenen Bild hat mich verwirrt 😁

Ja, ok. Ich lass n steigen und kann da diekt meine y Koordinate für einen Punkt ablesen. Bis die maximale Höhe erreicht ist. Dann muss ich schauen "nurnoch" schauen wo die Gerade so zu sagen in mein Bild eintritt und wieder austritt. Wobei ich den Eintrittspunkt ja bestimmen kann weil ich die Geradengleichung und die Y-Koordiante des Randes habe.

Aber ich vermute da noch ein Problem:

Wenn ich n immer um 1 erhöhe und m z.B. auch immer um 1. Überspinge ich dann nicht Pixel am anderen Ende der Geraden.
Oder: Ich reduziere die Schrittweite, dann erhalte ich doch oft viele Pixel doppelt, oder?

Das würde bedeuten mein Ergebnisbild verliert an Auflösung.

02.12.2015 - 09:46 Uhr

Okay, also ich hab mir da einige Gedanken gemacht und habe einige Probleme mit der Geraden.

Da sich die Gerade ja nach oben bewegt und gleichzeitig dreht, kommt da folgende Bewegung bei raus

Meine Überlegung war jetzt die Gerade über Anfangs- und Endpunkt zu beschreiben. Wobei ich die Punkte über eine Funktion bewege.
Aber irgendwie.... kommt da nur Käse bei rum.

Meine Überlegung folgende:

Ich beschreibe den Anfangs- und Endpunkt der Geraden über eine Funktion, die aus einer Addition der Bewegung nach oben und der Kreisbewegung entsteht. Aber dann kommen ja auch Werte außerhalb des Bildes bei rum. Ich müsste doch dann eigentlich quasi den Schnittpunkt der Gerade mit dem Rand des Bildes bestimmen und daraus dann die eigentliche Gerade erzeugen.

Und kann es dann nicht sein, dass dann Pixel am unteren Rand übersprungen werden, durch Rundungen und begrenzte Genauigkeit?

Also wärs nicht eigentlich besser, die X-Achse des Bildes Punkt für Punkt abzugehen und daras dann den Endpunkt zu bestimmen?
Dabei stellt sich mir dann wieder die Frage wie denn bei was die Funktion aussehen soll 🤔

Irgendwie komm ich da nicht weiter.

Edit: Anhang

08.11.2015 - 14:47 Uhr

Okay, danke =). Das offensichtlichste hab ich natürlich nicht gesehen: Wenn ich immer das ursprüngliche Bild um den neuen Winkel drehe, statt weiter zu drehen wird das Bild nicht schlechter.

Was das werden soll:

Es soll nach jedem Rotationsschritt eine neue Zeile gelesen und in dem neuen Bild ergänzt werden. Rauskommen soll eine Art Rolling-Shutter-Effekt.

Den Bresenham-Algorithmus werde ich mir auf jedenfall mal ansehen, das könnte ich für den nächsten Schritt, das entfernen des Effekts gut gebrauchen.

Edit: Was genau meinst du denn mit "Randproblemen"?

02.11.2015 - 12:59 Uhr

Hallo,

ich bin C# Anfänger und habe hier ein paar Pobleme.

Und zwar möchte ich ein Bild öffnen, anzeigen, schrittweise drehen, zeilenweise nach jedem Schritt in ein neuen Bild schreiben und das Ergebnis dann anzeigen.

Bisher habe ein Fenster mit zwei PictureBoxen und kann ein Bild laden, links anzeigen, um einen festen, aber beliebigen Winkel drehen und auf der rechten Seite anzeigen.

Mein großes Problem ist jetzt, dass ich nicht weiß wie ich am besten eine Bildzeile auslesen und in ein neues Bild schreibe. Ich habe überlegt das mit Hilfe von getPixel und setPixel zu machen bin mir aber nicht sicher ob das so eine gute Idee ist ^^.

Das zweite Problem: Bei jeder Rotation wird das Bild unschärfer. Kann man da irgendwas gegen machen?

Danke schon mal.