Skip to content

Instantly share code, notes, and snippets.

@daisycamber
Last active April 25, 2024 00:56
Show Gist options
  • Save daisycamber/8761f61c8e19645e4f9e40b366d44ccd to your computer and use it in GitHub Desktop.
Save daisycamber/8761f61c8e19645e4f9e40b366d44ccd to your computer and use it in GitHub Desktop.
A simple anatomical model of a vagina with space for a NFC sticker inside. Printed at half scale on all axis besides Z.
$fn=64;
//scale([1, h/w, 1]) rotate([90,90,0]) cylinder(h=100, r=100, center=false);
module oval(w, h, height, center = false) {
scale([1, 1, 2]) rotate([90,90,0]) cylinder(h=0.5, r=w, center=center);
}
module sph(w, h, height, center = false) {
scale([1, 5, 2]) rotate([90,90,0]) sphere(w);
}
rotation_constant = 0.08;
module curved(w,l,h) {
rotate([0,0,-1 * rotation_constant]) translate([0,0.5,0]) sph(w);
for(x = [0 : l/0.5]) {
rotate([0,0,x * rotation_constant]) translate([0,0.5 * x,0])oval(w,l,h);
rotate([0,0,x * rotation_constant]) translate([0,0.5 * x,0])oval(w,l,h);
//translate([0.5,-1,-1]) color("red") oval(10,l+10,h+5);
}
x = l/0.5;
rotate([0,0,x * rotation_constant]) translate([0,0.5 * x,0]) sph(w);
}
module vagina() {
difference() {
union() {
cylinder(2, 27, 27);
translate([0,16.5,1.9]) sphere(1.3);
translate([0,6,1.3]) sphere(1);
translate([8,-15,0.7]) rotate([0,1,-21])scale([5,1,1])curved(1,30,5);
translate([-8,-15,0.7]) rotate([0,180-1,20])scale([5,1,1])curved(1,30,5);
translate([3,9,2]) rotate([0,0,15]) scale([1,4,1])sphere(2);
translate([-3,9,2]) rotate([0,0,-15]) scale([1,4,1])sphere(2);
translate([4,-7,1.6]) rotate([3,0,-11]) scale([1,7,1])sphere(1.5);
translate([-4,-7,1.5]) rotate([3,0,11]) scale([1,7,1])sphere(1.5);
}
translate([0,-7,2.5]) rotate([0,0,0]) scale([1.3,5,1])sphere(1.5);
translate([0,0,-5]) cylinder(5,30,30);
}
}
module back() {
difference() {
cylinder(4, 30, 30);
translate([0,0,1.5]) cylinder(3, 28, 28);
}
}
vagina();
//back();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment