source: liacs/cvp/java/eyes/Ogen.java@ 36

Last change on this file since 36 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

File size: 2.0 KB
Line 
1
2import java.awt.*;
3
4public class Ogen
5 extends java.applet.Applet{
6
7 //blx holds previous x-value of of left eye, etc...
8 double blx,bly,brx,bry;
9 //new values of eyes
10 double lx=150, ly=150, rx=260, ry=150;
11
12 public boolean mouseMove(Event evt,int x,int y)
13 {
14 //move to corner of window and calc schale
15 double k = schaallengte(x-150,y-150);
16 lx = k * (double)(x-150) + 150;
17 ly = k * (double)(y-150) + 150;
18 //move to corner of window and calc scale
19 k = schaallengte(x-260,y-150);
20 rx = k * (double)(x-260) + 260;
21 ry = k * (double)(y-150) + 150;
22 repaint(); // call to update
23 return true;
24 }
25
26 //get the scale factor to make sure the eyeballs remains in the eye
27 //itself, by the concept of Inversive geometry, see:
28 //http://en.wikipedia.org/wiki/Inversive_geometry
29 public double schaallengte(int x,int y)
30 {
31 return (double)(38) / Math.sqrt((double)(x*x+y*y+1444));
32 }
33
34 public void paint(Graphics g)
35 {
36 //out black circle of eyes (solid)
37 g.setColor(Color.black);
38 g.fillOval(100,100,100,100);
39 g.fillOval(210,100,100,100);
40 //put white circle in there to make the circle non-solid
41 g.setColor(Color.white);
42 g.fillOval(104,104,92,92);
43 g.fillOval(214,104,92,92);
44 //draw eyes, calling update might be more handy
45 g.setColor(Color.black);
46 g.fillOval((int)(blx=lx-8),(int)(bly=ly-8),16,16);
47 g.fillOval((int)(brx=rx-8),(int)(bry=ry-8),16,16);
48 }
49
50 public void update(Graphics g)
51 {
52 // delete old eyes by painting them white again
53 g.setColor(Color.white);
54 g.fillOval((int)blx,(int)bly,16,16);
55 g.fillOval((int)brx,(int)bry,16,16);
56 // set new eyes, the minus 8 will make it a good center, else it
57 // will pass the border and whipe the eyeball
58 g.setColor(Color.black);
59 g.fillOval((int)(blx=lx-8),(int)(bly=ly-8),16,16);
60 g.fillOval((int)(brx=rx-8),(int)(bry=ry-8),16,16);
61 }
62}
Note: See TracBrowser for help on using the repository browser.