Показать сообщение отдельно
Старый 10.12.2013, 11:14   #4
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Нужна помощь

Сообщение от RegIon Посмотреть сообщение
float Vector::Length(Vector a,Vector b){
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}

float Vector::Length(){
   return sqrt((x)*(x)+(y)*(y));   
}

float Vector::Dot(Vector a,Vector b){
    return a.x*b.x+a.y*b.y;
}

float Vector::Angle(Vector a,Vector b){
    if(a.Length()*b.Length()==0)
        return 0;
        
    float ang=acos(fabs(Vector::Dot(a,b))/(a.Length()*b.Length()));
    return ang;
}
Не правильно работает Vector::Angle
если вектора одинаковые, то дает -1.#, причем это из-за acosб в чем трабла?
(a.Length()*b.Length()) не должно быть нулем
(Offline)
 
Ответить с цитированием