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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...