Đây là chương trình C++ để tính tích có hướng (cross product) của hai vectơ.
Giả sử:
M = m1 * i + m2 * j + m3 * k
N = n1 * i + n2 * j + n3 * k.
Thì tích có hướng = (m2 * n3 – m3 * n2) * i + (m1 * n3 – m3 * n1) * j + (m1 * n1 – m2 * n1) * k
trong đó m2 * n3 – m3 * n2, m1 * n3 – m3 * n1 và m1 * n1 – m2 * n1 là các hệ số của vectơ đơn vị theo hướng i, j và k.
Thuật toán
Bắt đầu
Khai báo hàm cProduct().
Khai báo ba vectơ v_A[], v_B[], c_P[] kiểu integer.
c_P[0] = v_A[1] * v_B[2] - v_A[2] * v_B[1].
c_P[1] = -(v_A[0] * v_B[2] - v_A[2] * v_B[0]).
c_P[2] = v_A[0] * v_B[1] - v_A[1] * v_B[0].
Khởi tạo giá trị cho v_A[].
Khởi tạo giá trị cho v_B[].
Khởi tạo c_P[] với biến integer n.
In "Tích có hướng:".
Gọi hàm cProduct() để thực hiện tích có hướng giữa v_A[] và v_B[].
for (int i = 0; i < n; i++)
In giá trị của c_P[].
Kết thúc.
Mã ví dụ
#include <iostream>
#define n 3
using namespace std;
void crossProduct(int v_A[], int v_B[], int c_P[]) {
c_P[0] = v_A[1] * v_B[2] - v_A[2] * v_B[1];
c_P[1] = -(v_A[0] * v_B[2] - v_A[2] * v_B[0]);
c_P[2] = v_A[0] * v_B[1] - v_A[1] * v_B[0];
}
int main() {
int v_A[] = { 7, 6, 4 };
int v_B[] = { 2, 1, 3 };
int c_P[n];
cout << "Tích có hướng:";
crossProduct(v_A, v_B, c_P);
for (int i = 0; i < n; i++)
cout << c_P[i] << " ";
return 0;
}
Kết quả
Tích có hướng: 14 13 -5