- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
public class Main extends JFrame{
static int a=100;
BufferedImage offscreen = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
static double p1[][]={{-a},{0},{a}};
static double p2[][]={{0},{-a},{a}};
static double p3[][]={{a},{-a},{a}};
static double p4[][]={{a},{a},{a}};
static double p5[][]={{-a},{a},{a}};
static double p6[][]={{-a},{0},{-a}};
static double p7[][]={{0},{-a},{-a}};
static double p8[][]={{a},{-a},{-a}};
static double p9[][]={{a},{a},{-a}};
static double p10[][]={{-a},{a},{-a}};
static double mas[][][]=new double[10][][];
public static void main(String[] args) {
Main mf=new Main();
mf.setVisible(true);
mf.setSize(800,800);
mf.setDefaultCloseOperation(EXIT_ON_CLOSE);
Matrix P1=new Matrix(p1);
Matrix P2=new Matrix(p2);
Matrix P3=new Matrix(p3);
Matrix P4=new Matrix(p4);
Matrix P5=new Matrix(p5);
Matrix P6=new Matrix(p6);
Matrix P7=new Matrix(p7);
Matrix P8=new Matrix(p8);
Matrix P9=new Matrix(p9);
Matrix P10=new Matrix(p10);
double a=0;
while(true){
Matrix ox=new OX(a);
Matrix oy=new OY(a);
Matrix oz=new OZ(a);
Matrix m=ox.multiplication(oy.multiplication(oz));
mas[0]=m.multiplication(P1).getData();
mas[1]=m.multiplication(P2).getData();
mas[2]=m.multiplication(P3).getData();
mas[3]=m.multiplication(P4).getData();
mas[4]=m.multiplication(P5).getData();
mas[5]=m.multiplication(P6).getData();
mas[6]=m.multiplication(P7).getData();
mas[7]=m.multiplication(P8).getData();
mas[8]=m.multiplication(P9).getData();
mas[9]=m.multiplication(P10).getData();
a+=0.06;
//a=0;
mf.repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void paint(Graphics g){
super.paint(g);
this.display(mas);
}
public void display(double m[][][]){
Graphics g= this.getGraphics();
g.setColor(Color.BLACK);
for(int i=0;i<m.length;i++){
m[i][0][0]+=300;
m[i][1][0]+=300;
}
g.drawLine((int)m[0][0][0],(int)m[0][1][0],(int)m[1][0][0],(int)m[1][1][0]);
g.drawLine((int)m[1][0][0],(int)m[1][1][0],(int)m[2][0][0],(int)m[2][1][0]);
g.drawLine((int)m[2][0][0],(int)m[2][1][0],(int)m[3][0][0],(int)m[3][1][0]);
g.drawLine((int)m[3][0][0],(int)m[3][1][0],(int)m[4][0][0],(int)m[4][1][0]);
g.drawLine((int)m[4][0][0],(int)m[4][1][0],(int)m[0][0][0],(int)m[0][1][0]);
g.drawLine((int)m[5][0][0],(int)m[5][1][0],(int)m[6][0][0],(int)m[6][1][0]);
g.drawLine((int)m[6][0][0],(int)m[6][1][0],(int)m[7][0][0],(int)m[7][1][0]);
g.drawLine((int)m[7][0][0],(int)m[7][1][0],(int)m[8][0][0],(int)m[8][1][0]);
g.drawLine((int)m[8][0][0],(int)m[8][1][0],(int)m[9][0][0],(int)m[9][1][0]);
g.drawLine((int)m[9][0][0],(int)m[9][1][0],(int)m[5][0][0],(int)m[5][1][0]);
g.drawLine((int)m[0][0][0],(int)m[0][1][0],(int)m[5][0][0],(int)m[5][1][0]);
g.drawLine((int)m[1][0][0],(int)m[1][1][0],(int)m[6][0][0],(int)m[6][1][0]);
g.drawLine((int)m[2][0][0],(int)m[2][1][0],(int)m[7][0][0],(int)m[7][1][0]);
g.drawLine((int)m[3][0][0],(int)m[3][1][0],(int)m[8][0][0],(int)m[8][1][0]);
g.drawLine((int)m[4][0][0],(int)m[4][1][0],(int)m[9][0][0],(int)m[9][1][0]);
Graphics g2 = offscreen.getGraphics();
g2.setColor(Color.WHITE);
g2.fillRect(0, 0, getWidth(), getHeight());
g2.setColor(Color.BLUE);
g2.fillRect(0, 0, 100, 100);
g.drawImage(offscreen, 0, 0, null);
}
}
Говнолаба по предмету "компьютерная графика".
Задача: нарисовать куб с усеченным углом, повернутый на произвольный угол вокруг трех осей (OX, OY, OZ).
Вот как эту задачу решает мой однокурсник.
Вместо того, чтобы использовать одну матрицу поворота, он создает 10 матриц для каждой из 10 точек...
Впрочем, код лучше расскажет...