| Autor |
Beitrag |
110022
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: So 02.12.07 00:15
ich will sone leine uhr programmieren hab auch das ziffernblatt ansatzweise fertig .
ich will mal wissensie ich die zeiger in einer kreisbewegung bewegen lasse.
der schwarze punkt im bild(anhang)soll die drehachse sein.
aber wie bekomme ich diese kreisbegegung????
der zeiger ist auch ein bild.
Der Anhang wird nicht mehr gebraucht...
Zuletzt bearbeitet von 110022 am So 02.12.07 13:51, insgesamt 1-mal bearbeitet
|
|
F34r0fTh3D4rk
      
Beiträge: 5285
Erhaltene Danke: 29
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: So 02.12.07 00:17
Hallo,
Schau mal hier:
de.wikipedia.org/wiki/Sinus
mfg
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: So 02.12.07 00:21
ich bin inner 9. klasse.
da hab ich noch nix mit sinus am hut.
kannste mir das irgendwie erklären??
außerdem sagt mir dein verweis nix.
|
|
TGLDX
      
Beiträge: 22
|
Verfasst: So 02.12.07 00:55
Das Bild auf Wikipedia erklärt Sinus und Kosinus ganz gut
Hier mal als Anregung eine Simple Uhr (Benötigt einen Timer mit Interval=1000):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| var I: Integer = -90;
procedure TForm1.Timer1Timer(Sender: TObject); begin i := i+6; Canvas.MoveTo(100,100); Canvas.LineTo((round(cos(PI/180*I)*50))+100, (round(sin(PI/180*I)*50))+100);end; |
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 02.12.07 01:09
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: So 02.12.07 10:35
@TGLDX:
das is ja schon ganz nett
aber wie bekomme ich es hin dass der vorige zeiger immerwieder verschwindet?
und wie ändere ich die position ???
und wie stehts mit der länge der zeiger?
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: So 02.12.07 10:46
da du nur einen roten Hintergrund hast, kannst du einfach den alten Strich mit rot übermalen.
das i:=i+6 verändert den Winkel. Die 6 musst du jetzt so anpassen, dass es zur Zeit passt.
Delphi-Quelltext 1: 2:
| IUnterschied:=360/60; IUnterschied:=360/(24*60) |
wenn du jetzt dem Timer ein Intervall von 1000 = 1min gibst, müsste es schon laufen. Wenn du den Timer schneller machst, musst du wiederum die 60 anpassen
Delphi-Quelltext 1: 2:
| TimeDiff:=(Timer.Intervall*1000)/60; |
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: So 02.12.07 10:53
bei mir kommen da unmengen fehler
Bei
Delphi-Quelltext 1: 2:
| IUnterschied:=360/60; IUnterschied:=360/(24*60) |
kommt
Delphi-Quelltext 1:
| [Fehler] Unit1.pas(34): Undefinierter Bezeichner: 'IUnterschied' |
und bei
Delphi-Quelltext 1:
| TimeDiff:=(Timer.Intervall*1000)/60; |
kommt
Delphi-Quelltext 1: 2:
| [Fehler] Unit1.pas(34): Undefinierter Bezeichner: 'Intervall' [Fehler] Unit1.pas(34): Undefinierter Bezeichner: 'TimeDiff' |
wie bekomme ich das weg??
|
|
F34r0fTh3D4rk
      
Beiträge: 5285
Erhaltene Danke: 29
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: So 02.12.07 11:02
Am besten, indem du dir das hier mal anschaust: www.christian-stelzm...rtikel/crashkurs.htm
mfg
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: So 02.12.07 11:02
ääähm...
Wieso gibts immer die Leute, die einfach nur Copy&Pasten...man sollte zumindest das soweit verstehen, dass man solche Sachen anpassen kann.
guckst du: IUnterschied entspricht der 6 in i:=i+6. Das musst du nur entsprechend integrieren. (IUnterschied als lokale Variable)
TimeDiff entspricht der 60 in IUnterschied:=360/60; . Also lokale Variable machen und statt der 60 einfügen.
und ich denke mal es müsste Timer.Interval heißen.
Was dahinter steckt:
i ist der Winkel, in dem der Zeiger zum "Mittelpunkt" steht. Mit Sinus bzw. Cosinus kannst du eine Kreisbewegung machen. Einfach mit cos(degtorad(i)) und sin(degtorad(i)) kriegst du die Richtung raus. cos und sin liegen immer zwischen 1 und -1. Also musst du das Ergebnis noch * die Länge des Zeigers nehmen.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
110022 
      
Beiträge: 287
XP SP2
Delphi 7
|
Verfasst: So 02.12.07 12:00
etwa so?
Delphi-Quelltext 1: 2: 3: 4: 5:
| var IUnterschied:extended=6 ;
begin IUnterschied:=360/(24*60); |
hab keine ahnung wie ich das anstellen soll.
Delphi-Quelltext 1: 2: 3: 4: 5:
| var timediff:extended=60 ;
begin TimeDiff:=(Timer1.Interval*1000)/timediff; |
wenns falsch is , was es sehr warscheinlich ist, bitte das richtig
zeigen.
und wie bekomme ich das ziffernblatt perfekt rund
und passend hin?
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: So 02.12.07 14:01
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:
| uses Math;
var Deg: real;
const ClockR=100; ClockLeft=0; ClockTop=0; procedure TForm1.Timer1Timer(Sender: TObject); var dDeg,dTime: real; begin dDeg := (Timer1.Interval*360)/(60*1000); Canvas.MoveTo(ClockLeft+ClockR,ClockTop+ClockR); Canvas.Pen.Color:=clBtnFace; Canvas.LineTo((round(cos(degtorad(Deg))*ClockR))+ClockLeft+ClockR,/ (round(sin(degtorad(Deg))*ClockR))+ClockTop+ClockR);
Deg := Deg+dDeg;
Canvas.MoveTo(ClockLeft+ClockR,ClockTop+ClockR); Canvas.Pen.Color:=clBlack; Canvas.LineTo((round(cos(degtorad(Deg))*ClockR))+ClockLeft+ClockR, (round(sin(degtorad(Deg))*ClockR))+ClockTop+ClockR);
end; |
das ist der Sekundenzeiger, so wie du ihn haben willst. Die andren Zeiger dann analog machen.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|