1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-14 10:44:48 +02:00

refactor/format

This commit is contained in:
Justin Lin
2022-04-04 18:58:32 +08:00
parent 556fd1ed28
commit c3425143c3
12 changed files with 73 additions and 99 deletions

View File

@@ -48,7 +48,7 @@ module L_puzzle(level, thickness, thickness_step = true, p = 1.272) {
mirror([1, 0, 0]) mirror([1, 0, 0])
rotate(-90) rotate(-90)
color(rands(0, 1, 3)) color(rands(0, 1, 3))
L_piece(1, thickness_step ? thickness * 2 : thickness); L_piece(1, thickness_step ? thickness * 2 : thickness);
} }
} }
@@ -77,13 +77,13 @@ module L_puzzle(level, thickness, thickness_step = true, p = 1.272) {
translate([0, offset1]) translate([0, offset1])
rotate(-90) { rotate(-90) {
scale([1, 1, thickness_step ? 1 + level * 0.05 : 1]) scale([1, 1, thickness_step ? 1 + level * 0.05 : 1])
_L_puzzle(level - 1); _L_puzzle(level - 1);
translate([offset1, offset2]) translate([offset1, offset2])
mirror([1, 0, 0]) mirror([1, 0, 0])
rotate(-90) rotate(-90)
scale([1, 1, thickness_step ? 1 + (level - 1) * 0.05 : 1]) scale([1, 1, thickness_step ? 1 + (level - 1) * 0.05 : 1])
_L_puzzle(level - 2); _L_puzzle(level - 2);
} }
} }
} }

View File

