Stereographic projection
A simple hack using OpenSCAD.
Stereographic projection similar do this one by Henry Segerman.
Notes
- infil: 20%
- res.: 0.2mm
- Support? YES!
References
- https://en.wikipedia.org/wiki/Stereographic_projection
- http://forum.openscad.org/stereographic-projections-td20339.html
- http://forum.openscad.org/stereographic-projections-td20339.html
- https://en.wikipedia.org/wiki/Truchet_tiles
OpenSCAD code
// Author: Tiago Charters de Azevedo // Maintainer: Tiago Charters de Azevedo // Copyright (c) - 2017 Tiago Charters de Azevedo (tca@diale.org) // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3, or (at your option) // any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, // Boston, MA 02110-1301, USA. $fn=2*32; phi=(1+sqrt(5))/2; h=2; R=40; n=6; delta=.2; echo(R*(n-1)); module drawing(){ for(i=[-(n-1)/2:(n-1)/2]){ for(j=[-(n-1)/2:(n-1)/2]){ translate([(1+delta)*i*R,(1+delta)*j*R,0]){ square(.9*[R,R], center=true); // circle(R/2,center=true); }}} difference(){ square(1000*R*[1,1],center=true); square(((1+delta)*n*R+delta*R)*[1,1],center=true);}} module drawingshadow(){ for(i=[-(n-1)/2:(n-1)/2]){ for(j=[-(n-1)/2:(n-1)/2]){ translate([(1+delta)*i*R,(1+delta)*j*R,0]){ square(.9*[R,R], center=true); // circle(.9*R/2,center=true); }}}} module drawingescher(){ for(i=[-(n-1)/2:(n-1)/2]){ for(j=[-(n-1)/2:(n-1)/2]){ translate([6*i*6.8,j*R,0]){ rotate([0,0,180]){ escher();} translate([3.*6.8,2.9*8.05,0]){escher();} }}} difference(){ square(1000*R*[1,1],center=true); square(((1+delta)*n*R+delta*R)*[1,1],center=true);}} module projection(l){ linear_extrude(height=l, scale=10e-6, center=false){ children();}} module ball(r,h){ difference(){ union(){ sphere(r=r, center=true); translate([0,0,-r/2]){ cylinder(h=r,r=r*sqrt(2)/2,center=true);}} sphere(r=r-h, center=true);}} module stproj(){ render(){ difference(){ translate([0,0,R]){ ball(R,h);} projection(2*R){ drawing();} translate([0,0,2*R]){ cylinder(h=R,r=R/2,center=true); // sphere(R/2,center=true); } }}} module seeall(){ stproj(); color("red") translate([0,0,2*R]){ sphere(R/32,center=true);} %projection(2*R){ drawingshadow();}} module squaregrid(l,m){ difference(){ square([l,l],center=true); for(i=[-(m-1)/2:(m-1)/2]){ for(j=[-(m-1)/2:(m-1)/2]){ translate([i*l/m,j*l/m,0]) square([.5*l/m,.5*l/m],center=true); }}} } module grid(){ color("black") render(){ difference(){ linear_extrude(height=.1, scale=1, center=true){ square(((1+delta)*n*R+0*delta*R)*[1,1],center=true);} linear_extrude(height=10, scale=1, center=true){ for(i=[-(n-1)/2:(n-1)/2]){ for(j=[-(n-1)/2:(n-1)/2]){ translate([(1+delta)*i*R,(1+delta)*j*R,0]){ square([R,R], center=true);}}}}}}} module escher(s=.01){ polygon(s* [[-1022.58620689655, -1206.46551724138], [-527.586206896552, -1701.46551724138], [192.413793103448 , -1386.46551724138], [462.413793103448 , -1116.46551724138], [597.413793103448 , -936.46551724138 ], [687.413793103448 , -756.46551724138 ], [732.413793103448 , -621.46551724138 ], [867.413793103448 , -756.46551724138 ], [957.413793103448 , -891.46551724138 ], [1002.41379310345 , -1071.46551724138], [1047.41379310345 , -1161.46551724138], [1317.41379310345 , -1116.46551724138], [1452.41379310345 , -1026.46551724138], [1632.41379310345 , -846.46551724138 ], [1452.41379310345 , -801.465517241379], [1227.41379310345 , -711.46551724138 ], [1092.41379310345 , -576.46551724138 ], [957.413793103448 , -441.46551724138 ], [867.413793103448 , -261.46551724138 ], [642.413793103448 , 143.53448275862 ], [552.413793103448 , 368.53448275862 ], [1047.41379310345 , 908.534482758621 ], [507.413793103448 , 1448.53448275862 ], [687.413793103448 , 1718.53448275862 ], [507.413793103448 , 1673.53448275862 ], [282.413793103448 , 1583.53448275862 ], [147.413793103448 , 1583.53448275862 ], [192.413793103448 , 1358.53448275862 ], [282.413793103448 , 1223.53448275862 ], [417.413793103448 , 1088.53448275862 ], [732.413793103448 , 908.534482758621 ], [282.413793103448 , 773.53448275862 ], [-392.586206896552, 1583.53448275862 ], [-392.586206896552, 728.53448275862 ], [-752.586206896552, 638.534482758621 ], [-977.586206896552, 548.53448275862 ], [-977.586206896552, 773.53448275862 ], [-1022.58620689655, 908.534482758621 ], [-1157.58620689655, 863.53448275862 ], [-1292.58620689655, 818.53448275862 ], [-1427.58620689655, 863.53448275862 ], [-1337.58620689655, 728.53448275862 ], [-1247.58620689655, 548.53448275862 ], [-1247.58620689655, 413.534482758621 ], [-1247.58620689655, 278.53448275862 ], [-347.586206896552, 278.53448275862 ], [-1157.58620689655, -396.46551724138 ], [-1067.58620689655, -846.46551724138 ], [-887.586206896552, -576.46551724138 ], [-752.586206896552, -396.46551724138 ], [-572.586206896552, -306.46551724138 ], [-392.586206896552, -261.46551724138 ], [-347.586206896552, -486.46551724138 ], [-257.586206896552, -666.46551724138 ], [-212.586206896552, -756.46551724138 ], [-257.586206896552, -801.465517241379], [-527.586206896552, -666.46551724138 ], [-1022.58620689655, -1206.46551724138]]);} //%square(.9*[R,R], center=true); // henryseg // https://www.thingiverse.com/thing:202774/ //color("green") // translate([0,0,R+1.8]){ // sphere(R+1.1,center=true);} //1.8 //translate([0,0,R]){ import("stereographic_projection_wider_base.stl");}Palavras chave/keywords: Stereographic projection, 3dprint, reprap
Criado/Created: 27-06-2018 [16:40]
Última actualização/Last updated: 10-10-2022 [14:47]
(c) Tiago Charters de Azevedo