/** * Simple triangles library * * Authors: * - Eero 'rambo' af Heurlin 2010- * * License: LGPL 2.1 */ /** * Standard right-angled triangle * * @param number o_len Lenght of the opposite side * @param number a_len Lenght of the adjacent side * @param number depth How wide/deep the triangle is in the 3rd dimension * @todo a better way ? */ module triangle(o_len, a_len, depth) { linear_extrude(height=depth) { polygon(points=[[0,0],[a_len,0],[0,o_len]], paths=[[0,1,2]]); } } /** * Standard right-angled triangle (tangent version) * * @param number angle of adjacent to hypotenuse (ie tangent) * @param number a_len Lenght of the adjacent side * @param number depth How wide/deep the triangle is in the 3rd dimension */ module a_triangle(tan_angle, a_len, depth) { linear_extrude(height=depth) { polygon(points=[[0,0],[a_len,0],[0,tan(tan_angle) * a_len]], paths=[[0,1,2]]); } } // Tests: module test_triangle() { triangle(5, 5, 5); } module test_a_triangle() { a_triangle(45, 5, 5); } module test_triangles() { // Generate a bunch of triangles by sizes for (i = [1:10]) { translate([i*7, -30, i*7]) { triangle(i*5, sqrt(i*5+pow(i,2)), 5); } } // Generate a bunch of triangles by angle for (i = [1:85/5]) { translate([i*7, 20, i*7]) { a_triangle(i*5, 10, 5); } } }