Здравствуйте, KNoskov, Вы писали:
KN>Под осью вращения понимается прямая, для которой выполняется условие: сумма расстояний от точек фигуры до этой линии минимальна.
Неожиданно. Что тут можно посоветовать? Расстояние от точки (x_i,y_i) до прямой A*x+B*y+C=0 вычисляется по формуле
d_i=|A*x_i+B*y_i+C|/sqrt(A^2+B^2)
Варьировать по A,B,C и искать минимум суммы таких d_i хреново из-за модуля. Разумно положить A=D*sin(fi) B=D*cos(fi) (тогда выражение превращается в d_i=|sin(fi)*x_i+cos(fi)*y_i+C/D|) и искать максимум по fi и C/D=c численными методами, например, методом спуска по коородинатам или градиентного спуска. На всякий случай выписываю производную по fi и с
d/dfi SUM(i)|sin(fi)*x_i+cos(fi)*y_i+c|= SUM(i) (cos(fi)*x_i+sin(fi)*y_i)*sign(sin(fi)*x_i+cos(fi)*y_i+c)
d/dc SUM(i)|sin(fi)*x_i+cos(fi)*y_i+c|= SUM(i) sign(sin(fi)*x_i+cos(fi)*y_i+c)
sign — это функция взятия знака, sign x=1, если x>0 и -1 если x<0.
О численных методах читайте в интернете, начать можно с
http://ru.wikipedia.org/wiki/Метод_покоординатного_спуска