- import java.awt.*;
- import java.awt.event.*;
- import java.applet.*;
-
- public class appli3d extends Applet implements AdjustmentListener {
-
- static final int N=150, X=0, Y=1, Z=2;
-
- int initial=0, visible=1, min=0, max=200;
- Scrollbar sba, sbb;
- double[][] points;
- double alpha, beta;
-
- public void init() {
- points=new double[N][3];
-
- for (int i=0; i<N; i++) {
- points[i][Y]=i*160.0/N-80.0;
- double r=80-i*80.0/N;
- double a=i*2*Math.PI/8;
- points[i][X]=Math.cos(a)*r;
- points[i][Z]=Math.sin(a)*r;
- }
-
- setLayout(new BorderLayout());
-
- sba=new Scrollbar(Scrollbar.VERTICAL, initial, visible, min, max);
- add(sba, BorderLayout.WEST);
- sba.addAdjustmentListener(this);
-
- sbb=new Scrollbar(Scrollbar.HORIZONTAL, initial, visible, min, max);
- add(sbb, BorderLayout.SOUTH);
- sbb.addAdjustmentListener(this);
-
- }
-
- public void paint(Graphics g) {
- double x,y,z;
- int xp=0, yp=0;
-
- g.setColor(Color.red);
- for (int i=0;i<N;i++) {
- x=points[i][X]*Math.cos(alpha)-points[i][Y]*Math.sin(alpha);
- y=points[i][X]*Math.sin(alpha)+points[i][Y]*Math.cos(alpha);
- z=points[i][Z];
-
- x=x*Math.cos(beta)-z*Math.sin(beta);
- z=x*Math.sin(beta)+z*Math.cos(beta);
-
- if (i>0) g.drawLine(xp,yp,(int)x+150,(int)y+150);
- xp=(int)x+150; yp=(int)y+150;
- }
- }
-
- public void adjustmentValueChanged(AdjustmentEvent e) {
- if (e.getSource()==sba) alpha=e.getValue()*2*Math.PI/100;
- if (e.getSource()==sbb) beta=e.getValue()*2*Math.PI/100;
- repaint();
- }
-
- }
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class appli3d extends Applet implements AdjustmentListener {
static final int N=150, X=0, Y=1, Z=2;
int initial=0, visible=1, min=0, max=200;
Scrollbar sba, sbb;
double[][] points;
double alpha, beta;
public void init() {
points=new double[N][3];
for (int i=0; i<N; i++) {
points[i][Y]=i*160.0/N-80.0;
double r=80-i*80.0/N;
double a=i*2*Math.PI/8;
points[i][X]=Math.cos(a)*r;
points[i][Z]=Math.sin(a)*r;
}
setLayout(new BorderLayout());
sba=new Scrollbar(Scrollbar.VERTICAL, initial, visible, min, max);
add(sba, BorderLayout.WEST);
sba.addAdjustmentListener(this);
sbb=new Scrollbar(Scrollbar.HORIZONTAL, initial, visible, min, max);
add(sbb, BorderLayout.SOUTH);
sbb.addAdjustmentListener(this);
}
public void paint(Graphics g) {
double x,y,z;
int xp=0, yp=0;
g.setColor(Color.red);
for (int i=0;i<N;i++) {
x=points[i][X]*Math.cos(alpha)-points[i][Y]*Math.sin(alpha);
y=points[i][X]*Math.sin(alpha)+points[i][Y]*Math.cos(alpha);
z=points[i][Z];
x=x*Math.cos(beta)-z*Math.sin(beta);
z=x*Math.sin(beta)+z*Math.cos(beta);
if (i>0) g.drawLine(xp,yp,(int)x+150,(int)y+150);
xp=(int)x+150; yp=(int)y+150;
}
}
public void adjustmentValueChanged(AdjustmentEvent e) {
if (e.getSource()==sba) alpha=e.getValue()*2*Math.PI/100;
if (e.getSource()==sbb) beta=e.getValue()*2*Math.PI/100;
repaint();
}
}