size(10cm);
// Sag aciyi B'de asagi acan dik ucgen.
// BA bacagi a, BC bacagi b. r = ic teget cember yaricapi
// (yle ki B'nin AC'ye yansimasi D cember uzerinde).
real a = 1;
real b = 2;
real r = 4/5;
real s = 1/sqrt(2); // 45 derecelik birim bilesen
pair B = (0, 0);
pair A = B + a * (-s, -s); // B'den asagi-sol
pair C = B + b * ( s, -s); // B'den asagi-sag
// Teget noktalari ve cember merkezi
pair F = B + r * (-s, -s);
pair E = B + r * ( s, -s);
pair O = B + (0, -r*sqrt(2));
// D = B'nin AC dogrusuna gore yansimasi
real Dx = sqrt(2)*a*b*(a-b) / (a*a + b*b);
real Dy = -sqrt(2)*a*b*(a+b) / (a*a + b*b);
pair D = (Dx, Dy);
// G = BD ile FO dogrularinin kesisimi
pair G = extension(B, D, F, O);
// Dortgen ABCD'nin dis kenarlari
draw(A--B--C--D--cycle, black+1.2bp);
// Tegetlerden merkeze
draw(F--O, black+1.2bp);
draw(E--O, black+1.2bp);
// O'dan D'ye kesik cizgi (D, O, E dogrusal)
draw(O--D, dashed+black+1bp);
// Kirmizi BD dogrusu G'den geciyor
draw(B--D, red+1.5bp);
// Kirmizi cember
draw(circle(O, r), red+1.5bp);
// Noktalar
dot(A); dot(B); dot(C); dot(D); dot(E); dot(F); dot(O); dot(G);
// Etiketler
label("$B$", B, N);
label("$A$", A, W);
label("$C$", C, E);
label("$D$", D, S);
label("$E$", E, NE);
label("$F$", F, NW);
label("$O$", O, E);
label("$G$", G, W, red);