2022-07-26 20:05:39 -04:00
|
|
|
import "scaling.asy" as scaling;
|
|
|
|
|
|
|
|
//real x = width/3;
|
|
|
|
//real y = 2*height/6;
|
|
|
|
|
|
|
|
//path bread = (x,0){right}..{up}(width, height-y){up}..{left}(width-x, height){left}..{down}(0,y){down}..{right}cycle;
|
|
|
|
|
2022-07-27 02:54:04 -04:00
|
|
|
real outer_radius = height*0.42;
|
2022-07-26 20:05:39 -04:00
|
|
|
real inner_radius = outer_radius*4/5;
|
|
|
|
real center_radius = outer_radius/5;
|
|
|
|
real axle_radius = center_radius/2;
|
|
|
|
|
|
|
|
int gaps = 6;
|
|
|
|
real spoke_width = center_radius*0.7;
|
|
|
|
|
|
|
|
path spoke_part = (spoke_width/2, 0)--(spoke_width/2, outer_radius);
|
|
|
|
|
|
|
|
path gap = buildcycle(circle((0,0), center_radius), spoke_part, reverse(circle((0,0), inner_radius)), reflect((0,0), dir(90-180/gaps))*spoke_part);
|
|
|
|
|
|
|
|
//draw((-width/2,-height/2)--(width/2,-height/2)--(width/2,height/2)--(-width/2,height/2)--cycle);
|
|
|
|
|
|
|
|
path wheel[] = { circle((0,0), outer_radius), circle((0,0), axle_radius) };
|
|
|
|
|
|
|
|
for (int i = 0; i < gaps; ++i) {
|
|
|
|
wheel = wheel^^(rotate(360*i/gaps)*gap);
|
|
|
|
}
|
|
|
|
|
|
|
|
//fill(wheel, evenodd+red);
|