выход креста - PullRequest
       19

выход креста

0 голосов
/ 21 февраля 2011

Я пытаюсь получить «перекрестное произведение» двух векторов. эти два вектора представляют две плоскости. Итак, мои векторы как a1,b1,-1 и a2,b2,-1. (Я использовал мое уравнение плоскости как ax+by-z+d=0).

это была моя определенная функция для получения перекрестного произведения;

vector<double> cross_vector(vector<double> plane1,vector<double> plane2){
vector<double> cross_product;
double a1=plane1.at(0); double a2=plane2.at(0);
double b1=plane1.at(1); double b2=plane2.at(1);
int c1,c2=-1;
double cross_a=(b1*c2)-(b2*c1);
double cross_b=(a2*c1)-(a1*c2);
double cross_c=(a1*b2)-(a2*b1);
cross_product.push_back(cross_a);
cross_product.push_back(cross_;
cross_product.push_back(cross_c);

return cross_product;
}

для результата, который я получил, как показано ниже, для различных комбинаций плоскостей;

 523554   -1.3713e+006  -0.00160687

 556340   -1.43908e+006  0.00027957

-568368    1.46225e+006 -0.00034963

 143455   -380017       -0.00027957 

Я не могу понять такие значения, как 1.46225e+006? что-то не так с моей функцией? я знаю, мой результирующий перекрестный вектор должен быть направлен точно горизонтально. Итак, не могли бы вы также сказать мне, как я могу проверить, горизонтальный ли мой вектор или нет? надеюсь, ваши советы.

Ответы [ 2 ]

7 голосов
/ 21 февраля 2011
int c1,c2=-1;

Это оставляет c1 неинициализированным. Использование:

int c1=-1, c2=-1;
0 голосов
/ 21 февраля 2011

Математика выглядит правильно.Размещение быстрых A = <1,0,0> и B = <0, 1, 0> дало разумный результат на обратной стороне <0, 0, 1>.E notatin представляет число, умноженное на 10 в степени после e.Так что это также может быть разумным, но трудно сказать, поскольку из вашего примера я не могу сказать, каковы были ваши входные значения.Однако я бы не стал возвращать это значение лично - я бы предпочел возвращать его как ссылку или указатель, чтобы избежать ненужного копирования.Кроме того, как упоминалось выше, у вас есть инициализированная переменная.

...