#include "library.h" const double pi = acos(-1.0); const double ninety = pi/2, degrees = pi/180; bool block2(double p1x, double p1y, double p2x, double p2y, double len, double beta, double end) { const double base = sqrt((p1x-p2x)*(p1x-p2x) + (p1y-p2y)*(p1y-p2y)); const double alpha = atan2(p2x-p1x, p1y-p2y) - ninety; if (sin(beta) > 2*len/base) return false; const double p3x = (p1x + p2x) * 0.5; const double p3y = (p1y + p2y) * 0.5; const double p4x = p3x + len * sin(alpha+beta); const double p4y = p3y - len * cos(alpha+beta); const double dx = 0.5 * end * sin(ninety-alpha-beta); const double dy = 0.5 * end * cos(ninety-alpha-beta); const double p5x = p4x - dx; const double p5y = p4y - dy; const double p6x = p4x + dx; const double p6y = p4y + dy; move_to(p1x, p1y); draw_to(p2x, p2y); draw_to(p6x, p6y); if (len<3) draw_to(p5x, p5y); else { block2(p5x, p5y, p6x, p6y, len*.66, random_in_range(-40, 40)*pi/180, end*.66); block2(p5x, p5y, p6x, p6y, len*.66, random_in_range(-40, 40)*pi/180, end*.66); } draw_to(p1x, p1y); return true; } void main() { make_window(1000, 800); block2(250, 780, 450, 780, 200, 0, 100); }