X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=funcs.scad.cpp;fp=funcs.scad.cpp;h=0d589ac9ecd3fe89a9201ed2c0a8da0a5dcb0a36;hb=3f431f5e5f72cc88127a70888575f9a18d2c871a;hp=0000000000000000000000000000000000000000;hpb=382b1f42ea067bfa5ea594bc2a971057b5105ad4;p=reprap-play.git 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