Autor Beitrag
me2k
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 24.11.08 21:51 
ich möchte um den punkt A drehen ... also um eine ecke des dreiecks...
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 186
Erhaltene Danke: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Di 25.11.08 22:30 
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
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 :zwinker:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 25.11.08 22:35 
user profile iconme2k hat folgendes geschrieben Zum zitierten Posting springen:
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
ausblenden Quelltext
1:
Q(x cos α - y sin α | y cos α + x sin α)					

Siehe z.B. hier.

_________________
>λ=
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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)
BeitragVerfasst: 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:
ausblenden 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:
//Als erstes berechnen wir die Strecke AB über den Pytagoras:
d := SQRT(SQR(deltaX)+SQR(deltaY));
//alten Winkel berechnen:
//sin x = Gegenkatete/Hyp.
//sin w = deltaY/d
//w = ArcSin(deltaY/d)
w := ArcSin(deltaY/d)/Pi*180; ///Pi*180ist die Umrechnung von RAD zu DEG

//danch addieren wir unseren winkel um den wir drehen wollen
w := w + 25;

//und berechnen x und y neu
//sin w = deltaY/d
//deltaY = sin(w) * d
deltaY := sin(w/180*Pi)*d;

//cos w = deltaX/d
//deltaX = cos(w) * d
deltaX := cos(w/180*Pi)*d;

//und dann müssen wir deltaX und deltaY noch zu unserem Punkt A addieren um auf B zu kommen
B.x := A.x + deltaX;
B.y := A.y + deltaY;


hier noch n Bild:
user defined image

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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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 :D
und evtl noch ne kleinigkeit ich hab kein koordinatensystem :D
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Mi 26.11.08 18:18 
user profile iconme2k hat folgendes geschrieben Zum zitierten Posting springen:
... ich hab kein koordinatensystem :D

Du beschreibst ja deine Punkte über 2 Koordinaten (x, y). Daher hast du ein Koordinatensystem mit dem Ursprung in der linken oberen Ecke. ;)

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Mi 26.11.08 19:14