@@ -17,7 +17,6 @@ module bauer_text_sphere(radius, font_name, font_size, txt_extrude, txt_scale, b
pts = bauer_spiral(n, radius); pts = bauer_spiral(n, radius);
if(ball) { if(ball) {
render()
sphere(radius * 0.9); sphere(radius * 0.9);
} }
/* /*
@@ -25,10 +24,10 @@ module bauer_text_sphere(radius, font_name, font_size, txt_extrude, txt_scale, b
Bauer R. Distribution of points on a sphere with application to star catalogs. Journal of Guidance, Control, and Dynamics. 2000;23(1):130137 Bauer R. Distribution of points on a sphere with application to star catalogs. Journal of Guidance, Control, and Dynamics. 2000;23(1):130137
*/ */
for(i = [0:n - 1]) { for(i = [0:n - 1]) {
x = pts[i][0]; x = pts[i].x;
y = pts[i][1]; y = pts[i].y;
z = pts[i][2]; z = pts[i].z;
ya = atan2(z, sqrt(x * x + y * y)); ya = atan2(z, norm([x, y]));
za = atan2(y, x); za = atan2(y, x);
render() render()

View File

@@ -10,7 +10,7 @@ module heart(radius, center = false) {
module heart_sub_component() { module heart_sub_component() {
translate([-radius * cos(rotated_angle), 0, 0]) translate([-radius * cos(rotated_angle), 0, 0])
rotate(-rotated_angle) union() { rotate(-rotated_angle) {
circle(radius); circle(radius);
translate([0, -radius, 0]) translate([0, -radius, 0])
square(diameter); square(diameter);

View File

@@ -17,8 +17,8 @@ module joint_Y(leng, width, height, ring_offset, thickness) {
linear_extrude(height, center = true) linear_extrude(height, center = true)
difference() { difference() {
hollow_out(thickness) hollow_out(thickness)
offset(delta = thickness, chamfer = true) offset(delta = thickness, chamfer = true)
square([inner_leng, inner_width], center = true); square([inner_leng, inner_width], center = true);
translate([-half_thickness - inner_leng / 2, 0, 0]) translate([-half_thickness - inner_leng / 2, 0, 0])
square([thickness, inner_width], center = true); square([thickness, inner_width], center = true);

View File

@@ -20,21 +20,19 @@ module nautilus_shell(chambered_section_max_angle, steps, thickness) {
]; ];
half_thickness = thickness / 2; half_thickness = thickness / 2;
render() {
polyline_join(spiral)
circle(half_thickness);
for(a = [a_step:a_step * 2:chambered_section_max_angle]) { polyline_join(spiral)
a2 = a + 360; circle(half_thickness);
a3 = a + 420;
p1 = ptf_rotate([r(a), 0], a);
p2 = ptf_rotate((p1 + ptf_rotate([r(a2), 0], a2)) * .6, -5);
p3 = ptf_rotate([r(a3), 0], a3);
polyline_join(bezier_curve(0.1, [p1, p2, p3]))
circle(half_thickness);
}
for(a = [a_step:a_step * 2:chambered_section_max_angle]) {
a2 = a + 360;
a3 = a + 420;
p1 = ptf_rotate([r(a), 0], a);
p2 = ptf_rotate((p1 + ptf_rotate([r(a2), 0], a2)) * .6, -5);
p3 = ptf_rotate([r(a3), 0], a3);
polyline_join(bezier_curve(0.1, [p1, p2, p3]))
circle(half_thickness);
} }
} }

View File

@@ -58,14 +58,8 @@ module seashell() {
); );
points = [ points = [
for(s = [s_s:s_step:s_e]) for(s = [s_s:s_step:s_e], theta = [theta_s:theta_step:theta_e])
for(theta = [theta_s:theta_step:theta_e]) [x(theta, s), y(theta, s), z(theta, s)]
let(
x = x(theta, s),
y = y(theta, s),
z = z(theta, s)
)
[x, y, z]
]; ];
slen = floor((s_e - s_s) / s_step); slen = floor((s_e - s_s) / s_step);
@@ -73,15 +67,12 @@ module seashell() {
c = thetalen + 1; c = thetalen + 1;
triangles = [ triangles = [
for(s = [0:slen - 1]) for(s = [0:slen - 1], theta = [0:thetalen - 1])
for(theta = [0:thetalen - 1]) each [
each [ [theta + s * c, theta + 1 + s * c, theta + (s + 1) * c],
[theta + s * c, theta + 1 + s * c, theta + (s + 1) * c], [theta + 1 + s * c, theta + 1 + (s + 1) * c, theta + (s + 1) * c]
[theta + 1 + s * c, theta + 1 + (s + 1) * c, theta + (s + 1) * c] ]
]
]; ];
sf_thickenT(points, thickness, triangles); sf_thickenT(points, thickness, triangles);
} }

View File

@@ -39,8 +39,7 @@ module spiral_city(num_of_buildings, seed_value) {
ra_arc = atan2(mid_pt[1], mid_pt[0]) - (i > leng_pts - 4 ? arc_a / 4.5 : arc_a / 5); ra_arc = atan2(mid_pt[1], mid_pt[0]) - (i > leng_pts - 4 ? arc_a / 4.5 : arc_a / 5);
translate(mid_pt) translate(mid_pt)
rotate(ra_arc) rotate(ra_arc) {
union() {
difference() { difference() {
union() { union() {
linear_extrude(building_h) linear_extrude(building_h)
@@ -55,7 +54,6 @@ module spiral_city(num_of_buildings, seed_value) {
cubes(i, arm_distance, building_h, w_size, arc_a, arc_r, seed_value); cubes(i, arm_distance, building_h, w_size, arc_a, arc_r, seed_value);
} }
roof(i, arm_distance, building_h, roof_h, arc_a, arc_r); roof(i, arm_distance, building_h, roof_h, arc_a, arc_r);
} }
} }
@@ -66,42 +64,41 @@ module spiral_city(num_of_buildings, seed_value) {
half_a = arc_a / 2; half_a = arc_a / 2;
is_even = i % 2 == 0; is_even = i % 2 == 0;
arc_w = arm_distance / (is_even ? 2.5 : 1.7); arc_w = arm_distance / (is_even ? 2.5 : 1.7);
union() {
rs = is_undef(seed_value) ? rs = is_undef(seed_value) ?
rands(-1, 1, 4) : rands(-1, 1, 4) :
rands(-1, 1, 4, seed_value = seed_value + i); rands(-1, 1, 4, seed_value = seed_value + i);
outer_cube_size = [w_size / 2, w_size + rs[0] , w_size + rs[1]]; outer_cube_size = [w_size / 2, w_size + rs[0] , w_size + rs[1]];
inter_cube_size = [w_size / 2, (w_size + rs[0]) * 0.85, w_size + rs[1]]; inter_cube_size = [w_size / 2, (w_size + rs[0]) * 0.85, w_size + rs[1]];
h_step = w_size * 1.5; h_step = w_size * 1.5;
h_to = building_h - w_size * 1.5; h_to = building_h - w_size * 1.5;
a_from = -half_a + (rs[3] > 0 ? arc_a / 8 : arc_a / 6); a_from = -half_a + (rs[3] > 0 ? arc_a / 8 : arc_a / 6);
a_step = rs[3] > 0 ? arc_a / 4 : arc_a / 3; a_step = rs[3] > 0 ? arc_a / 4 : arc_a / 3;
outer_cube_p = [arc_r + arc_w / 2, 0, w_size * 0.75]; outer_cube_p = [arc_r + arc_w / 2, 0, w_size * 0.75];
inner_cube_p = [arc_r - arc_w / 2, 0, w_size * 0.75]; inner_cube_p = [arc_r - arc_w / 2, 0, w_size * 0.75];
for(h = [0:h_step: h_to]) { for(h = [0:h_step: h_to]) {
translate([-arc_r, 0, h + rs[2] + 1]) translate([-arc_r, 0, h + rs[2] + 1])
for(a = [a_from:a_step:half_a]) { for(a = [a_from:a_step:half_a]) {
r = is_undef(seed_value) ? r = is_undef(seed_value) ?
rands(0, 1, 1)[0] : rands(0, 1, 1)[0] :
rands(0, 1, 1, seed_value = seed_value)[0]; rands(0, 1, 1, seed_value = seed_value)[0];
s = [r > 0.5 ? 2.75 : 1, 1, 1]; s = [r > 0.5 ? 2.75 : 1, 1, 1];
rotate(a) { rotate(a) {
translate(outer_cube_p) translate(outer_cube_p)
scale(s) scale(s)
rounded_cube(outer_cube_size, 1, center = true, $fn = 7); rounded_cube(outer_cube_size, 1, center = true, $fn = 7);
translate(inner_cube_p) translate(inner_cube_p)
scale(s) scale(s)
rounded_cube(inter_cube_size, 1, center = true, $fn = 7); rounded_cube(inter_cube_size, 1, center = true, $fn = 7);
} }
} }
} }
}
} }
module roof(i, arm_distance, building_h, roof_h, arc_a, arc_r) { module roof(i, arm_distance, building_h, roof_h, arc_a, arc_r) {

View File

@@ -30,9 +30,9 @@ module spiral_math_constants(n, radius, constants, font_name, font_size, txt_ext
module constant_on_spiral(constant, spiral) { module constant_on_spiral(constant, spiral) {
for(i = [0:len(spiral) - 1]) { for(i = [0:len(spiral) - 1]) {
x = spiral[i][0]; x = spiral[i].x;
y = spiral[i][1]; y = spiral[i].y;
z = spiral[i][2]; z = spiral[i].z;
ya = atan2(z, sqrt(x * x + y * y)); ya = atan2(z, sqrt(x * x + y * y));
za = atan2(y, x); za = atan2(y, x);

View File

@@ -48,8 +48,7 @@ module dog_back(head_r, peg_radius) {
$fn = 36; $fn = 36;
module foot() { module foot() {
translate([head_r, 0, 0]) translate([head_r, 0, 0]) {
union() {
color("PapayaWhip") color("PapayaWhip")
ellipse_extrude(head_r / 3) ellipse_extrude(head_r / 3)
polygon(shape_ellipse([head_r / 3, head_r / 2])); polygon(shape_ellipse([head_r / 3, head_r / 2]));

View File

@@ -10,12 +10,8 @@ model = "Tetrahedron"; // [Tetrahedron, Base, Both]
module string_tetrahedron(leng, diameter, segs_per_side, line_fn) { module string_tetrahedron(leng, diameter, segs_per_side, line_fn) {
module lines_between(side1, side2, diameter, segs) { module lines_between(side1, side2, diameter, segs) {
function pts(p1, p2, segs) = function pts(p1, p2, segs) =
let( let(p = p2 - p1)
p = p2 - p1, [for(i = [0:segs]) p1 + p / segs * i];
dx = p[0] / segs,
dy = p[1] / segs,
dz = p[2] / segs
) [for(i = [0:segs]) p1 + [dx, dy, dz] * i];
pts1 = pts(side1[0], side1[1], segs); pts1 = pts(side1[0], side1[1], segs);
pts2 = pts(side2[0], side2[1], segs); pts2 = pts(side2[0], side2[1], segs);

View File

@@ -9,12 +9,7 @@ center = false;
module string_tetrahedron(leng, diameter, segs_per_side, line_fn) { module string_tetrahedron(leng, diameter, segs_per_side, line_fn) {
module lines_between(side1, side2, diameter, segs) { module lines_between(side1, side2, diameter, segs) {
function pts(p1, p2, segs) = function pts(p1, p2, segs) =
let( let(p = p2 - p1) [for(i = [0:segs]) p1 + p / segs * i];
p = p2 - p1,
dx = p[0] / segs,
dy = p[1] / segs,
dz = p[2] / segs
) [for(i = [0:segs]) p1 + [dx, dy, dz] * i];
pts1 = pts(side1[0], side1[1], segs); pts1 = pts(side1[0], side1[1], segs);
pts2 = pts(side2[0], side2[1], segs); pts2 = pts(side2[0], side2[1], segs);
@@ -95,12 +90,11 @@ module string_tetrahedrons(level, leng, diameter, segs_per_side, center) {
for(i = [0:120:240]) { for(i = [0:120:240]) {
rotate(i) rotate(i)
translate([0, -center_y * 2]) translate([0, -center_y * 2])
rotate([a, 0, 0]) rotate([a, 0, 0])
translate([0, center_y * 2]) translate([0, center_y * 2])
rotate([180, 0, 0]) rotate([180, 0, 0])
scale(0.9427) scale(0.9427)
string_tetrahedrons(level - 1, half_leng, diameter, segs_per_side, center); string_tetrahedrons(level - 1, half_leng, diameter, segs_per_side, center);
} }
} }

View File

@@ -9,7 +9,7 @@ linear_extrude(2)
translate(pts[i]) translate(pts[i])
difference() { difference() {
square(7, center = true); square(7, center = true);
render() for(p = vx_ascii(tx[i], center = true)) { for(p = vx_ascii(tx[i], center = true)) {
translate(p) square(.8); translate(p) square(.8);
} }
} }