| FunctionR2ASample.java |
1 package sample;
2
3
4 import fi.jyu.mit.graphics.*;
5 import static java.lang.Math.*;
6
7
8 /**
9 * Esimerkki 3D-pinnan piirtämisestä.
10 * Esimerkki myös miten pitää kirjoittaa, jotta samasta koodista saa
11 * helposti sekä sovelluksen että sovelman (Applet)
12 * @author vesal
13 */
14 public class FunctionR2ASample {
15
16 /**
17 * Luokka sin*cos-funktion käsittelemiseksi.
18 */
19 public static class SinCos implements FunctionR2R {
20 /**
21 * Luodaan stattinen sini-funktio kaikkien käyttöön.
22 */
23 public static final FunctionR2R sincos = new SinCos(); // NOPMD nimi saa kelvata
24
25 /**
26 * sin*cos-funktion arvo pisteessä x
27 * @param x mista arvo lasketaan
28 * @param y mista arvo lasketaan
29 * @return sin(x)*cos(y)
30 */
31 @Override
32 public double f(double x, double y) { // NOPMD, nyt f on hyva nimi
33 return sin(x)*cos(y);
34 }
35 }
36
37 /**
38 * ALutetaan paneeli niin, että alsustus kelpaa Window-luokalle ja EasyApplet-luokalle
39 * @param panel paneli joka laustetaan
40 * @return panel
41 */
42 public static SpacePanel initPanel(SpacePanel panel) {
43 panel.scale(-9,-9,9,9);
44 panel.add(new Axis(15, 15, 15));
45 panel.add(new FunctionMapR2R(SinCos.sincos,-2*PI,-2*PI,2*PI,2*PI));
46 panel.rotate(Axis.X, 50);
47 panel.rotate(Axis.Y, 20);
48 return panel;
49 }
50
51 /**
52 * Pääohjelma sovellusta varten
53 * @param args ei käytössä
54 */
55 public static void main(String[] args) {
56 Window window = new Window();
57 initPanel(window.getPanel());
58 window.showWindow();
59 // new Rotator(window,Axis.Z,5,50);
60 window.setTouchPad(true, true);
61 window.setControlButtons(true);
62
63 }
64
65 /**
66 * Applet luokka samasta asiasta. Tämä pitää ajaa
67 * applettina nimellä FunctionR2ASample$Applet
68 * TODO: Onko tuo em. oikein?
69 */
70 public static class Applet extends EasyApplet {
71 private static final long serialVersionUID = 8729837737198762878L;
72
73 /**
74 * Alustetaan Apletin yleiset tiedot luomalla
75 * "ohjainlevy" ja ohjainnappulat.
76 * @see fi.jyu.mit.graphics.EasyApplet#init()
77 */
78 @Override
79 public void init() {
80 this.setTouchPad(true, true);
81 this.setControlButtons(true);
82 initPanel(getPanel());
83 }
84 }
85
86 }
87