Autor Beitrag
Rizzo
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 07.04.08 20:50 
halihalo ich hätt da ne frage,
also inner schule machen wir jetzt Rekursion mit Delphi (5. Version),
nun will ich nicht wie alle anderen sone quadratische Spirale einfach mit Geraden gezeichnet, sondern eine richtige RUNDE, bedeutet halt das ich nicht weis wie ich die dem berechnen soll.....mein lehrer hat mir nur den tipp gegeben math als uses zu ergänzen und nu weis ich nicht was ich damit machen kann, auch aus wikipedias mathematischen angaben zu ner logarithmischen Spirale (die ich will) werd ich nicht schlau..................hab ich was unverständlich eklärt? einfach sagen, ich brauch hilfe ^^'

Danke schoo mal ;D
huuuuuh
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: Mo 07.04.08 21:51 
delphi.about.com/lib...y/rtl/blrtlUmath.htm

beschreibung der math-unit...allerdings auf englisch
Rizzo Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 07.04.08 22:12 
danke erst ma ;), ich guck da nach (english kann ich ganz gut ^^)
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Di 08.04.08 08:38 
Hallo,

ich habe es mal probiert und es sieht ganz gut aus, wenn man a variiert.
math wird nur für DegToRad gebraucht.

ausblenden volle Höhe 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:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
uses ...., math;
...
type
  tdblPoint = record
                dblX,
                dblY : double;
              end;
...
function logSpi(a,k,phi:double):tdblPoint;
var
  faktor: double;
begin
  faktor := a*exp(k*phi);
  with result do
    begin
    dblX := faktor*cos(phi);
    dblY := faktor*sin(phi);
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  Startwinkel = 0;
  Endwinkel = 7  *360// auch verschiedene testen z.B 1,10,100  
var
  i,j,
  x0,y0,
  x,y : integer;
  a,
  phi,
  k : double;
  Erg : tdblPoint;
begin
  // Mitte Paintbox bestimmen (sollte quadratisch sein, sonst muss man mehr berücksichtigen)
  x0:= Paintbox1.Width DIV 2;
  y0:= Paintbox1.Height DIV 2;
  a := 0.05;//0.5,1,5,25  testen
  // k so bestimmen, da der letzte Punkt noch in der Paintbox ist. 
  // Endwinkel muss aber ein ganzzahliges Vielfaches von 360 Grad sein
  //   faktor := a*exp(k*phi); mit faktor = x0 umstellen, um k zu bestimmen
  k:= ln(x0/a)/DegToRad(EndWinkel);
  //Startwerte finden
  Erg := logSpi(a,k,Startwinkel);
  x:= x0+round(Erg.dblX);
  y:= y0+round(Erg.dblY);
.....
Paintbox vorbereiten
in schleife die Punkte von Start-Endwinkel zeichnen
...
end;


Gruß Horst