/** *Selle programmiga saab demonstreerida, kuidas toimub *fotoaparaadi objektiivi abil terava kujutise tekitamine *Arendamisel-----(valemid kiirte käiguks aparaadi sees, ebaterav kujutis, * -----õige "reageerimine ") * *@author Herki Sula , Kalle Tabur ,Mirjam Saan *@since JDK1.3 */ import java.awt.*; import java.awt.Frame; import java.net.URL; import java.awt.event.*; public class Pilt3 extends Frame{ static int x1=150,y1=150,x2=150,a1=82,b1=102,a2=362,b2=342,c1=590,c2=590,ka11=0,ka21=0,ka12=0,ka22=0,toke;//toke tõkestab lõõtsa ja läätse liikumist kui =1 static Pilt3 ise; public Pilt3(){ ise=this; } Image objekt=Toolkit.getDefaultToolkit().getImage("objekt.gif"); //Image lootsik=Toolkit.getDefaultToolkit().getImage("lootsik.gif"); Image lens1=Toolkit.getDefaultToolkit().getImage("lens1.gif"); Image aparaat1=Toolkit.getDefaultToolkit().getImage("aparaat1.gif"); Image taust; public void paint(Graphics g0){ if(taust==null)taust=createImage(800, 600); g0.drawImage(taust,0,0,this); Graphics g=taust.getGraphics(); g.setColor(new Color(200,200,255)); g.fillRect(0,0,800,600); g.drawImage(aparaat1,440,51,350,337,ise); // g.drawImage(lootsik,c1-4*ka11-4*ka12-50,80,c1-(c1-4*ka11-4*ka12),280,ise); g.drawImage(lens1,c1-4*ka11-4*ka12-38,80,75,285,ise); //g.drawImage(lens1,400,80,50,300,ise);//ise kontrollib //lens1ga on jama ei näita kohe, tuleb midagi liigutada g.drawImage(objekt,x1-10,150,10,120,ise); g.setColor(new Color(255,255,0)); ///objektist g.drawLine(x1,150,c1-4*ka11-4*ka12,150); g.drawLine(x1,270,c1-4*ka11-4*ka12,270); ///läätsest g.drawLine(c1-4*ka11-4*ka12,150,c1-4*ka11-4*ka12+100/*720-(int)(x2/4)*/,210);//need 2 algavad peale läätse g.drawLine(c1-4*ka11-4*ka12,270,c1-4*ka11-4*ka12+100,210); ///fookusest g.drawLine(c1-4*ka11-4*ka12+100,210,c1-4*ka11-4*ka12+200,150);//need 2 algavad peale läätse g.drawLine(c1-4*ka11-4*ka12+100,210,c1-4*ka11-4*ka12+200,270); ///objektist tsentrisse g.drawLine(x1,150,c1-4*ka11-4*ka12,210); g.drawLine(x1,270,c1-4*ka11-4*ka12,210); ///keskpunktist edasi g.drawLine(c1-4*ka11-4*ka12,210,c1-4*ka11-4*ka12+200,150-4*ka11-4*ka12); g.drawLine(c1-4*ka11-4*ka12,210,c1-4*ka11-4*ka12+200,270+4*ka11+4*ka12); g.setColor(new Color(0,0,30)); g.drawString("F",c1-4*ka11-4*ka12+100,210); g.drawString("Hea kasutaja, sa saad küünlast hiirega kinni võtta ja seda lohistada.",100,580); g.drawString(""+x1,x1-10,50); System.out.println("Joonistab"); //lõõtsandus ülemine algab if(toke!=0){ g.drawLine(c1,a1,c1-ka11,b1-ka11); g.drawLine(c1-ka11,b1-ka11,c1-2*ka11,a1); ka11=ka11+1; ka12=ka11-1; g.drawLine(c1-ka11-ka12,a1,c1-2*ka11-ka12,b1-ka11); g.drawLine(c1-2*ka11-ka12,b1-ka11,c1-2*ka11-2*ka12,a1); ka12=ka11-1; //veel üks komplekt lõõtsa g.drawLine(c1-2*ka11-2*ka12,a1,c1-3*ka11-2*ka12,b1-ka11); g.drawLine(c1-3*ka11-2*ka12,b1-ka11,c1-3*ka11-3*ka12,a1); ka12=ka11-1; //veel üks komplekt lõõtsa g.drawLine(c1-3*ka11-3*ka12,a1,c1-4*ka11-3*ka12,b1-ka11); g.drawLine(c1-4*ka11-3*ka12,b1-ka11,c1-4*ka11-4*ka12,a1); //lõõtsandus alumine algab g.drawLine(c2,a2,c2-ka21,b2+ka21); g.drawLine(c2-ka21,b2+ka21,c2-2*ka21,a2); ka21=ka21+1; ka22=ka21-1; g.drawLine(c2-ka21-ka22,a2,c2-2*ka21-ka22,b2+ka21); g.drawLine(c2-2*ka21-ka22,b2+ka21,c2-2*ka21-2*ka22,a2); ka22=ka21-1; //veel üks komplekt lõõtsa g.drawLine(c2-2*ka21-2*ka22,a2,c2-3*ka21-2*ka22,b2+ka21); g.drawLine(c2-3*ka21-2*ka22,b2+ka21,c2-3*ka21-3*ka22,a2); ka22=ka21-1; //veel üks komplekt lõõtsa g.drawLine(c2-3*ka21-3*ka22,a2,c2-4*ka21-3*ka22,b2+ka21); g.drawLine(c2-4*ka21-3*ka22,b2+ka21,c2-4*ka21-4*ka22,a2); } //tõkke lõpp else{ ka11=ka11-1; ka21=ka21-1; g.drawLine(c1,a1,c1-ka11,b1-ka11); g.drawLine(c1-ka11,b1-ka11,c1-2*ka11,a1); ka11=ka11+1; ka12=ka11-1; g.drawLine(c1-ka11-ka12,a1,c1-2*ka11-ka12,b1-ka11); g.drawLine(c1-2*ka11-ka12,b1-ka11,c1-2*ka11-2*ka12,a1); ka12=ka11-1; //veel üks komplekt lõõtsa g.drawLine(c1-2*ka11-2*ka12,a1,c1-3*ka11-2*ka12,b1-ka11); g.drawLine(c1-3*ka11-2*ka12,b1-ka11,c1-3*ka11-3*ka12,a1); ka12=ka11-1; //veel üks komplekt lõõtsa g.drawLine(c1-3*ka11-3*ka12,a1,c1-4*ka11-3*ka12,b1-ka11); g.drawLine(c1-4*ka11-3*ka12,b1-ka11,c1-4*ka11-4*ka12,a1); //lõõtsandus alumine algab g.drawLine(c2,a2,c2-ka21,b2+ka21); g.drawLine(c2-ka21,b2+ka21,c2-2*ka21,a2); ka21=ka21+1; ka22=ka21-1; g.drawLine(c2-ka21-ka22,a2,c2-2*ka21-ka22,b2+ka21); g.drawLine(c2-2*ka21-ka22,b2+ka21,c2-2*ka21-2*ka22,a2); ka22=ka21-1; //veel üks komplekt lõõtsa g.drawLine(c2-2*ka21-2*ka22,a2,c2-3*ka21-2*ka22,b2+ka21); g.drawLine(c2-3*ka21-2*ka22,b2+ka21,c2-3*ka21-3*ka22,a2); ka22=ka21-1; //veel üks komplekt lõõtsa g.drawLine(c2-3*ka21-3*ka22,a2,c2-4*ka21-3*ka22,b2+ka21); g.drawLine(c2-4*ka21-3*ka22,b2+ka21,c2-4*ka21-4*ka22,a2); } } public void update(Graphics g){ paint(g);//äkki on siin iva } public static void main(String args[]){ Image ikoon=Toolkit.getDefaultToolkit().getImage("optik.gif"); Pilt3 raam=new Pilt3(); raam.setSize(800, 600); raam.setLocation(50,50); raam.setIconImage(ikoon); raam.setBackground(new Color(200,200,255)); raam.addMouseMotionListener(new Hkuular()); raam.addMouseListener(new Hkuular()); raam.show(); raam.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } } class Hkuular extends MouseMotionAdapter implements MouseListener { public void mousePressed(MouseEvent e){} public void mouseDragged(MouseEvent e){ Pilt3.toke=0; Pilt3.x1=e.getX(); Pilt3.y1=e.getY(); Pilt3.x2=Pilt3.x1; if(Pilt3.x1>410){ Pilt3.x1=410; Pilt3.x2=Pilt3.x1; } if(Pilt3.x1<20){ Pilt3.x1=20; Pilt3.x2=Pilt3.x1; } System.out.println(Pilt3.x1+" "+Pilt3.y1+"/n"+(722-(int)(Pilt3.x1/4))); Pilt3.ise.repaint(); } public void mouseReleased(MouseEvent e){ //Lõõtsa liigutamise tsüklid /* Pilt3.a1=82;Pilt3.b1=102;Pilt3.a2=362;Pilt3.b2=342;Pilt3.c1=450; Pilt3.c2=450;Pilt3.ka11=0;Pilt3.ka12=0;Pilt3.ka21=0;Pilt3.ka22=0;*/ for(int i=0;i<50;i++){ int edasi=1; if(i>25){edasi=0; } if((Pilt3.c1-4*Pilt3.ka11-4*Pilt3.ka12)>460&&edasi==1){ Pilt3.ise.paint(Pilt3.ise.getGraphics()); Pilt3.c1=Pilt3.c1+1; Pilt3.c2=Pilt3.c2+1; Pilt3.ka11=Pilt3.ka11+1; Pilt3.ka21=Pilt3.ka21+1; Pilt3.x2=3*i; // Pilt3.x1=20; } if((Pilt3.c1-4*Pilt3.ka11-4*Pilt3.ka12)<592&&edasi==0){ Pilt3.ise.paint(Pilt3.ise.getGraphics()); Pilt3.c1=Pilt3.c1-1; Pilt3.c2=Pilt3.c2-1; Pilt3.ka11=Pilt3.ka11-1; Pilt3.ka21=Pilt3.ka21-1; Pilt3.x2=3*i; // Pilt3.x1=20; } // System.out.println("/nhello"+Pilt3.x2); try{ //Thread.sleep(50); } catch(Exception r){ System.out.println("Problem: "+r); } } } public void mouseMoved(MouseEvent e){} public void mouseClicked(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseEntered(MouseEvent e){} }