From 3f431f5e5f72cc88127a70888575f9a18d2c871a Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 15 Feb 2014 18:17:50 +0000 Subject: [PATCH] Makefile, funcs.scad: helpful file --- .gitignore | 1 + Makefile | 13 ++++++++----- funcs.scad.cpp | 20 ++++++++++++++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 funcs.scad.cpp 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 -- 2.30.2