Oppure

Loading
07/02/10 16:10
Ciao a tutti ho un problema con la contruzione di un orologio a lancette utilizzando la unit graph:
Dopo aver costruito lo scheletro dell'orologio semplicemente con Circle(xC, yC, r), ho pensato di vedere le lancette (per adesso solo quelle dei secondi) semplicemente come delle rette per due punti: un punto è fisso ed è il centro della circonferenza dell'orologio, mentre l'altro è mobile ogni secondo. Il problema che mi sono incartato nell'individuare questo secondo punto.
Parto dalle 12.00 cioè quando ho la lancetta esattamente verticale. Ragionando matematicamente la lancetta si deve muore di 6° ogni secondo (infatto se 360° vengono persorsi in 60 secondi, allora in un secondo verranno percorsi 6°;). Matematicamente quindi il nostro punto al secondo 2 sarà dato dal seno di 6° con le opportune operazioni sulle coordinate. Solo che non posso poi specificare delle coordinate real per la funzione LINE(X1,Y1,X2,Y2).
Come posso fare a conciliare i real con le coordinate? Avete dei consigli?
Grazie comunque
Saluti
07/02/10 17:53
Poggi Marco
Ciao!

Il tuo ragionamento è giusto,ma tieni presente che il senso di rotazione delle lancette dell' orologio è appunto orario, mentre quello delle funzioni trigonometriche è anti orario.

Quindi le coordinate del secondo punto saranno:

x=RaggioLancetta*coseno(90°-alfa)
y=RaggioLancetta*seno(90°-alfa)

(Ricorda inoltre che, per le funzioni trigonometriche, devi usare gli angoli espressi in radianti).

Per quanto riguarda la trasformazione delle variabili real in integer, basta usare la funzione "round( <VaribileReal> );"

Esempio di utilizzo:

program EsempioRound;

 uses crt;

begin
  Writeln(1.4, ' rounds to ', Round(1.4));
  Writeln(1.5, ' rounds to ', Round(1.5));
  Writeln(-1.4, ' rounds to ', Round(-1.4));
  Writeln(-1.5, ' rounds to ', Round(-1.5));
  readln;
end.


Io da poco ho appena pubblicato un programma simile, anche se un po macchinoso!
Tu che ne pensi?
Ultima modifica effettuata da Poggi Marco 07/02/10 19:56
aaa
08/02/10 12:42
ciao! intanto grazie mille dell'aiuto.
Ho visto il tuo programmino sul sito e non mi sembrava vero! Infatti avevo proprio ieri in mente di provare a fare questo orologio quando ho visto sul sito il tuo programma. Veramente molto bello anche se come dicevi un po' macchinoso almeno per me. Infatti quando ho visto la struttura del codice sinceramente mi sono perso. Infatti non ho conoscenze approfondite di pascal quindi sono ancora ancorato alle operazioni semplici come punti rette e cerchi.
Essendo in tema, come faccio a richiamare in pascal l'orario del computer?
Grazie mille comunque.
08/02/10 20:59
Poggi Marco
Innanzitutto grazie per aver visionato il mio programma.
Ti assicuro però che non è nulla di trascendentale, scusa se lo trovi complicato, avrei dovuto commentarlo.
Per capirne di più leggi questo tutorial sulle unità in pascal: pierotofy.it/pages/guide/Guida_Pascal/Scrivere_una_libreria/.


Per quanto riguarda l' orario, basta richiamare la procedura GetTime, facente parte della libbreria dos.
Essa richiede 4 varibili (necessariamente di tipo word), nelle quali salva rispettivamente l' ora, il minuto, il secondo e nell' ultima il centesimo di secondo.

Riporto un semplice programma dimostrativo:

program EsempioOraLocale;

uses dos, crt;

var
  h, m, s, hund : Word;

function LeadingZero(w : Word) : String;
var
  s : String;
begin
  Str(w:2, s);
  LeadingZero := s;
end;

begin
  GetTime(h,m,s,hund);
  Writeln('It is now ',LeadingZero(h),':',
          LeadingZero(m),':',LeadingZero(s),
          '.',LeadingZero(hund));
  readln;
end.


Ultima modifica effettuata da Poggi Marco 11/02/10 17:48
aaa
01/03/10 21:52
Scusate l'intrusione nella discussione..ma dato che parlate di graph..avrei bisogno di sapere come avere la libreria graph in fpc..uso ubuntu 9.04..ho provato a scaricare la versione 2.4.0-2..ma purtroppo non va..la libreria è mancante..mi potete suggerire qualche alternativa o un modo per risolvere? avevo pensato di utilizzare le opengl..però sono ancora un niubbo (è da solo due mesi che nel weekend mi dedico al pascal) e quindi non credo che sia un ottima idea iniziare con qualcosa di già abbaastanza complesso..

grazie dell'aiuto
01/03/10 22:31
Poggi Marco
Davvero molto strano!
A me non è mai capitata una cosa simile.
Prova a postare qualche programma, magari l' errore è nel codice.
aaa
03/03/10 16:44
Phi
Prova a guardare il file graph.ppu è stato installato in una cartella diversa da quella dove il compilatore cerca le unit
aaa
04/03/10 1:01
Ho aggiunto i repositories di testing da Debian e con la versione 2.4.0-2 di fpc sono anche disponibili tutte le normali librerie..grazie comunque :D ..ora avrei un altro problema..ho postato qui:

pierotofy.it/pages/extras/forum/71/82764-cross_compiling/