Untitled
unknown
java
4 years ago
3.3 kB
3
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...