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 Zitieren
flashpixx Geschrieben 5. Juli 2010 Geschrieben 5. Juli 2010 Beschreibe die Punkte bzw die Gerade vektoriell und benutze eine Rotationsmatrix mit entsprechender Dimensionalität Zitieren
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. Zitieren
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 Zitieren
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 Zitieren
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 Zitieren
Kaeyu Geschrieben 6. Juli 2010 Autor Geschrieben 6. Juli 2010 Dankeschön, funktioniert nun wunderbar! Zitieren
Empfohlene Beiträge
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.