Re[3]: Ось вращения
От: subdmitry Россия  
Дата: 06.09.08 14:45
Оценка:
Здравствуйте, 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/Метод_покоординатного_спуска
And if you listen very hard the alg will come to you at last.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.