AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie geht das mit den Winkeln?

Ein Thema von sweety · begonnen am 23. Jan 2007 · letzter Beitrag vom 23. Jan 2007
Antwort Antwort
sweety

Registriert seit: 21. Jan 2007
3 Beiträge
 
#1

Wie geht das mit den Winkeln?

  Alt 23. Jan 2007, 00:07
Hallo,
ich bins schon wieder habe es jetzt hin bekommen das mir das Programm ein Polygon zeichnet, leider bin ich immer noch nicht weiter.

Mein Problem ist die Umsetzung von Formeln in Programmiersprache und die Bestimmung der Variablen.

Meine Formeln um die Drehung zu bekommen sind:

x'=(x-u)*cos w + (y-v)*sin w + u
y'=(x-u)*sin w + (y-v)*cos w + v

u:= xp[1]
v:= yp[1]
x:= xp[i]
y:= yp[i]

würde dann mit einer FOR-Schreife beginnen

for i:=1 to n do

Weiß aber nicht wie ich die Angaben von sin w und cos w in var setzen soll (real, array, integer)???

Freue mich und danke euch schon mal im Voraus für euere Hilfe.

sweety
  Mit Zitat antworten Zitat
23. Jan 2007, 10:22
Dieses Thema wurde von "Phoenix" von "Fragen / Anregungen zur DP" nach "Sonstige Fragen zu Delphi" verschoben.
Ist sicher keine Anregung zur DP
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Wie geht das mit den Winkeln?

  Alt 23. Jan 2007, 10:51
Du kannst real nehmen, aber nenn es gleich double (bzw. array of double).
Double ist der gängige Typ für Fließkommazahlen und die FPU
(Floating-Point-Unit) rechnet immer mit Double (zumindest in ner 32bit CPU).

Deine Mathematik kommt mir nur komisch vor, aber wenn es klappt.
Ansonsten:
Ich hätte den Weg (über Polarkoordinaten bzw. komplexe Zahlen)
-z0 beinhaltet die Koordinaten (in komplexer Form) des Drehpunktes
-z1 sind die Koordinaten des zu verschiebenden Punktes
-z1' die neuen Koordinaten

==> z1'=z0+r*exp(i*(w1+w2))
r ist dabei der Abstand zwischen z0 und z1
w1 ist der anfangswinkel
w2 der zu drehende Winkel

--> x'=u+r*sin(w1+w2)
--> y'=v+r*sin(w1+w2)
r=sqrt((u-x)²+(v-y)²)
w1=arg(u-x,v-y)

Edit: Vektor drehen
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#4

Re: Wie geht das mit den Winkeln?

  Alt 23. Jan 2007, 10:53
aus der oh-hilfe...
Zitat:
function Sin(X: Extended): Extended;
X ist ein Ausdruck des Typs Real. Sin gibt den Sinus des mit X angegebenen Winkels im Bogenmaß (Rad) zurück.
  Mit Zitat antworten Zitat
jokerfacehro
(Gast)

n/a Beiträge
 
#5

Re: Wie geht das mit den Winkeln?

  Alt 23. Jan 2007, 21:43
hey

ich nutze gern diese funktion sie ist sehr einfach zu handhaben ^^
r ist der radius, a der winkel, x und y ist der abstand von dem du ausgehst
px,py sind die koordinaten des punktes den du drehen willst
mx,my sind die mittelpunktkoordinaten
rotpoint is der gedrehte punkt

Delphi-Quellcode:

r:=sqrt((px-mx)*(px-mx)+(py-my)*(py-my));
pii:=PI/180;

rotpoint:=get_rot_point(r,a,mx,my);

function get_rot_point(r,a,x,y:double):TPoint;
begin
Result.X:=round(r*cos(a*pii)+x);
Result.Y:=round(r*sin(a*pii)+y);
end;
benutze so egnaue werte wie möglich und runde so spät wie möglich
kleiner tipp: wenn du ein bild drehen möchstest, denn geh vom gedrehten bild aus und
hol dir über die rot funktion die farben der original pixel, wenn du das bild von original einfach drehst, entstehen löcher.

andersrum kriegst du vielleicht ein paar falsche farbwerte für ein paar pixel die sieht man aber schlechter als löcher

beim rotieren gibt es immer daten verlust
  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 19:47 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