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 + -
显示快捷键?