-
-
Save andybak/f98742b37b801849e1584b7faddcff59 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//------------------------------------------------------------------------------------------ | |
// THIS CODE WAS GENERATED WITH GRAPHSCAD (C)C.levastre 2017 | |
// IF U LIKE GRAPHSCAD PLEASE DONATE ON BLOG//------------------------------------------------------------------------------------------ | |
// C:\Users\andyb\Downloads\graphscad_win_v1.0.10\graphscad_win_v1.0.10\graphscadfiles/display.scad | |
//------------------------------------------------------------------------------------------ | |
// Graphscad is a graphical nodal editor to create .SCAD files | |
// | |
// More info here : http://graphscad.free.fr | |
// | |
// Scad Files created with Graphscad can be edited by graphscad | |
// Scad Files created with Graphscad can be read by Openscad | |
// | |
//------------------------------------------------------------------------------------------ | |
$assembled=false; | |
$debug=false; | |
/*------------------- Headers --------------------------------*/ | |
/*------------------- declared modules --------------------------------*/ | |
/*------------------- Other Headers --------------------------------*/ | |
/*------------------- default module --------------------------------*/ | |
/* force parameters for default module if they are connected to declaremodule */ | |
/* force functions for default module if they are connected to declaremodule */ | |
module display() | |
{ | |
/*------------------- isolated output objects --------------------------------*/ | |
/*------------------- final objects output --------------------------------*/ | |
function node_cube_matrix(i=0,j=0,k=0,l=0,m=0,n=0) = translate([0,0,0]); | |
module node_cube(i=0,j=0,k=0,l=0,m=0,n=0) | |
{ | |
cube([2,1,1],center=false); | |
} | |
/*--call non input node--*/ | |
node_cube(); | |
} | |
display(); | |
/*-------------------------------------------------------------------------------------------------------- | |
Graphscad Utils functions | |
This code is Used By Graphscad Nodal Editor to generate SCAD files | |
--------------------------------------------------------------------------------------------------------*/ | |
function det4x4(a) = | |
a[0][0]*a[1][1]*a[2][2]*a[3][3] + a[0][0]*a[1][2]*a[2][3]*a[3][1] + a[0][0]*a[1][3]*a[2][1]*a[3][2] | |
+ a[0][1]*a[1][0]*a[2][3]*a[3][2] + a[0][1]*a[1][2]*a[2][0]*a[3][3] + a[0][1]*a[1][3]*a[2][2]*a[3][0] | |
+ a[0][2]*a[1][0]*a[2][1]*a[3][3] + a[0][2]*a[1][1]*a[2][3]*a[3][0] + a[0][2]*a[1][3]*a[2][0]*a[3][1] | |
+ a[0][3]*a[1][0]*a[2][2]*a[3][1] + a[0][3]*a[1][1]*a[2][0]*a[3][2] + a[0][3]*a[1][2]*a[2][1]*a[3][0] | |
- a[0][0]*a[1][1]*a[2][3]*a[3][2] - a[0][0]*a[1][2]*a[2][1]*a[3][3] - a[0][0]*a[1][3]*a[2][2]*a[3][1] | |
- a[0][1]*a[1][0]*a[2][2]*a[3][3] - a[0][1]*a[1][2]*a[2][3]*a[3][0] - a[0][1]*a[1][3]*a[2][0]*a[3][2] | |
- a[0][2]*a[1][0]*a[2][3]*a[3][1] - a[0][2]*a[1][1]*a[2][0]*a[3][3] - a[0][2]*a[1][3]*a[2][1]*a[3][0] | |
- a[0][3]*a[1][0]*a[2][1]*a[3][2] - a[0][3]*a[1][1]*a[2][2]*a[3][0] - a[0][3]*a[1][2]*a[2][0]*a[3][1]; | |
function invb00(a) = a[1][1]*a[2][2]*a[3][3] + a[1][2]*a[2][3]*a[3][1] + a[1][3]*a[2][1]*a[3][2] - a[1][1]*a[2][3]*a[3][2] - a[1][2]*a[2][1]*a[3][3] - a[1][3]*a[2][2]*a[3][1]; | |
function invb01(a) = a[0][1]*a[2][3]*a[3][2] + a[0][2]*a[2][1]*a[3][3] + a[0][3]*a[2][2]*a[3][1] - a[0][1]*a[2][2]*a[3][3] - a[0][2]*a[2][3]*a[3][1] - a[0][3]*a[2][1]*a[3][2]; | |
function invb02(a) = a[0][1]*a[1][2]*a[3][3] + a[0][2]*a[1][3]*a[3][1] + a[0][3]*a[1][1]*a[3][2] - a[0][1]*a[1][3]*a[3][2] - a[0][2]*a[1][1]*a[3][3] - a[0][3]*a[1][2]*a[3][1]; | |
function invb03(a) = a[0][1]*a[1][3]*a[2][2] + a[0][2]*a[1][1]*a[2][3] + a[0][3]*a[1][2]*a[2][1] - a[0][1]*a[1][2]*a[2][3] - a[0][2]*a[1][3]*a[2][1] - a[0][3]*a[1][1]*a[2][2]; | |
function invb10(a) = a[1][0]*a[2][3]*a[3][2] + a[1][2]*a[2][0]*a[3][3] + a[1][3]*a[2][2]*a[3][0] - a[1][0]*a[2][2]*a[3][3] - a[1][2]*a[2][3]*a[3][0] - a[1][3]*a[2][0]*a[3][2]; | |
function invb11(a) = a[0][0]*a[2][2]*a[3][3] + a[0][2]*a[2][3]*a[3][0] + a[0][3]*a[2][0]*a[3][2] - a[0][0]*a[2][3]*a[3][2] - a[0][2]*a[2][0]*a[3][3] - a[0][3]*a[2][2]*a[3][0]; | |
function invb12(a) = a[0][0]*a[1][3]*a[3][2] + a[0][2]*a[1][0]*a[3][3] + a[0][3]*a[1][2]*a[3][0] - a[0][0]*a[1][2]*a[3][3] - a[0][2]*a[1][3]*a[3][0] - a[0][3]*a[1][0]*a[3][2]; | |
function invb13(a) = a[0][0]*a[1][2]*a[2][3] + a[0][2]*a[1][3]*a[2][0] + a[0][3]*a[1][0]*a[2][2] - a[0][0]*a[1][3]*a[2][2] - a[0][2]*a[1][0]*a[2][3] - a[0][3]*a[1][2]*a[2][0]; | |
function invb20(a) = a[1][0]*a[2][1]*a[3][3] + a[1][1]*a[2][3]*a[3][0] + a[1][3]*a[2][0]*a[3][1] - a[1][0]*a[2][3]*a[3][1] - a[1][1]*a[2][0]*a[3][3] - a[1][3]*a[2][1]*a[3][0]; | |
function invb21(a) = a[0][0]*a[2][3]*a[3][1] + a[0][1]*a[2][0]*a[3][3] + a[0][3]*a[2][1]*a[3][0] - a[0][0]*a[2][1]*a[3][3] - a[0][1]*a[2][3]*a[3][0] - a[0][3]*a[2][0]*a[3][1]; | |
function invb22(a) = a[0][0]*a[1][1]*a[3][3] + a[0][1]*a[1][3]*a[3][0] + a[0][3]*a[1][0]*a[3][1] - a[0][0]*a[1][3]*a[3][1] - a[0][1]*a[1][0]*a[3][3] - a[0][3]*a[1][1]*a[3][0]; | |
function invb23(a) = a[0][0]*a[1][3]*a[2][1] + a[0][1]*a[1][0]*a[2][3] + a[0][3]*a[1][1]*a[2][0] - a[0][0]*a[1][1]*a[2][3] - a[0][1]*a[1][3]*a[2][0] - a[0][3]*a[1][0]*a[2][1]; | |
function invb30(a) = a[1][0]*a[2][2]*a[3][1] + a[1][1]*a[2][0]*a[3][2] + a[1][2]*a[2][1]*a[3][0] - a[1][0]*a[2][1]*a[3][2] - a[1][1]*a[2][2]*a[3][0] - a[1][2]*a[2][0]*a[3][1]; | |
function invb31(a) = a[0][0]*a[2][1]*a[3][2] + a[0][1]*a[2][2]*a[3][0] + a[0][2]*a[2][0]*a[3][1] - a[0][0]*a[2][2]*a[3][1] - a[0][1]*a[2][0]*a[3][2] - a[0][2]*a[2][1]*a[3][0]; | |
function invb32(a) = a[0][0]*a[1][2]*a[3][1] + a[0][1]*a[1][0]*a[3][2] + a[0][2]*a[1][1]*a[3][0] - a[0][0]*a[1][1]*a[3][2] - a[0][1]*a[1][2]*a[3][0] - a[0][2]*a[1][0]*a[3][1]; | |
function invb33(a) = a[0][0]*a[1][1]*a[2][2] + a[0][1]*a[1][2]*a[2][0] + a[0][2]*a[1][0]*a[2][1] - a[0][0]*a[1][2]*a[2][1] - a[0][1]*a[1][0]*a[2][2] - a[0][2]*a[1][1]*a[2][0]; | |
function inv4x4(a)= (1/det4x4(a))*[ | |
[invb00(a),invb01(a),invb02(a),invb03(a)], | |
[invb10(a),invb11(a),invb12(a),invb13(a)], | |
[invb20(a),invb21(a),invb22(a),invb23(a)], | |
[invb30(a),invb31(a),invb32(a),invb33(a)]]; | |
function onlytranslate(a)= [ | |
[1,0,0,a[0][3]], | |
[0,1,0,a[1][3]], | |
[0,0,1,a[2][3]], | |
[0,0,0,1]]; | |
function negonlytranslate(a)=[ | |
[1,0,0,-a[0][3]], | |
[0,1,0,-a[1][3]], | |
[0,0,1,-a[2][3]], | |
[0,0,0,1]]; | |
function lookatvec(t,parentmat) = [t[0]-parentmat[0][3], | |
t[1]-parentmat[1][3], | |
t[2]-parentmat[2][3]]; | |
/* | |
rx = '0' | |
ry = 'acos('+tz+'/norm(['+tx+','+ty+','+tz+']))' | |
rz = 'atan2('+ty+','+tx+')' | |
*/ | |
function lookatrot(t,parentmat) = [0, | |
acos((t[2]-parentmat[2][3])/norm(lookatvec(t,parentmat))), | |
atan2(t[1]-parentmat[1][3],t[0]-parentmat[0][3])]; | |
function gettranslation(m) = [m[0][3],m[1][3],m[2][3]]; | |
function vectormulmatrix(v,m) = m*v; | |
function vectorlength(v) = norm(v); | |
function vectorx(v) = v[0]; | |
function vectory(v) = v[1]; | |
function vectorz(v) = v[2]; | |
function vectoradd(a,b) = (a+b); | |
function vectorsub(a,b) = (a-b); | |
function vectormul(a,b) = (a*b); | |
function vectordiv(a,b) = (a*(1/b)); | |
function scale(v)=[[v[0],0,0,0], | |
[0,v[1],0,0], | |
[0,0,v[2],0], | |
[0,0,0,1]]; | |
function rotatex(a)=[[1,0,0,0], | |
[0,cos(a),-sin(a),0], | |
[0,sin(a),cos(a),0], | |
[0,0,0,1]]; | |
function rotatey(a)=[[cos(a),0,sin(a),0], | |
[0,1,0,0], | |
[-sin(a),0,cos(a),0], | |
[0,0,0,1]]; | |
function rotatez(a)=[[cos(a),-sin(a),0,0], | |
[sin(a),cos(a),0,0], | |
[0,0,1,0], | |
[0,0,0,1]]; | |
function rotatea(c,s,l,m,n)=[[l*l*(1-c)+c,m*l*(1-c)-n*s,n*l*(1-c)+m*s,0], | |
[l*m*(1-c)+n*s,m*m*(1-c)+c,n*m*(1-c)-l*s,0], | |
[l*n*(1-c)-m*s,m*n*(1-c)+l*s,n*n*(1-c)+c,0], | |
[0,0,0,1]]; | |
function rotateanv(a,nv)=rotatea(cos(a),sin(a),nv[0],nv[1],nv[2]); | |
function rotate(a,v, normV=true)=(v==undef)?rotatez(a[2])*rotatey(a[1])*rotatex(a[0]): | |
normV ? rotateanv(a,v/sqrt(v*v)) : rotateanv(a,v); | |
function translate(v)=[[1,0,0,v[0]], | |
[0,1,0,v[1]], | |
[0,0,1,v[2]], | |
[0,0,0,1]]; | |
function mirrorabc(a,b,c)=[[1-2*a*a,-2*a*b,-2*a*c,0], | |
[-2*a*b,1-2*b*b,-2*b*c,0], | |
[-2*a*c,-2*b*c,1-2*c*c,0], | |
[0,0,0,1]]; | |
function mirrornv(nv)=mirrorabc(nv[0],nv[1],nv[2]); | |
function mirror(v)=mirrornv(v/sqrt(v*v)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment