Files
openscad-misc/DNA_Double_Helix/modules/tip_cutting_cube.scad

22 lines
1.0 KiB
OpenSCAD

// Author: Edward Middleton-Smith
// Project: Miscellaneous
// Technology: DNA Double Helix
// Feature: Main
include <constants.scad>;
module tip_cutting_cube (radius_rotation_helix, radius_strand_helix, index_tip_helix, angle_incline, height, angle_twist_total) {
dx = radius_rotation_helix / 2 + radius_strand_helix * 2;
dy = radius_strand_helix * 2 * (1 - cos(angle_incline));
edge_size = 3 * radius_strand_helix;
echo("cutting cube edge size: ", edge_size);
requires_rotation_to_alternative_tip_at_end = (index_tip_helix == 1 || index_tip_helix == 4);
tip_is_at_top = (index_tip_helix == 3 || index_tip_helix == 4);
height_tip_top = height;
rotate([0, 0, (requires_rotation_to_alternative_tip_at_end ? 180 : 0) + (tip_is_at_top ? 0 : 0)]) translate([dx, dy, tip_is_at_top ? height_tip_top : 0]) rotate([-angle_incline, 0, 0]) cube(edge_size, center = true);
}
index_tip_helix = 1; // 1 - 4
tip_cutting_cube(radius_rotation_helix, radius_strand_helix, index_tip_helix, angle_incline, height, angle_twist_total);