Zum Inhalt springen

[Algorithmus] Eine Gerade rotieren lassen


Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo auch,

versuche grad ein kleines Spielchen zu programmieren. Dabei habe ich allerdings ein kleines Problemchen.

Ich möchte eine Gerade rotieren lassen. Der Mittelpunkt soll fix sein und die beiden "Enden". Sollen sich drehen - quasi um die eigene Achse.

Wie geht sowas theoretisch?

Bearbeitet von Kaeyu
Geschrieben

Beschreibe die Gerade in Kreiskoordinaten (Radius r, Winkel phi), der Ursprung dies Kreiskoordinatensystems liegt in dem Punkt, um den sie drehen soll. Reche dies zum Zeichnen in kartesische Koordinaten um.

Geschrieben

Wenn Du die Gerade in Einem Rechteck malen willst kannste auch so vorgehen:

Vorbereitung:

1. Start Punkt unten links deffinieren

2. Endpunkt oben rechts deffinieren

3.Gerade einmalig malen

Algo zur Punkt-Transformation in Sem- PsydoCode (Koordinaten Uhrsprung Windows typisch OBEN links):

****** start wandert "an der Oberkannte" von rechts nach links

****** ende wandert "an der unterkante" von links nach rechts

if (start.Y = 0)

{

start.X := start.X - 1;

ende.X := ende.X + 1;

}

****** start wandert "rechts-aussen" von unten nach oben!

****** ende wandert "links aussen" von oben nach unten!

else if (start.Y > 0)

{

start.Y := start.Y - 1;

ende.Y := ende.Y + 1;

}

****** Punkte vertauschen

else if (start.X = 0)

{

tempPunkt := start;

start := ende;

ende = tempPunkt;

}

MaleGerade(start,ende)

Der Trick ist:

  • Start und Ende starten in gegenüberliegenden Ecken
  • Start und Ende wandern immer simultan in entgegen gesetzter Rirchtung auf einer der Aussenkanten des Rechtecks.
  • Start und Ende werden immer vertauscht Wenn Uhrsprung erreicht ist

.

Grapisch Dargestellt (start entspricht x und ende wird durch Y dargestellt)

xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Y X

Y X

Y X

Y X

YYYYYYYYYYYYYYYYYYYYYYY

Geschrieben

@Mcolli: Das funktioniert aber nur, sofern die Kanten des Rechtsecks parallel zu den Achsen des Koordinatensystems sind. Bei entsprechender Rotation würde das nicht mehr klappen, da sich beide Koordinaten verändern

Geschrieben

Stimmt aber kann die obere und linke kantedes recht ecks als coordinatensystem nehmen und das komplette vier eck dann drehen ... so gehts zu min in .Net .... andere Programmiersprachen kenn ich mich nicht so gut aus .... wenn er in WPF bzw Silverlight Programmiert geht das ganze noch viel viel viel trivialer :D

sollte auch mehr ne triviale Lösung sein..... da müssen natürlich rand bedingungen deffiniert werden

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...