Rechteck beliebig drehen |
19.05.2018, 18:57 | MrFlatQuader | Auf diesen Beitrag antworten » | ||
Rechteck beliebig drehen Hallo Leute, ich habe eine kleine Frage. Ich möchte ein Rechteck von einem beliebigen *internen Punkt drehen. *interner Punkt: Ein beliebiger Drehpunkt der von seinen Koordinaten im Rechteck liegt. Also entweder ein beliebiger Eckpunkt des Rechtecks, oder der Mittelpunkt, oder ein beliebiger anderer Punkt innerhalb des Rechtecks. (Das soll flexibel sein.) Meine Ideen: geg. Rechteck - z.B. l = 100 b = 50 und Drehwinkel a = 0 bis 359 Grad - x und y dienen nur der Koordinatenpunkt (A) - Verschiebung (Also der Verschiebung der oberen linken Ecke des Rechtecks) -rx und ry sollen den beliebigen (internen!) Rotationspunkt angeben. A-----------C | | | | B-----------D So kann man ja um eine bestimmte Ecke rotieren (z.B. A) AX = (0*Cos(Radian(a)) - 0 * Sin(Radian(a))) + x AY = (0*Sin(Radian(a)) + 0 * Cos(Radian(a))) + y BX = (0*Cos(Radian(a)) - b * Sin(Radian(a))) + x BY = (0*Sin(Radian(a)) + b * Cos(Radian(a))) + y CX = (l*Cos(Radian(a)) - 0 * Sin(Radian(a))) + x CY = (l*Sin(Radian(a)) + 0 * Cos(Radian(a))) + y DX = (l*Cos(Radian(a)) - b * Sin(Radian(a))) + x DY = (l*Sin(Radian(a)) + b * Cos(Radian(a))) + y ..Und so um den Mittelpunkt: AX = ((Cos(Radian(a))*-rx)-(Sin(Radian(a))*-ry)+rx)+x AY = ((Sin(Radian(a))*-rx)+(Cos(Radian(a))*-ry)+ry)+y BX = ((Cos(Radian(a))*-rx)-(Sin(Radian(a))*ry)+rx)+x BY = ((Sin(Radian(a))*-rx)+(Cos(Radian(a))*ry)+ry)+y CX = ((Cos(Radian(a))*rx)-(Sin(Radian(a))*-ry)+rx)+x CY = ((Sin(Radian(a))*rx)+(Cos(Radian(a))*-ry)+ry)+y DX = ((Cos(Radian(a))*rx)-(Sin(Radian(a))*ry)+rx)+x DY = ((Sin(Radian(a))*rx)+(Cos(Radian(a))*ry)+ry)+y Wie kann man möglichst flexibel um jeden beliebigen internen Punkt rotieren ? (Also quasi auch elliptisches Rotieren) |
||||
19.05.2018, 19:20 | MrFlatQuader | Auf diesen Beitrag antworten » | ||
Beim Mittelpunkt wäre rx = l/2 und ry = b/2 Wie kann man aber z.B das gegebene Rechteck vom Drehpunkt Vxy (2,2) oder Vxy(60,40), etc. ...drehen und nicht nur vom Mittelpunkt Vxy(50,25) ? Und nicht das man mich falsch versteht: Ich möchte nicht den Ursprung (z.B. Ecke A oder den Mittelpunkt) an den Rotationspunkt verschieben und um diesen Rotieren, sondern von der geg. Position. |
||||
19.05.2018, 19:38 | sixty-four | Auf diesen Beitrag antworten » | ||
Das machst du ganz genauso. Du legst ein Koordinatensystem so, dass der Drehpunkt der Koordinatenursprung ist, also Danach führst du die Drehung mit einer orthogonalem Matrix der Form aus, wobei der Drehwinkel ist. Anschliessend machst du die erste Transformation wieder rückgängig. |
||||
19.05.2018, 21:04 | MrFlatQuader | Auf diesen Beitrag antworten » | ||
Irgendwie bekomme ich immer nur eine Verschiebung und dann eine Drehung hin, aber ich möchte nicht verschieben. (Das wäre so nicht richtig.) Quasi bei z.B. bei einem Rechteck: x,y,l,b: 0, 0, 10, 6 mit Verschiebung: 6, 2 bei 0 Grad : A = (0,0) | B = (0, 6) | C = (10,0) | D = (10,6) bei 90 Grad: A = (7,-3) | B = (1,-3) | C = (7,7) | D = (1,7) ..... und ohne: bei 0 Grad: A = (0,0) | B = (0, 6) | C = (10,0) | D = (10,6) bei 90 Grad: A = (8,-2) | B = (2, -2) | C = (8,8) | D = (2,8) .... |
||||
19.05.2018, 21:29 | sixty-four | Auf diesen Beitrag antworten » | ||
Die Verschiebung machst du och hinterher wieder rücgängig. Du hast einen Punkt P(2;3), den du um den Punkt M(-1;4) um den Winkel drehen willst. 1. Schritt: 2. Schritt 3. Schritt Das machst du für jeden Eckpunkt. |
||||
19.05.2018, 22:01 | MrFlatQuader | Auf diesen Beitrag antworten » | ||
Danke! |
||||
Anzeige | ||||
|
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
Die Neuesten » |