AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Punkt(e) um beliebiges Zentrum drehen
Thema durchsuchen
Ansicht
Themen-Optionen

Punkt(e) um beliebiges Zentrum drehen

Ein Thema von HugoHase · begonnen am 24. Sep 2008 · letzter Beitrag vom 25. Sep 2008
Antwort Antwort
HugoHase

Registriert seit: 4. Mai 2008
Ort: Berlin
30 Beiträge
 
Delphi 7 Enterprise
 
#1

Punkt(e) um beliebiges Zentrum drehen

  Alt 24. Sep 2008, 23:02
Einen schönen guten Abend ... und wieder einmal bin ich auf eure Hilfe angewiesen ...
Ich möchte einige Punkte um ein beliebiges Zentrum drehen ... es klappt soweit auch ganz nur verzerrt sich die Figur ... ist mein Algorithmus falsch ??

// cosA und sinA sind Arrays mit den schon errechneten Werten um Rechenzeit zu sparen

Delphi-Quellcode:
function drehen(w : integer; Punkte : TPunkte; dPunkt : TPoint):TPunkte;
var i : integer;
    P : TPoint;
begin
 for i:=0 to length(Punkte)-1 do
 begin
  P:=Punkte[i];
  Punkte[i].X:=round((P.X-dPunkt.X)*cosA[w]-(P.Y-dPunkt.Y)*sinA[w])+dPunkt.X;
  Punkte[i].Y:=round((P.Y-dPunkt.Y)*cosA[w]+(P.X-dPunkt.X)*sinA[w])+dPunkt.Y;
 end;
 result:=Punkte;
end;

ich hoffe ihr könnt mir helfen ... THX
I hacked 127.0.0.1
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Punkt(e) um beliebiges Zentrum drehen

  Alt 24. Sep 2008, 23:11
Sieht richtig aus. Sicher, dass du die Arrays richtig befüllt hast?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: Punkt(e) um beliebiges Zentrum drehen

  Alt 24. Sep 2008, 23:14
w ist der Winkel - sicher dass das ein integer sein soll !?

Ein Double oder Single wäre glaube ich passender ...

Es sei denn, du behandelst den integer als eiune Festkommazahl und ... passt bei den winkelfunktionen auf
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Punkt(e) um beliebiges Zentrum drehen

  Alt 24. Sep 2008, 23:14
Oder es ist ein Winkel in Grad - wobei eine Ganzzahl durchaus ausreichend sein kann.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Punkt(e) um beliebiges Zentrum drehen

  Alt 24. Sep 2008, 23:18
Wobei 1. Grad nicht so schön sind wie rad ^^ und 2. sich die Rundungsfehler #auch bei Gard aufaddieren können.

Wenn du z.B. eine Animation machst, in der du eine Figur drehst, wirdst du mit integer imho nur wenig Freude haben

Aber für mich sieht das ganze auch an sich richtig aus ...
  Mit Zitat antworten Zitat
HugoHase

Registriert seit: 4. Mai 2008
Ort: Berlin
30 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Punkt(e) um beliebiges Zentrum drehen

  Alt 25. Sep 2008, 15:28
danke für das fleißige Antworten,
aber das Problem hat sich gelöst da ich die Punkte jetzt als Extended werte speichere und erst beim Zeichnen runde

Zitat:
Ein Double oder Single wäre glaube ich passender ...
wir leben doch im Zeitalter wo Arbeitsspeicher nicht mehr ganz so wichtig ist ...
I hacked 127.0.0.1
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Punkt(e) um beliebiges Zentrum drehen

  Alt 25. Sep 2008, 16:07
Öhm, hat damit aber nun eigentlich nichts zu tun. Int und Single sind beide 32 Bit breit, nur dass du mit Single deutlich feinstufiger Winkel übergeben kannst, da es zwischen 0..359 höher auflöst als ein Integer. Wenn überhaupt könntest du mit Rechenzeit argumentieren, wobei du jedoch mit einem Float-Typen an dieser Stelle fast sogar noch schneller sein könntest, da du den Wert ohnehin sofort in eine trigonometrische Funktion wirfst.

Edit: Okay, tust du nicht, du nimmst eine LUT. Dann schaut des wieder anders aus. Erst ganz lesen, dann denken, dann posten - hab ja verstanden . Und wenn die LUT für deine Zwecke ausreicht ist da nix gegen einzuwenden
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:20 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