Untitled
unknown
java
5 years ago
3.3 kB
6
Indexable
initialize();
vram = new V_RAM(100,100);
viewVec = new Point3D(0,0,1);
GraphicsOperations.fillBrightness(vram,255);
points = PointGenerator.generateFan3DPoints(4,0);
points.addAll(PointGenerator.generateFan3DPoints(4,Math.sqrt(2)));
/*
triangles = new ArrayList<>();
triangles.addAll(PointGenerator.generateFanTriangles(points.size()/2,points.size()/2));
triangles.addAll(PointGenerator.generateFanTriangles(0, points.size()/2));
triangles.addAll(PointGenerator.generateStripTriangles(0,points.size(),true));
*/
triangles = PointGenerator.generateCubeTriangles();
double xMin = points.get(0).data[0];
double xMax = xMin;
double yMin = points.get(0).data[1];
double yMax = yMin;
double zMin = points.get(0).data[2];
double zMax = zMin;
for (int i = 1; i < points.size() ; i++) {
Point3D point = points.get(i);
xMin = Math.min(xMin,point.data[0]);
xMax = Math.max(xMax,point.data[0]);
yMin = Math.min(yMin,point.data[1]);
yMax = Math.max(yMax,point.data[1]);
zMin = Math.min(zMin,point.data[2]);
zMax = Math.max(zMax,point.data[2]);
}
Matrix3D t1 = Matrix3D.createTranslationMatrix3D(-(xMin+xMax)/2.0,-(yMin+yMax)/2.0,-(zMin+zMax)/2.0);
Matrix3D s1 = Matrix3D.createScaleMatrix3D(2/Math.max(Math.max(xMax-xMin,yMax-yMin),zMax-zMin));
q = Matrix3D.multiply(s1,t1);
Matrix3D s2 = Matrix3D.createScaleMatrix3D(Math.min(vram.getWidth(),vram.getHeight())/2.0);
Matrix3D t2 = Matrix3D.createTranslationMatrix3D(vram.getWidth()/2.0,vram.getHeight()/2.0,0);
k = Matrix3D.multiply(t2,s2);
Matrix3D p = Matrix3D.createOrthogonalMatrix();
k = Matrix3D.multiply(k,p);
r_X = Matrix3D.createRotationMatrix3D_YZ(2);
r_y_plus = Matrix3D.createRotationMatrix3D_ZX(2);
r_y_minus = Matrix3D.createRotationMatrix3D_ZX(-2);
r_Z = Matrix3D.createRotationMatrix3D_XY(2);
tX_plus = Matrix3D.createTranslationMatrix3D(0.01,0,0);
tX_minus = Matrix3D.createTranslationMatrix3D(-0.01,0,0);
tY_plus = Matrix3D.createTranslationMatrix3D(0,0.01,0);
tY_minus = Matrix3D.createTranslationMatrix3D(0,-0.01,0);
s_bigger = Matrix3D.createScaleMatrix3D(1.01);
s_smaller = Matrix3D.createScaleMatrix3D(0.99);
Point3D[] drawPoints = new Point3D[points.size()];
for (int i = 0; i < points.size(); i++) {
Point3D point = points.get(i).applyMatrix(Matrix3D.multiply(k,q));
point.data[0] /= point.data[3];
point.data[1] /= point.data[3];
point.data[2] /= point.data[3];
drawPoints[i] = point;
}
for (Triangle3D tr : triangles) {
tr.setVisibility(drawPoints,viewVec);
if (!tr.visible){
GraphicsOperations.drawTriangle(vram,tr,drawPoints,240);
}
}
for (Triangle3D tr : triangles) {
if (tr.visible){
GraphicsOperations.drawTriangle(vram,tr,drawPoints,0);
}
}
imagePanel.setImage(vram.getImage());Editor is loading...