Kaeyu Geschrieben 5. Juli 2010 Geschrieben 5. Juli 2010 (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 5. Juli 2010 von Kaeyu
flashpixx Geschrieben 5. Juli 2010 Geschrieben 5. Juli 2010 Beschreibe die Punkte bzw die Gerade vektoriell und benutze eine Rotationsmatrix mit entsprechender Dimensionalität
Bubble Geschrieben 5. Juli 2010 Geschrieben 5. Juli 2010 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.
Mcolli Geschrieben 5. Juli 2010 Geschrieben 5. Juli 2010 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 EckenStart 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
flashpixx Geschrieben 5. Juli 2010 Geschrieben 5. Juli 2010 @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
Mcolli Geschrieben 6. Juli 2010 Geschrieben 6. Juli 2010 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 sollte auch mehr ne triviale Lösung sein..... da müssen natürlich rand bedingungen deffiniert werden
Kaeyu Geschrieben 6. Juli 2010 Autor Geschrieben 6. Juli 2010 Dankeschön, funktioniert nun wunderbar!
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden