计算两个空间向量的夹角

整体流程

首先,我们需要明确计算两个空间向量夹角的公式为:

$$ \cos\theta = \frac{a \cdot b}{|a| |b|} $$

其中,$a \cdot b$ 表示两个向量的点积,$|a| |b|$ 表示两个向量的模的乘积。

接下来,我们将通过以下步骤来实现这个计算过程:

步骤 操作
1 输入两个向量的坐标
2 计算两个向量的点积
3 计算两个向量的模的乘积
4 计算夹角的余弦值
5 计算夹角的弧度值
6 将弧度值转换为角度值

代码实现

步骤1:输入两个向量的坐标

// 定义两个向量的坐标
double[] vectorA = {1, 2, 3};
double[] vectorB = {4, 5, 6};

步骤2:计算两个向量的点积

double dotProduct = 0;
for (int i = 0; i < vectorA.length; i++) {
    dotProduct += vectorA[i] * vectorB[i];
}

步骤3:计算两个向量的模的乘积

double normA = Math.sqrt(vectorA[0]*vectorA[0] + vectorA[1]*vectorA[1] + vectorA[2]*vectorA[2]);
double normB = Math.sqrt(vectorB[0]*vectorB[0] + vectorB[1]*vectorB[1] + vectorB[2]*vectorB[2]);
double productOfNorms = normA * normB;

步骤4:计算夹角的余弦值

double cosTheta = dotProduct / productOfNorms;

步骤5:计算夹角的弧度值

double radian = Math.acos(cosTheta);

步骤6:将弧度值转换为角度值

double degree = Math.toDegrees(radian);

完整代码

public class VectorAngleCalculator {

    public static void main(String[] args) {
        // 定义两个向量的坐标
        double[] vectorA = {1, 2, 3};
        double[] vectorB = {4, 5, 6};

        // 计算两个向量的点积
        double dotProduct = 0;
        for (int i = 0; i < vectorA.length; i++) {
            dotProduct += vectorA[i] * vectorB[i];
        }

        // 计算两个向量的模的乘积
        double normA = Math.sqrt(vectorA[0]*vectorA[0] + vectorA[1]*vectorA[1] + vectorA[2]*vectorA[2]);
        double normB = Math.sqrt(vectorB[0]*vectorB[0] + vectorB[1]*vectorB[1] + vectorB[2]*vectorB[2]);
        double productOfNorms = normA * normB;

        // 计算夹角的余弦值
        double cosTheta = dotProduct / productOfNorms;

        // 计算夹角的弧度值
        double radian = Math.acos(cosTheta);

        // 将弧度值转换为角度值
        double degree = Math.toDegrees(radian);

        System.out.println("夹角的角度值为:" + degree);
    }
}

序列图

sequenceDiagram
    participant 小白
    participant 开发者

    小白->>开发者: 请求教学如何计算两个向量的夹角
    开发者->>小白: 解释计算流程
    小白->>开发者: 输入两个向量的坐标
    开发者->>小白: 计算点积
    开发者->>小白: 计算模的乘积
    开发者->>小白: 计算夹角的余弦值
    开发者->>小白: 计算夹角的