Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46
    si...allora ecco un esempio...
    allora dato il centro
    C(0,50)
    mi devo calcolare c per avere l'equazione
    x^2+y^2+51y+c=0
    beta=-51/2
    240=√(2601-c)
    57600=2601-c
    c=-54999

    quindi
    x^2 + y^2 + 51y - 54999 = 0
    ed ecco la funzione della semicirconferenza superiore

    y = (√(222597 - 4·x^2 ) - 51) / 2

    in teoria ho usato i parametri del telefonino che simula il mio compilatore,dove w=240 e h=291...
    però misa che ho sbagliato qualcosa durante i calcoli...ora provo a riguardarli...

    ah se può esserti utile è in questo modo che ho disegnato l'arco,con una serie di rette...
    codice:
    for (int x = 0; x < w; x += 10)
    {
    	g.drawLine(x, h, w, h - x);
    }

  2. #12
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46
    mmm...mi sono avvicinato molto alla soluzione...ma misa che in realtà non esiste infatti la pallina parte sopra l'arco,si allontana e poi si riavvicina...

  3. #13
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da oNaSsI$
    mmm...mi sono avvicinato molto alla soluzione...ma misa che in realtà non esiste infatti la pallina parte sopra l'arco,si allontana e poi si riavvicina...
    posta il codice magari riusciamo ad aiutarti meglio

  4. #14
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46
    codice:
    import javax.microedition.lcdui.*;
    import javax.microedition.midlet.*;
    import java.util.*;
    import java.lang.Math.*;
    
    public class Esempio extends MIDlet
    {
    	private Display display;      
    	private AnimationCanvas canvas; 
    	private Timer tm;            
    	private AnimateTimerTask tt;  
    
    	
      public Esempio()
      {
        display = Display.getDisplay(this);
        canvas  = new AnimationCanvas(this);
    
        tm = new Timer();
        tt = new AnimateTimerTask(canvas);
        tm.schedule(tt, 0, 100);    
      }
    
    	public void startApp()
    	{
        display.setCurrent(canvas);
    	}
    	
    	public void pauseApp() { } 
    
    	public void destroyApp(boolean unconditional)
    	{}
    } 
    
    class AnimateTimerTask extends TimerTask
    {
    	private AnimationCanvas canvas;
    
    	public AnimateTimerTask(AnimationCanvas canvas)
    	{
    		this.canvas = canvas;
    	}
    
     	public final void run()
    	{
    		
    		canvas.x_loc ++;
    		//canvas.y_loc = ;
    
    		canvas.repaint();
    	}
    }
    
    class AnimationCanvas extends Canvas implements CommandListener
    {
    	private Esempio midlet;        
    	private Command cmExit;        
    	private int 	keyFire,                
    
    	private Random random;           
    	int x_loc,                       
    		y_loc,                        
    		radius,                     
    		w,
    		h,
    		red,                        
    		green,                       
    		blue;
    
     
    	public AnimationCanvas(Esempio midlet)
    	{
    		
    		this.midlet = midlet;
    
    		random = new java.util.Random();
    			radius = 8;
    		w = getWidth();
    		h = getHeight();
    		x_loc = 0;
    		y_loc = h-radius;
    		init();
       
        cmExit = new Command("Exit", Command.EXIT, 1);
    
        keyFire =  getKeyCode(FIRE);
        keyRight = getKeyCode(RIGHT);
        keyLeft = getKeyCode(LEFT);
        
        addCommand(cmExit);
        setCommandListener(this);
      } 
    
    	protected void paint(Graphics g)
    	{
    		double app;
    	
    		g.setColor(0xffffff);
    		g.fillRect(0, 0, w, h);
    		g.setColor(0x000000);
    
    		for (int x = 0; x < w; x += 10)
    		{
    			g.drawLine(0, w - x, x, 0);
    		}
    		for (int x = 0; x < w; x += 5)
    		{
    			g.drawLine(x, h, w, h - x);
    		}
    	
    		app=(double)x_loc;
    		app=Math.sqrt(57600-(app*app))+51;
    		System.out.println("app:"+app);
    		System.out.println("app:"+app);
    		y_loc = (int)app;
    		System.out.println(w+" "+h+" "+ x_loc+" "+y_loc);
         g.setColor(red, green, blue);
        g.fillArc( x_loc, y_loc, radius, radius, 0, 360);
      }
    
      private void init()
      {
        x_loc = 1;
        y_loc = h-radius;      
        changeColor();      
      }
      
      protected void changeColor()
      {
        red = (random.nextInt() >>> 1) % 256;
        green = (random.nextInt() >>> 1) % 256;
        blue = (random.nextInt() >>> 1) % 256;
    	System.out.println(red +" "+green+" "+blue);
      }
    
      public void commandAction(Command c, Displayable d)
      {
        if (c == cmExit)
          midlet.destroyApp(true);
      }
    
       protected void keyPressed(int keyCode)
      {
        if (keyCode == keyFire)
          init();
      }
    }
    chiedo scusa per l'indentazione ma era solo una bozza...

  5. #15
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46
    prova un pò a disegnare quest'arco....
    g.drawArc(-240,-189,480,480,270,90);

  6. #16
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46
    che stupido che sono..bastava applicare questa semplice formula, che mi permette di traslare la circonferenza, per risolvere il problema....
    C(Xo,Yo)
    Y=√(r^2-(X-Xo))+Yo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.