AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Punkt drehen um einen anderen Punkt
Thema durchsuchen
Ansicht
Themen-Optionen

Punkt drehen um einen anderen Punkt

Ein Thema von Florian H · begonnen am 21. Apr 2005 · letzter Beitrag vom 21. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#1

Punkt drehen um einen anderen Punkt

  Alt 21. Apr 2005, 11:01
Hallo,

ich habe einen PunktA und nen PunktB in nem Koordinatensystem und möchte jetzt PunktB um PunktA in nem best. Winkel rotieren lassen.

PunktA könnte z.B. auf [2|2] liegen und PunktB auf [5|3] und soll dann um 90° (natürlich nur als Bsp, sonst beliebige Winkel) gedreht werden und liegt dann auf [1|5] (wenn ich mich nu nicht verrechnet habe -.- )
Nur wie mache ich das mit Delphi?
Ich mühe mich da seit gestern ab mit allen Mitteln meines bescheidenen Mathematikwissens (Kl.11), sin,cos und tan, Steigungen usw. , aber so wirklich funktioniert nichts :/

Google war auch nicht wirklich ergiebig bei meiner Suche (wohl, weil ich nicht weiß nach was ich suchen soll?)

Achja, es geht letztendlich um das Drehen eines Dreiecks um einen seiner Eckpunkte, was sich ja auf das Drehen von 2 Punkten um einen dritten vereinfachen lässt.


Viele Grüße
Florian
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Punkt drehen um einen anderen Punkt

  Alt 21. Apr 2005, 11:07
Code:
procedure DrehePunkt (P: TPoint; AWinkel: single; ADrehPunkt: TPoint);
var
  H: TPoint;
begin
  H.X := P.X-ADrehpunkt.X;
  H.Y := P.Y-ADrehpunkt.Y;
  H.X := H.X*Cos (AWinkel); // Winkel im Bogenmaß
  H.Y := H.Y*Sin (AWinkel);
  Result.X := H.X+ADrehpunkt.X;
  Result.Y := H.Y+ADrehpunkt.Y;
end;
Kann man noch kürzen!
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#3

Re: Punkt drehen um einen anderen Punkt

  Alt 21. Apr 2005, 11:10
Na, wenn dann aber:

Delphi-Quellcode:
function DrehePunkt (P: TPoint; AWinkel: single; ADrehPunkt: TPoint): TPoint;
var
  H: TPoint;
begin
  H.X := P.X-ADrehpunkt.X;
  H.Y := P.Y-ADrehpunkt.Y;
  H.X := H.X*Cos (AWinkel); // Winkel im Bogenmaß
  H.Y := H.Y*Sin (AWinkel);
  Result.X := H.X+ADrehpunkt.X;
  Result.Y := H.Y+ADrehpunkt.Y;
end;
Ne Procedure hat schließlich kein Rückgabewert

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: Punkt drehen um einen anderen Punkt

  Alt 21. Apr 2005, 11:10
also mit cos und sin biste schon richtig.

Delphi-Quellcode:
radius:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));//Pytagoras
winkel=asin(abs(x1-x2));
winkel=winkel+90;
x2:=x1+sin(winkel)*radius;
y2:=y1+cos(winkel)*radius;
falls was nicht stimmt, tausch mal sin und cos...aber das prinzip ist imho richtig...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Punkt drehen um einen anderen Punkt

  Alt 21. Apr 2005, 11:12
Im Beispiel von gklgereon sind sin und cos immer vertauscht. Cos gibt die Ankathete (x), Sin die Gegenkathete (y). Ebenso musst du es bei asin bzw. acos umtauschen (wie er ja bereits vermutet hat )

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#6

Re: Punkt drehen um einen anderen Punkt

  Alt 21. Apr 2005, 11:12
Zitat von Kroko1999:
Code:
procedure DrehePunkt (P: TPoint; AWinkel: single; ADrehPunkt: TPoint);
var
  H: TPoint;
begin
  H.X := P.X-ADrehpunkt.X;
  H.Y := P.Y-ADrehpunkt.Y;
  H.X := H.X*Cos (AWinkel); // Winkel im Bogenmaß
  H.Y := H.Y*Sin (AWinkel);
  Result.X := H.X+ADrehpunkt.X;
  Result.Y := H.Y+ADrehpunkt.Y;
end;
Kann man noch kürzen!
also wenn ichs so mache:
Delphi-Quellcode:
function DrehePunkt (P: TPoint; AWinkel: single; ADrehPunkt: TPoint) : TPoint;
var
  H: TPoint;
begin
  H.X := P.X-ADrehpunkt.X;
  H.Y := P.Y-ADrehpunkt.Y;
  H.X := round(H.X*Cos (AWinkel)); // Winkel im Bogenmaß
  H.Y := round(H.Y*Sin (AWinkel));
  Result.X := H.X+ADrehpunkt.X;
  Result.Y := H.Y+ADrehpunkt.Y;
end;
gehts auch noch nicht (hatte round() und Rückgabewert gefehlt)... das streckt oder verzerrt nur :/
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Punkt drehen um einen anderen Punkt

  Alt 21. Apr 2005, 11:12
GELÖSCHT

ROUND ist richtig hatte ich nicht dran gedacht,

und Denkfehler:
Code:
  P.X := Round (Hx*Cos(AWinkel)-Hy*Sin(AWinkel);
  P.Y := Round (Hx*Sin(AWinkel)+Hy*Cos(AWinkel);
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#8

Re: Punkt drehen um einen anderen Punkt

  Alt 21. Apr 2005, 11:25
Zitat von glkgereon:
also mit cos und sin biste schon richtig.

Delphi-Quellcode:
radius:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));//Pytagoras
winkel=asin(abs(x1-x2));
winkel=winkel+90;
x2:=x1+sin(winkel)*radius;
y2:=y1+cos(winkel)*radius;
falls was nicht stimmt, tausch mal sin und cos...aber das prinzip ist imho richtig...
also selbst wenn ich an allen möglichen Stellen sin oder cos tausche - funtkionieren tut es nicht
Florian Heft
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#9

Re: Punkt drehen um einen anderen Punkt

  Alt 21. Apr 2005, 11:37
Zitat von Kroko1999:
GELÖSCHT

ROUND ist richtig hatte ich nicht dran gedacht,

und Denkfehler:
Code:
  P.X := Round (Hx*Cos(AWinkel)-Hy*Sin(AWinkel);
  P.Y := Round (Hx*Sin(AWinkel)+Hy*Cos(AWinkel);
ahh danke, so funktoniert es =)
Florian Heft
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#10

Re: Punkt drehen um einen anderen Punkt

  Alt 21. Apr 2005, 13:58
oww nee, ist doch noch nicht ganz das was ich wollte...

Der Punkt sollte in ner Kreisbahn um den anderen Punkt gedreht werden, mit dem Code wird die Bahn aber Elliptisch (wenn x2-x1 != y2-y1) ....

was muss ich daran verändern?
Florian Heft
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz