Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ คำนวณ Cross Product ของเวกเตอร์สองตัว

นี่คือโปรแกรม C++ สำหรับคำนวณ Cross Product (ผลคูณไขว้) ของเวกเตอร์สองตัว

สมมติว่า

M = m1 * i + m2 * j + m3 * k

N = n1 * i + n2 * j + n3 * k

ดังนั้น Cross Product = (m2 * n3 – m3 * n2) * i + (m1 * n3 – m3 * n1) * j + (m1 * n1 – m2 * n1) * k

โดยที่ m2 * n3 – m3 * n2, m1 * n3 – m3 * n1 และ m1 * n1 – m2 * n1 เป็นสัมประสิทธิ์ของเวกเตอร์หน่วยในทิศทาง i, j และ k

อัลกอริทึม

เริ่มต้น
  ประกาศฟังก์ชัน cProduct()
  ประกาศอาร์เรย์ v_A[], v_B[], c_P[] ชนิด 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]
  กำหนดค่าใน v_A[]
  กำหนดค่าใน v_B[]
  เริ่มต้น c_P[] ด้วยตัวแปร n
  แสดง "Cross product:"
  เรียกฟังก์ชัน cProduct() เพื่อคำนวณ cross product ระหว่าง v_A[] และ v_B[]
  for (int i = 0; i < n; i++)
    แสดงค่าของ c_P[]
สิ้นสุด

ตัวอย่างโค้ด

#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 << "Cross product: ";
    crossProduct(v_A, v_B, c_P);
    for (int i = 0; i < n; i++)
        cout << c_P[i] << " ";
    return 0;
}

ผลลัพธ์

Cross product: 14 13 -5