1) Знаем центр круга
2) Знаем середину каждой стороны блока
3) Меряем расстояние от центра круга до центра каждой стороны
4) Какое расстояние меньше, туда круг и ближе
Гуглите выражение css padding hack, тема стара как мир — это как раз то, как сделать высоту блока пропорциональной ширине блока. Вот песочница, меняйте ширину фрейма, квадратик будет пропорционально менять свои размеры.