No, è perché si è usato il drawLine, che disegna una linea che parte dall'asse orizzontale della sinusoide verso l'alto o il basso a seconda del valore istantaneo.Originariamente inviato da battax
- l'area tra la sinusoide e l'asse è "colorata" (dipende dal metodo paintComponent?)
La formula che hai postato all'inizio è:Originariamente inviato da battax
- non riesco comunque ad inserirci la mia formula perché se x/COSTANTE è il numero di pixel "occupati" da un ciclo completo, come faccio ad inserire la formula senza modificare soltanto l'ampiezza?
In poche parole il valore dell'altezza y deve essere determinato dalla mia formula, mentre x deve essere semplicemente incrementato! A parole è semplice, il problema è farlo!!!
Math.sin (INPUT/23*2*Math.Pi)
Immagino che quel INPUT sia il valore intero che si incrementa man mano di 1 unità, giusto? In pratica può essere la coordinata x all'interno del componente. Tra l'altro, se INPUT è un valore intero o lo converti prima a double oppure quel 23 lo devi rendere double, altrimenti quella divisione è intera e non sortisce il risultato che vorresti.
Quindi la tua formula dovrebbe essere:
Dove nel ciclo for farai andare la x da un certo valore ad un altro valore incrementando di 1 e dove base è la coordinata y dell'asse della sinusoide e ampiezza è il valore che specifica l'altezza di una mezza sinusoide.codice:int x; int y; for (x= ........) { y = (int) (base + ampiezza * Math.sin (x / 23.0 * 2 * Math.PI)); .... disegna il punto .... }
Se vogliamo fare i fini, nei componenti la coordinata y si incrementa verso il basso, quindi per fare le cose come si deve si dovrebbe fare base - ..... cioè se la sinusoide è positiva, deve andare verso l'alto del componente.
È più chiaro ora? C'è qualcosa su cui hai dei dubbi?