[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]
>>111109Нет.
гет
О, хороший тред. Как посчитать угол между двумя векторами, анон?См. картинку.Суть в том, что нужно знать угол между предыдущим вектором и последующим вектором траектории (угол альфа). График - Лемниската Бернулли, в параметрическом представлении.Пробую atan2, но он что-то невразумительное выдаёт, явно не те углы, которые должны быть.(ATAN2(y2;x2)-ATAN2(y1;x1))*180/PI()Благодарю.
>>111112(ATAN2(y3-y2;x3-x2)-ATAN2(y2-y1;x2-x1))*180/PI()
>>111113Я тупой, наверное, но не работает.
>>111115Ой, ошибочка вышла, должно быть как-то так вроде (ATAN2(x2-x1;y2-y1)-ATAN2(x2-x3;y2-y3))*180/PI()
>>111117Всё равно не работает.Спасибо, буду думать как-то по-другому.
>>111118Попробуй вот это:=(180-ABS(ACOS((x2-x1)/SQRT(POWER(x2-x1;2)+POWER(y2-y1;2)))-ACOS((x3-x2)/SQRT(POWER(x3-x2;2)+POWER(y3-y2;2))))*180/PI())
>>111109
>>111120 не быть тебе электронщиком
>>111121Давно всё специализированное по разводит.
>>111119Так работает.ALPHA=(ATAN2(D6-D5;E6-E5)-ATAN2(D5-D4;E5-E4))*180/PI()Избавимся от углов больше 180, для вычисления траектории они нам не понадобятся.Угол BETA может принимать значения от -180 до 180, 0..-180: поворот влево, 0..180: поворот вправо.Направление движения согласно рис. >>111112Начинаем от точки X=0. (Х-горизонтальная ось).BETA=IF((ALPHA>=180);(ALPHA-360);IF((ALPHA<=-180);(ALPHA+360);(ALPHA)))Допустимо ли использовать компас, типа GY-271(HMC5883L), для фидбэка угла поворота?
>>111127Вместо ALPHA=(ATAN2(D6-D5;E6-E5)-ATAN2(D5-D4;E5-E4))*180/PI()Должно быть:ALPHA=(ATAN2(X(n+1)-X(n+1);Y(n+1)-Y(n))-ATAN2(X(n)-X(n-1);Y(n)-Y(n-1))*180/PI()Где Xn,Xn -координаты n-ой точки траектории.
- wakaba 3.0.7 + futaba + futallaby -