Iloczyn wektorowy pozwala w prosty sposób określić, czy kierując się po odcinku AB, w kierunku punktu C skręcimy w lewo, w prawo czy może punkt C jest współliniowy z punktami AB (pójdziemy prosto). W tym celu wykorzystamy iloczyn wektorowy wektorów $$\overrightarrow{AB}\ x\ \overrightarrow{AC}$$
Jeśli wektor AC jest przesunięty w stosunku do wektora AB w zgodnym kierunku ze wskazówkami zegara, to iloczyn wektorowy da wynik ujemny, jeśli wektor AC jest przesunięty w przeciwnym kierunku do wskazówek zegara, to iloczyn tych wektorów będzie dodatni, w przeciwnym razie punkty ABC są współliniowe (leżą na jednej prostej). Dzięki tej informacji łatwo można określić, w jakim kierunku udamy się idąc ku punktowi C.
W zgodnym kierunku ze wskazówkami zegara (skręt w prawo)
W przeciwnym kierunku ze wskazówkami zegara (skręt w lewo)
Tworzymy wektor AB, gdzie $$A = (x_A, y_A), B = (x_B, y_B)$$ w następujący sposób: $$\overrightarrow{AB}=[x_B-x_A, y_B-y_A]$$ gdzie $$[x_B-x_A, y_B-y_A]$$ to współrzędne wektora $$\overrightarrow{AB}$$. Następnie tworzymy wektor AC, gdzie $$A = (x_A, y_A), C = (x_C, y_C)$$ $$\overrightarrow{AC}=[x_C-x_A, y_C-y_A]$$ gdzie $$[x_C-x_A, y_C-y_A]$$ to współrzędne wektora $$\overrightarrow{AC}$$. Dla uproszczenia, niech $$\overrightarrow{AB}=[x_1,y_1]$$$$\overrightarrow{AC}=[x_2,y_2]$$
Iloczyn wektorowy wyznaczamy z wyznacznika: $$det \begin{vmatrix}x_1 & x_2\\ y_1 & y_2\end{vmatrix}=x_1\cdot y_2-x_2\cdot y_1$$
#include<iostream>
#define pkt pair<int, int>
using namespace std;
int iloczyn_wektorowy(pkt A, pkt B, pkt C)
{
int x1 = C.first - A.first, y1 = C.second - A.second,
x2 = C.first - B.first, y2 = C.second - B.second;
return x1*y2 - x2*y1;
}
int main()
{
pkt A, B, C;
cout<<"Podaj wspolrzedne punktu A: ";
cin>>A.first>>A.second;
cout<<"Podaj wspolrzedne punktu B: ";
cin>>B.first>>B.second;
cout<<"Podaj wspolrzedne punktu C: ";
cin>>C.first>>C.second;
int iw = iloczyn_wektorowy(A, B, C);
if(iw > 0)
cout<<"Idac odcinkiem AB nalezy skrecic w lewo w kierunku punktu C";
else
if(iw < 0)
cout<<"Idac odcinkiem AB nalezy skrecic w prawo w kierunku punktu C";
else
cout<<"Punkty sa wspoliniowe";
return 0;
}
Podaj wspolrzedne punktu A: 1 1 Podaj wspolrzedne punktu B: 2 2 Podaj wspolrzedne punktu C: 3 4 Idac odcinkiem AB nalezy skrecic w lewo w kierunku punktu C