| Autor |
Beitrag |
me2k
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 13.11.08 22:38
hey nabend zusammen
ich habe ne kleine frage..
ich hab hier schon viel geguckt und so..
aber nichts gefunden...
also meine frage,
wie im titel schon zu erkenn möchte ich gerne ein dreick um eine bestimmte gradzahl drehen welches ich vorher erzeugt habe.
meine x,y koordinaten der eckpunkte erzeug ich mit random..
würde mich freuen wenn ihr mir helfen könntet
viele dank im vorraus
lg
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Fr 14.11.08 00:00
Um was möchtest du das Dreieck denn drehen? Um den Ursprung deines Koordinatensystems, den Mittelpunkt (welchen) des Dreiecks oder um eine Ecke des Dreiecks?
|
|
me2k 
Hält's aus hier
Beiträge: 4
|
Verfasst: Mo 24.11.08 21:51
ich möchte um den punkt A drehen ... also um eine ecke des dreiecks...
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Mo 24.11.08 21:54
Verschieb das Dreieck erstmal so, dass der Punkt A im Ursprung des Koordinatensystems liegt (0/0). Dann verschiebst du die anderen Punkte jeweils mit sin und cos. Am Ende musst du das Dreieck nur noch auf die alte Position zurückverschieben.
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mo 24.11.08 23:41
HI,
@Jann1k: wieso sollte er das an den Ursprung verschieben? Er kanns doch auch gleich so lassen und einfach mit dem Abstand zwischen A und B und A und C rechnen! Da kann man sich das rum schieben ersparen.
@me2k: vergiss nicht das du den Winkel um den du drehen willst zu dem ursprünglichen Wikel addieren musst, sonst bekommst du am Ende ein falsches Ergebnis.
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
me2k 
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 25.11.08 20:20
ok danke schonma für die antworten....
nur eine frage hab ich noch....
wie bekomm ich denn den anfangswinkel raus? da ich den ja nich angebe sondern er ergibt sich ja zufällig...
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Di 25.11.08 20:56
@Bergmann89: Also meine Logik sagt mir, dass er es zum Ursprung verschieben muss. Sicher wäre ich mir da aber auch nicht (aber sonst müsste er ja wenigstens subtrahieren, also eig. dasselbe).
EDIT: Und vergiss nicht, nicht sin(winkel), sondern sin(math.degtorad(winkel))!
|
|
martin300
      
Beiträge: 186
Erhaltene Danke: 2
|
Verfasst: Di 25.11.08 21:46
Hallo,
@me2k: Was hast du bis jetzt? Wie erzeugst du dein Dreieck? Aus Linien, oder...,
Kannst du es schon verschieben dh. horizontal und vertikal? Kannst du eine einfache
Linie beliebig drehen?
Hast du einen Quellcode?
lg
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Di 25.11.08 22:30
Bergmann89 hat folgendes geschrieben : | | wieso sollte er das an den Ursprung verschieben? Er kanns doch auch gleich so lassen und einfach mit dem Abstand zwischen A und B und A und C rechnen! Da kann man sich das rum schieben ersparen. |
Also ich fand das sehr anschaulich erklärt
verschiebe, drehe, verschiebe zurück bezieht sich auf die Formel, nicht auf den bildschirm
Quelltext 1:
| Pos := Drehe(Pos-PosA)+PosA |
Dabei ist PosA die Position des Punktes A, Pos die position des zu verschiebenden Punktes.
@Threadsteller: Alles zu Drehungen findest du hier: de.wikipedia.org/wiki/Sinus_und_Kosinus
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Di 25.11.08 22:35
me2k hat folgendes geschrieben : | | wie bekomm ich denn den anfangswinkel raus? da ich den ja nich angebe sondern er ergibt sich ja zufällig... |
Brauchst du nicht:
Drehung des Punktes P(x|y) um den Ursprung um den Winkel α ergibt den Bildpunkt
Quelltext 1:
| Q(x cos α - y sin α | y cos α + x sin α) |
Siehe z.B. hier.
_________________ >λ=
|
|
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Di 25.11.08 23:56
HI,
ich denk die einfachste methode is das mit Sin und Cos zu machen, und da brauch man die anfangswinkel.
nehmen wir an wir wollen um 25° drehen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| d := SQRT(SQR(deltaX)+SQR(deltaY)); w := ArcSin(deltaY/d)/Pi*180; w := w + 25;
deltaY := sin(w/180*Pi)*d;
deltaX := cos(w/180*Pi)*d;
B.x := A.x + deltaX; B.y := A.y + deltaY; |
hier noch n Bild:
das sollte es gewesen sein. Das ganze analog zu dem Punkt C (mit der Strecke AC). Wenn du die Ursprungswinekl jetzt aber nich ausrechnest, nimmst du an, das die Strecke AB bzw. AC paralell zur X-Achse sind, und deshalb bekommt man da falsche Ergebnise!
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
me2k 
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 26.11.08 17:42
@martin300
ich erzeuge mein dreick mit canvas bzw lineto...
und ich kann nicht verschieben...
möcht ja bloß drehen
und evtl noch ne kleinigkeit ich hab kein koordinatensystem 
|
|
freak4fun
      
Beiträge: 604
Erhaltene Danke: 4
Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
|
Verfasst: Mi 26.11.08 18:18
_________________ "Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Mi 26.11.08 19:14
|
|