<commit_before>include <constants.scad>;
HEIGHT_BODY = 44.5;
DIAMETER_BODY = 10.4;
BORDER_RADIUS_BODY = 0.2;
HEIGHT_NIPPLE = 0.8;

HEIGHT_TOP = 2 * BORDER_RADIUS_BODY;

function top_position_z () = -(HEIGHT_NIPPLE + BORDER_RADIUS_BODY);
function main_position_z() = -(HEIGHT_BODY - BORDER_RADIUS_BODY);

module top_surface()
{
    position = [0,0,top_position_z()];
    
    diameter_base = DIAMETER_BODY - HEIGHT_TOP;
    
    translate(position)
    cylinder(
        h = BORDER_RADIUS_BODY, 
        d = diameter_base,
        $fn = FINE);
}

module top_shoulder()
{
    position_ring = [0,0,top_position_z()];
    
    position_circle_x = radius(DIAMETER_BODY)-BORDER_RADIUS_BODY;
    position_circle = [position_circle_x, 0, 0];
    
    translate(position_ring)
        rotate_extrude(convexity = CONVEXITY, $fn = FINE)
            translate(position_circle)
                circle(r = BORDER_RADIUS_BODY, $fn = FINE); 
}

module main_cylinder()
{
    heigh_main = HEIGHT_BODY - (HEIGHT_NIPPLE + HEIGHT_TOP);
    
    position = [0,0,main_position_z()];
    
    translate(position)
        cylinder(
            h = heigh_main,
            d = DIAMETER_BODY,
            $fn = FINE);
}

module bottom_shoulder()
{
    position_ring = [0,0,main_position_z()];
    
    position_circle_x = radius(DIAMETER_BODY)-BORDER_RADIUS_BODY;
    posision_circle = [position_circle_x, 0, 0];
    
    translate(position_ring)
        rotate_extrude(convexity = CONVEXITY, $fn = FINE)
            translate(posision_circle)
                circle(r = BORDER_RADIUS_BODY, $fn = FINE);
}
module body()
{ 
    top_surface();
    top_shoulder();
    main_cylinder();
    bottom_shoulder();
     
        
//Bottom face of body
translate([0,0,-(HEIGHT_BODY)])
    cylinder(
        h = BORDER_RADIUS_BODY, 
        d = (DIAMETER_BODY - (2 * BORDER_RADIUS_BODY)),
        $fn = FINE);
}

body();<commit_msg>shoulder<commit_after>include <constants.scad>;
HEIGHT_BODY = 44.5;
DIAMETER_BODY = 10.4;
BORDER_RADIUS_BODY = 0.2;
HEIGHT_NIPPLE = 0.8;

HEIGHT_TOP = 2 * BORDER_RADIUS_BODY;

function top_position_z () = -(HEIGHT_NIPPLE + BORDER_RADIUS_BODY);
function main_position_z() = -(HEIGHT_BODY - BORDER_RADIUS_BODY);

module top_surface()
{
    position = [0,0,top_position_z()];
    
    diameter_base = DIAMETER_BODY - HEIGHT_TOP;
    
    translate(position)
    cylinder(
        h = BORDER_RADIUS_BODY, 
        d = diameter_base,
        $fn = FINE);
}

module shoulder(position_z)
{
    position_ring = [0,0,position_z];
    
    position_circle_x = radius(DIAMETER_BODY)-BORDER_RADIUS_BODY;
    posision_circle = [position_circle_x, 0, 0];
    
    translate(position_ring)
        rotate_extrude(convexity = CONVEXITY, $fn = FINE)
            translate(posision_circle)
                circle(r = BORDER_RADIUS_BODY, $fn = FINE); 
}

module main_cylinder()
{    
    position = [0,0,main_position_z()];
    
    heigh_main = HEIGHT_BODY - (HEIGHT_NIPPLE + HEIGHT_TOP);
   
    translate(position)
        cylinder(
            h = heigh_main,
            d = DIAMETER_BODY,
            $fn = FINE);
}


module body()
{ 
    top_surface();
    shoulder(top_position_z()); 
    
    main_cylinder();
    shoulder(main_position_z()); 
        
//Bottom face of body
translate([0,0,-(HEIGHT_BODY)])
    cylinder(
        h = BORDER_RADIUS_BODY, 
        d = (DIAMETER_BODY - (2 * BORDER_RADIUS_BODY)),
        $fn = FINE);
}

body();
{'fraction_non_alphanumeric': 0.1162043795620438, 'fraction_numerical': 0.014014598540145985, 'mean_word_length': 2.8236607142857144, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6699551', 'n_tokens_mistral': 1418, 'n_tokens_neox': 1336, 'n_words': 205}