【C言語】ベクトルの外積を求める方法

この記事では、C言語を使用してベクトルの外積を計算する方法を学びます。

2次元ベクトルと3次元ベクトルの外積の計算方法を解説し、具体的なサンプルコードを提供します。

初心者の方でもわかりやすく、実際のプログラムの実行結果も確認できます。

目次から探す

外積の計算方法

ベクトルの外積は、2つのベクトルの直積であり、新しいベクトルを生成します。

外積は、ベクトルの向きや面積を表すために使用されます。

C言語では、2次元ベクトルと3次元ベクトルの外積を計算する方法があります。

2次元ベクトルの外積

2次元ベクトルの外積は、以下の式で計算されます。

cross_product = (x1 * y2) - (x2 * y1)

ここで、(x1, y1)(x2, y2)はそれぞれ2つのベクトルの座標を表します。

この式によって計算されたcross_productは、2次元ベクトルの外積を表します。

以下に、具体的な例を示します。

#include <stdio.h>
int main() {
    int x1, y1, x2, y2;
    printf("ベクトル1の座標を入力してください(x1, y1): ");
    scanf("%d %d", &x1, &y1);
    printf("ベクトル2の座標を入力してください(x2, y2): ");
    scanf("%d %d", &x2, &y2);
    int cross_product = (x1 * y2) - (x2 * y1);
    printf("2次元ベクトルの外積は %d です。\n", cross_product);
    return 0;
}

上記のコードでは、ユーザーに2つのベクトルの座標を入力してもらい、それを用いて外積を計算しています。

計算結果はcross_productに格納され、結果が表示されます。

3次元ベクトルの外積

3次元ベクトルの外積は、以下の式で計算されます。

cross_product_x = (y1 * z2) - (z1 * y2)
cross_product_y = (z1 * x2) - (x1 * z2)
cross_product_z = (x1 * y2) - (y1 * x2)

ここで、(x1, y1, z1)(x2, y2, z2)はそれぞれ2つのベクトルの座標を表します。

これらの式によって計算されたcross_product_xcross_product_ycross_product_zは、3次元ベクトルの外積を表します。

#include <stdio.h>
typedef struct {
    int x;
    int y;
    int z;
} Vector3D;
Vector3D crossProduct(Vector3D v1, Vector3D v2) {
    Vector3D result;
    result.x = (v1.y * v2.z) - (v1.z * v2.y);
    result.y = (v1.z * v2.x) - (v1.x * v2.z);
    result.z = (v1.x * v2.y) - (v1.y * v2.x);
    return result;
}
int main() {
    Vector3D v1, v2;
    printf("ベクトル1の座標を入力してください(x, y, z): ");
    scanf("%d %d %d", &v1.x, &v1.y, &v1.z);
    printf("ベクトル2の座標を入力してください(x, y, z): ");
    scanf("%d %d %d", &v2.x, &v2.y, &v2.z);
    Vector3D cross_product = crossProduct(v1, v2);
    printf("3次元ベクトルの外積は (%d, %d, %d) です。\n", cross_product.x, cross_product.y, cross_product.z);
    return 0;
}

上記のコードでは、Vector3Dという構造体を定義し、外積の計算を行うcrossProduct関数を作成しています。

ユーザーに2つのベクトルの座標を入力してもらい、それを用いて外積を計算しています。

計算結果はcross_productに格納され、結果が表示されます。

以上が、C言語でベクトルの外積を求める方法の解説です。

外積の計算方法は、2次元ベクトルと3次元ベクトルで異なるため、適切な計算式を使用することが重要です。

目次から探す