Partiendo de un triángulo, tomamos dos de sus lados, y dibujamos cuadrados apoyados en ellos y determinamos sus centros. Los segmentos que unen los centros de los cuadrados y el punto medio del otro lado del triángulo, sobre el que no se construyó cuadrado, tienen la misma longitud y forman un ángulo recto.
cuadrado[color_, a_, b_] :=
Module[{tt = EuclideanDistance[a, b]}, {color, Opacity[0.5],
Rotate[{Rectangle[b, b + {tt, tt}], {Black, PointSize[Large],
Point[RegionCentroid@Rectangle[b, b + {tt, tt}]]}},
Arg[(a - b)[[2]] + I (b - a)[[1]]] + Pi/2, b]}]
punto[a_, b_] :=
Module[{cc = Arg[(a - b)[[1]] + I (a - b)[[2]]] + Pi/4},
b + Sqrt[2] EuclideanDistance[a, b]/2 {Cos[cc], Sin[cc]}]
Manipulate[
linea[a_, b_] :=
ParametricPlot[punto[a, b] (1 - t) + t (p + s)/2, {t, 0, 1},
PlotStyle -> {Red, Thickness[0.01]}];
Show[Graphics[{{Line[{p, q, s, p}]}, cuadrado[Red, p, q],
cuadrado[Green, q, s], {PointSize[Large], Point[(p + s)/2]}},
PlotRange -> 10], linea[p, q], linea[q, s]], {{p, {1, 1}},
Locator}, {{q, {-1, 1}}, Locator}, {{s, {-1, -1}}, Locator}]
Si los cuadrados se construyen hacia la parte interior del triángulo el resultado sigue siendo válido.
Para aprender más sobre Mathematica ingrese
aquí sitio de aprendizaje de Wolfram o en mi website
ustamathematica.wixsite.com/basicas