rotate.java

来自「Java 入门书的源码」· Java 代码 · 共 62 行

JAVA
62
字号
//Copyright (c) 1998, Arthur Gittleman
//This example is provided WITHOUT ANY WARRANTY either expressed or implied.

/* Displays a triangle which the user can
 * rotate counterclockwise by hitting the
 * B key, and clockwise by hitting the F key.
 */
 
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class Rotate extends Applet 
                implements KeyListener {
  
  private int [] xcoord = {50,100,150};
  private int [] ycoord = {100,50,100};
  private Polygon p = new Polygon(xcoord,ycoord,3);
  public static final double PCOS = Math.cos(Math.PI/60);
  public static final double NCOS = Math.cos(-Math.PI/60);
  public static final double PSIN = Math.sin(Math.PI/60);
  public static final double NSIN = Math.sin(-Math.PI/60);
  public static final double BIGPCOS = Math.cos(Math.PI/6);
  public static final double BIGNCOS = Math.cos(-Math.PI/6);
  public static final double BIGPSIN = Math.sin(Math.PI/6);
  public static final double BIGNSIN = Math.sin(-Math.PI/6);
  private int rotx = 100;  // x-coordinate of the center
  private int roty = 75;   // y-coordinate of the center 
   
  public void init() {
    addKeyListener(this);
    requestFocus();
  }
  public void paint(Graphics g) {
   g.fillPolygon(p);
  }

  public void keyTyped(KeyEvent event) {
    char key = event.getKeyChar();
    double C;
    double S;
    switch(key) {
      case 'b' : C = NCOS; S = NSIN; break;
      case 'f' : C = PCOS; S = PSIN; break;
      case 'B' : C = BIGNCOS; S = BIGNSIN; break;
      case 'F' : C = BIGPCOS; S = BIGPSIN; break;
      default  : return;   
    }
    p.translate(-rotx,-roty);
    for (int i=0; i<p.npoints; i++) {
      int x = p.xpoints[i];
      int y = p.ypoints[i];
      p.xpoints[i] = (int)Math.round(x*C - y*S);
      p.ypoints[i] = (int)Math.round(x*S + y*C);
    }
    p.translate(rotx,roty);
    repaint();
  }
  public void keyReleased(KeyEvent event) { }
  public void keyPressed(KeyEvent event) { }
}   

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?