|
Я всё-таки решил эту задачу и решение получилось несложным: возьмём произвольное аффинное преобразование, которое отображает исходные точки в вершины равностороннего треугольника, опишем вокруг него окружность, а затем применим к ней обратное преобразование. Таким образом получим эллипс минимальной площади ( это следует из того, что аффинное преобразование сохраняет отношение площадей фигур ).
Из этого также следует, что центр эллипса и центр масс исходных точек совпадают. Поэтому для простоты будем считать, что эти центры находятся в начале координат.
Итак даны 3 точки (x1,y1), (x2,y2), (x3,y3).
Введём дополнительные переменные:
x12 = x1 - x2
y12 = y1 - y2
x23 = x2 - x3
y23 = y2 - y3
x31 = x3 - x1
y31 = y3 - y1
Эллипс зададим в виде уравнения:
a*x*x - b*x*y + c*y*y = d
Тогда:
a = y12*y12 + y23*y23 + y31*y31 - y31*y12 - y12*y23 - y23*y31
b = 3 * ( y12*x12 + y23*x23 + y31*x31 )
c = x12*x12 + x23*x23 + x31*x31 - x31*x12 - x12*x23 - x23*x31
d = ( y31*x23 - y23*x31 ) ^ 2
|