From: Ian Jackson Date: Sat, 15 Feb 2014 18:17:50 +0000 (+0000) Subject: Makefile, funcs.scad: helpful file X-Git-Tag: filamentspool-v2-release~442 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=commitdiff_plain;h=3f431f5e5f72cc88127a70888575f9a18d2c871a Makefile, funcs.scad: helpful file --- diff --git a/.gitignore b/.gitignore index b6c47e6..67460ba 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ light-bracket.stl *,*.auto.scad .*.d *.tmp +funcs.scad diff --git a/Makefile b/Makefile index a5e5278..6a4b9c5 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,11 @@ CONFIG=$(PLAY)/slic3r-config.ini USING_AUTOS ?= filamentspool xeno-drivebay-bracket dungeonquest-cone anke-gps-bracket cable-hole-trunking-cover anglepoise-neck crossbar-computer-led-mount AUTO_TOPLEVELS := $(foreach m,$(USING_AUTOS),$(shell $(PLAY)/toplevel-find $m)) +AUTO_INCS = funcs.scad + +default: autoincs scads + +autoincs: $(AUTO_INCS) scads: $(addsuffix .auto.scad, $(AUTO_TOPLEVELS)) stls: $(addsuffix .auto.stl, $(AUTO_TOPLEVELS)) @@ -19,11 +24,9 @@ stls: $(addsuffix .auto.stl, $(AUTO_TOPLEVELS)) %.auto.stls: $(MAKE) $(addsuffix .auto.stl, $(shell $(PLAY)/toplevel-find $*)) -default: - -include .*.d -%.stl: %.scad +%.stl: %.scad $(AUTO_INCS) openscad -d .$@.d.tmp -o $*.tmp.stl $< @rm -f $@ @sed -e 's/\.tmp\.stl:/.stl:/' <.$@.d.tmp >.$@.d @@ -45,7 +48,7 @@ default: %.gcode: manual-gcode-generator %.m-g $(PLAY)/$^ >$@.tmp && mv -f $@.tmp $@ -dovecliptest.stl: doveclip.scad +dovecliptest.stl: doveclip.scad $(AUTO_INCS) %.auto.scad: $(PLAY)/toplevel-make Makefile $(PLAY)/toplevel-find @echo ' write $@' @@ -55,4 +58,4 @@ dovecliptest.stl: doveclip.scad .PRECIOUS: %.stl %.gcode clean: - rm -f *~ *.stl *.auto.scad *.gcode .*.d + rm -f *~ *.stl *.auto.scad *.gcode .*.d $(AUTO_INCS) diff --git a/funcs.scad.cpp b/funcs.scad.cpp new file mode 100644 index 0000000..0d589ac --- /dev/null +++ b/funcs.scad.cpp @@ -0,0 +1,20 @@ +// -*- C -*- + +function dist(a,b) = +#define dsq(i) (a[i]-b[i])*(a[i]-b[i]) + sqrt(dsq(0) + dsq(1)); +#undef dsq + +function circle_point(c, r, alpha) = [ c[0] + r * cos(alpha), + c[1] + r * sin(alpha) ]; + +function tangent_intersect(a,c,r) = +#define d (dist(a,c)) +#define alpha (atan2(a[1]-c[1],a[0]-c[0])) +#define gamma (asin(r / d)) +#define beta (alpha + 90 - gamma) + circle_point(c, r, beta); +#undef d +#undef alpha +#undef gamma +#undef beta