Reflection Symmetry

Reflection Symmetry

thingiverse

Reflection Symmetry example using ShapeJS Instructions Goto shapejs.shapeways.,com and us this script // // Example of generalized kaleidoscope. The idea is similar to traditional kaleidoscope, // which consists of 3 flat mirrors with dihedral angles 60 degree. One can place an arbitrary objects inside of // such kaleidoscope and reflections in the mirrors create infinite repeating pattern. // Here in addition to usual flat mirrors we use spherical mirrors. "Reflections" in spherical mirrors are // inversion in the spheres. // If dihedral angles between spheres and planes is integer submultiple of the half turn (PI or 180 degrees) // the reflections in such mirros form regular pattern. // The type of pattern created by such kaleidoscope can be wildly complex. // In this case we have 4 mirrors: 2 flat mirros and 2 spherical mirrors. The mirrors are placed in such a ways, that // the pattern scales down near the boundary of a disk. It resembles a tiling of 2D hyperbolic plane in Poincare disk model // with important difference that our pattern is three dimensional. // var voxelSize = 0.2*MM; function getQuad_1( r, r1, alpha){ var r2 = rr/(r1Math.cos(alpha)); var x1 = Math.sqrt(r1r1 + rr); var y2 = Math.sqrt(r2r2 + rr); var splanes = new Array(); var count = 0; splanes[count++] = new ReflectionSymmetry.getPlane(new Vector3d(0,-1,0), 0.0); splanes[count++] = new ReflectionSymmetry.getPlane(new Vector3d(-1,0,0), 0.0); splanes[count++] = new ReflectionSymmetry.getSphere(new Vector3d(x1,0,0), -r1); splanes[count++] = new ReflectionSymmetry.getSphere(new Vector3d(0,y2,0), -r2); return splanes; } function makePart_g(size, thickness){ var t = (thickness/2) 1.5; var s = size/2; //var g = createGrid(-t, t, -t, t, -s, s,voxelSize); var b = 20MM; var g = createGrid(-b,b,-b,b,-b,b,0.5*MM); var boxZ = new Box(0,0,0,thickness, thickness, size); var mm = new GridMaker(); mm.setSource(boxZ); mm.setMaxAttributeValue(255); mm.makeGrid(g); var gmm = new GridMipMap(g); gmm.setScalingType(GridMipMap.SCALING_AVERAGE); //gmm.setScalingType(GridMipMap.SCALING_MAX); return gmm; } function makePart(size, thickeness){ var union = new Union(); var boxX = new Box(0,0,0,thickeness, thickeness, size); union.add(boxX); return union; } function main(){ var a = 25MM; var voxelSize = 0.1MM; var cz = 20.0MM; var cx = 5.0MM; var cy = 5.0*MM; var part = makePart_g(30MM, 5MM); part.setTransform(new Rotation(new Vector3d(-1,1,0), 3*Math.PI/8)); var dt = new DataTransformer(); dt.setSource(part); var sym = new ReflectionSymmetry(getQuad_1(25MM, 30MM, Math.PI/3)); sym.setMaxCount(50); dt.setTransform(sym); var maker = new GridMaker(); maker.setSource(dt); var dest = createGrid(-a,a,-a,a,-a,a,voxelSize); maker.makeGrid(dest); return dest; }

Download Model from thingiverse

With this file you will be able to print Reflection Symmetry with your 3D printer. Click on the button and save the file on your computer to work, edit or customize your design. You can also find more 3D designs for printers on Reflection Symmetry.