Berechung von rechteck
Übersicht

![]() |
MeoqanBetreff: Berechung von rechteck |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi!
ich versuche seit nen paar stunden ein problem zu lösen... da mathe nie meine stärke war bitte ich um mithilfe! das problem: 1. von einem startpunkt rechne ich eine verschiebung dazu: +x , +y (kein problem) 2. von diesem verschiebungs punk rechne ich einfach cos und sin mal entferung dazu: x+(cos(winkel)*entferung), y+(sin(winkel)*entferung) (kein problem) 3. von da aus wirds schwer: die quadratischen zeichungen sind kein problem, aber die rechteckigen: wie rechne ich von einem mittelpunkt, den eckpunkt von einem rechteck aus _WENN_ sich das bild um die eigene achse drehen soll? also: vergessen wir punkt 1 und punk 2 und gehen von einem nullpunkt aus: bis jetzt habe ich den winkel bestimmt und die entferung des ganzen rechtecks dann habe ich durch cos und sin mal enferung den mittelpunkt bestimmt dieses ergebnis durch 2 geteilt und das dann als size genommen von der quadratischrechung leider kann ich den orginalcode nicht posten da er durch bank.peekshort(offset) sowieso nicht zu verstehen ist. hier aber ein abgeänderter code: Code: [AUSKLAPPEN] SetRotation((bildwinkel + -45 )) Local sx1:Float = x Local sy1:Float = y Local sx2:Float = sx1 + (Cos(2.winkel ) * entferung) Local sy2:Float = sy1 + (sin(2.winkel ) * entferung) Local Awinkel:Float = -ATan2(0 - Float(bildsizex), 0 - Float(bildsizey)) - 90 Mod 360 Local enferungx:Float = Cos(Awinkel) * (Sqr(0 - Float(bildsizex) ^ 2 + (0 - Float(bildsizey) ^ 2) / 2)) Local enferungy:Float = sin(Awinkel) * (Sqr(0 - Float(bildsizex) ^ 2 + (0 - Float(bildsizey) ^ 2) / 2)) Local sx3:Float = sx2 - (Cos(Float(bildwinkel) ) * (enferungx)) Local sy3:Float = sy2 - (Sin(Float(bildwinkel) ) * (enferungy)) mfg meoqan |
||
meine codes sind die essenz des bössen. nicht du veränderst meine codes sondern meine codes verändern dich! |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
du kannst ja die länge der halben diagonale deines rechtecks ausrechnen, sowie den winkel diesier diagonale( atan2())
dann kannst du irgendeinen wert auf den winkel draufaddieren und mit sinus, cosinus, deiner länge der diagonale und dem geänderten winkel das rechteck rotieren |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Meoqan |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich glaube ich hab die lösung gefunden... jedenfalls tut das rechteck was es soll ![]() thx an Goodjee ich habe ein kleines test prog gebaut und soweit geht das jetzt Code: [AUSKLAPPEN] SetGraphicsDriver GLMax2DDriver() Graphics 700, 500 x:Float = 350 y:Float = 250 sizex = 100 sizey = 200 Repeat Cls sizey = sizey + 1 If sizey > 400 Then sizey = 100 winkel = winkel + 1 Mod 360 SetRotation(winkel + -225) xwinkel:Float = ATan2(0 - sizex, 0 - sizey) + -225 Mod 360 sx:Float = x + ((Cos(winkel - xwinkel) * Sqr((sizex) ^ 2 + (sizey) ^ 2)) / 2) sy:Float = y + ((Sin(winkel - xwinkel) * Sqr((sizex) ^ 2 + (sizey) ^ 2)) / 2) SetColor(255, 255, 255) DrawRect(sx, sy, sizex, sizey) SetRotation(0) SetColor(255, 0, 0) DrawRect(x, y, 3, 3) SetColor(0, 255, 0) DrawLine(sx + ((Cos(winkel - xwinkel + 180) * Sqr((sizex) ^ 2 + (sizey) ^ 2)) / 2), sy + ((Sin(winkel - xwinkel + 180) * Sqr((sizex) ^ 2 + (sizey) ^ 2)) / 2), sx, sy) SetColor(255, 255, 255) DrawText(xwinkel, 1, 1) Flip Until KeyHit(KEY_ESCAPE) End |
||
meine codes sind die essenz des bössen. nicht du veränderst meine codes sondern meine codes verändern dich! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group