chiark / gitweb /
0d589ac9ecd3fe89a9201ed2c0a8da0a5dcb0a36
[reprap-play.git] / funcs.scad.cpp
1 // -*- C -*-
2
3 function dist(a,b) =
4 #define dsq(i) (a[i]-b[i])*(a[i]-b[i])
5                sqrt(dsq(0) + dsq(1));
6 #undef dsq
7
8 function circle_point(c, r, alpha) = [ c[0] + r * cos(alpha),
9                                        c[1] + r * sin(alpha) ];
10
11 function tangent_intersect(a,c,r) =
12 #define d     (dist(a,c))
13 #define alpha (atan2(a[1]-c[1],a[0]-c[0]))
14 #define gamma (asin(r / d))
15 #define beta  (alpha + 90 - gamma)
16               circle_point(c, r, beta);
17 #undef d
18 #undef alpha
19 #undef gamma
20 #undef beta