import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class Maatriks4a extends Applet implements AdjustmentListener{ Scrollbar nurgasb=new Scrollbar(Scrollbar.HORIZONTAL, 314, 10, 0, 628); Maatriks muutus; Maatriks asukoht=Maatriks.XYZ(30, 10, 1); Maatriks keermekeskus=Maatriks.XYZ(50, 30, 1); int keskx=150, kesky=150; public Maatriks4a(){ Panel p1=new Panel(new GridLayout(1, 2)); p1.add(new Label("Nurk:")); p1.add(nurgasb); nurgasb.addAdjustmentListener(this); setLayout(new BorderLayout()); add(p1, BorderLayout.SOUTH); addMouseListener( new MouseAdapter(){ public void mousePressed(MouseEvent e){ keermekeskus=Maatriks.XYZ( e.getX()-keskx, -(e.getY()-kesky), 1 ); arvutaMuutus(); } } ); arvutaMuutus(); } void arvutaMuutus(){ double nurk=(nurgasb.getValue()-314)/100.0; Maatriks nurgam=new Maatriks( Math.cos(nurk), Math.sin(nurk), 0, -Math.sin(nurk), Math.cos(nurk), 0, 0, 0, 1 ); Maatriks keskelenihe=new Maatriks( 1, 0, 0, 0, 1, 0, -keermekeskus.X(), -keermekeskus.Y(), 1 ); Maatriks paikanihe=new Maatriks( 1, 0, 0, 0, 1, 0, keermekeskus.X(), keermekeskus.Y(), 1 ); muutus=keskelenihe.korruta(nurgam).korruta(paikanihe); repaint(); } public void joonistaTeljed(Graphics g){ g.drawLine(keskx, 0, keskx, 2*kesky); g.drawLine(0, kesky, 2*keskx, kesky); } public void joonistaKujund(Graphics g, int kx, int ky){ g.drawOval(keskx+kx-5, kesky-ky-5, 10, 10); } public void paint(Graphics g){ joonistaTeljed(g); joonistaKujund(g, asukoht.X(), asukoht.Y()); Maatriks uuskoht=asukoht.korruta(muutus); g.setColor(Color.blue); joonistaKujund(g, uuskoht.X(), uuskoht.Y()); g.setColor(Color.green); joonistaKujund(g, keermekeskus.X(), keermekeskus.Y()); } public void adjustmentValueChanged(AdjustmentEvent e){ arvutaMuutus(); } public static void main(String argumendid[]){ Frame f=new Frame(); f.add(new Maatriks4a()); f.setSize(300, 300); f.setVisible(true); } }