Newsgroup: it.comp.lang.visual-basic
Titolo: Visualizzare le FASI LUNARI CON IL "METODO CIRCLE". Aiutoooo !!!!

Vorrei visualizzare i cicli completi delle fasi lunari non con le solite
classiche immagini BMP, ma utilizzando il Metodo Circle o qualcos'altro.
Con questo sistema si potrebbe cosě avere una precisione maggiore nella
visualizzazione dell'avanzamento delle fasi. Infatti, utilizzando il
sistema di visualizzare le fasi con le immagini BMP, normalmente se ne
mettono circa una dozzina.
Con il metodo Circle invece, si potrebbe selezionare a piacere il
quantitativo di intervalli utilizzabili.
Avete qualche idea nel progettare questo codice tenendo presente che a 0
corrisponde Luna Nuova e a 1 la Luna Piena ??
Salutoni
Renato

 
Scusa ma mettendo su carta il problema mi e' venuto un dubbio.
la fase lunare dovrebbe essere
0 luna nuova
. si forma la fetta luminosa da sinistra verso destra (gobba a ponente)
1 luna piena
. il disco viene oscurato da sinistra verso destra (gobba a levante)
?  luna nuova e si ritorna a zero.
Il sistema 0-1 non prevede la seconda fase (quella da piena a nuova), e
non e' corretto tornare indietro da 1 a 0....
In attesa di chiarimenti studio il problema con gli angoli da 0 a 360.
Ciao

Scusatemi, ecco la correzione della c.....a che ho scritto.
tra 0.00 e 0.24999: primo quarto
tra 0.25 e 0.49999: luna piena
tra 0.50 e 0.74999: ultimo quarto
tra 0.75 e 0.99999: luna nuova
Queste sono i valori esatti per la visualizzazione delle fasi.
Renato.
lore...@galactica.it
 ha scritto:


 
lore...@galactica.it
 ha scritto:
Prova questo: utilizza i gradi, ma basta dividere "a" per 360.....
Crea una picture box di nome "picluna" e setta l'autoredraw=true per non
vedere la fase di disegno.
Ciao
pi = 3.1415 'pigreco
x = 2500
y = 2500
r = 1000
For fase = 0 To 360 Step 10
a = fase Mod 360
t# = Timer
While Timer < t# + 0.1
Wend
'-----------inizio disegno
PicLuna.FillStyle = vbFSSolid
If a >= 0 And a < 90 Then
PicLuna.FillColor = RGB(255, 255, 255)
PicLuna.Circle (x, y), r, PicLuna.FillColor, , , 1
PicLuna.FillColor = RGB(0, 0, 0)
PicLuna.Circle (x, y), r, PicLuna.FillColor, -pi / 2 * 3, -pi / 2, 1
k = 1 - a / 90
If k <> 0 Then PicLuna.Circle (x, y), r, PicLuna.FillColor, , , 1 / k
End If
If a >= 90 And a < 180 Then
PicLuna.FillColor = RGB(0, 0, 0)
PicLuna.Circle (x, y), r, PicLuna.FillColor, , , 1
PicLuna.FillColor = RGB(255, 255, 255)
PicLuna.Circle (x, y), r, PicLuna.FillColor, -pi / 2, -pi / 2 * 3, 1
k = (a - 90) / 90
If k <> 0 Then PicLuna.Circle (x, y), r, PicLuna.FillColor, , , 1 / k
End If
If a >= 180 And a < 270 Then
PicLuna.FillColor = RGB(0, 0, 0)
PicLuna.Circle (x, y), r, PicLuna.FillColor, , , 1
PicLuna.FillColor = RGB(255, 255, 255)
PicLuna.Circle (x, y), r, PicLuna.FillColor, -pi / 2 * 3, -pi / 2, 1
k = 1 - (a - 180) / 90
If k <> 0 Then PicLuna.Circle (x, y), r, PicLuna.FillColor, , , 1 / k
End If
If a >= 270 And a < 360 Then
PicLuna.FillColor = RGB(255, 255, 255)
PicLuna.Circle (x, y), r, PicLuna.FillColor, , , 1
PicLuna.FillColor = RGB(0, 0, 0)
PicLuna.Circle (x, y), r, PicLuna.FillColor, -pi / 2, -pi / 2 * 3, 1
k = (a - 270) / 90
If k <> 0 Then PicLuna.Circle (x, y), r, PicLuna.FillColor, , , 1 / k
End If
'------------- fine disegno
'.........se vuoi anche il contorno
PicLuna.FillStyle = vbFSTransparent
PicLuna.Circle (x, y), r, 0, , , 1
'..............................
PicLuna.Refresh
Next
Exit Sub

...


 
Ciao Roberto,
Riesci a mandarmi un progettino con questa funzione? Per il sito comune.
(includici anche i (C) del caso)
Ciao,
-- 
Hi, Ciao
Ettore                 By -MES-
http://freeweb.aspide.it/freeweb/ilmes
Il sito comune di programmatori VB
http://members.xoom.com/it_lang_vb