计算两条直线夹角(C++)

计算两条直线的锐角可以使用向量的知识来实现。在C++中,我们可以定义一个函数来计算两个向量的夹角,并根据夹角的余弦值来判断角度的大小。以下是一个用C++编写的示例代码:

#include <iostream>
#include <cmath>

using namespace std;

struct Vector {
    
    
    double x;
    double y;
};

// 计算向量的长度
double vectorLength(const Vector& v) {
    
    
    return sqrt(v.x * v.x + v.y * v.y);
}

// 计算两个向量的点积
double dotProduct(const Vector& v1, const Vector& v2) {
    
    
    return v1.x * v2.x + v1.y * v2.y;
}

// 计算两个向量的夹角(以弧度为单位)
double angleBetweenVectors(const Vector& v1, const Vector& v2) {
    
    
    double cosTheta = dotProduct(v1, v2) / (vectorLength(v1) * vectorLength(v2));
    return acos(cosTheta);
}

int main() {
    
    
    Vector line1, line2;

    cout << "请输入第一条直线的向量(x, y): ";
    cin >> line1.x >> line1.y;

    cout << "请输入第二条直线的向量(x, y): ";
    cin >> line2.x >> line2.y;

    double angle = angleBetweenVectors(line1, line2);

    // 将弧度转换为角度
    double degrees = angle * 180.0 / M_PI;

    cout << "两条直线的锐角为: " << degrees << "度" << endl;

    return 0;
}

请注意,这个示例代码假设两个向量表示的直线起点都在原点 (0, 0) 处。如果直线起点不在原点,我们需要将其平移到原点后再进行计算。同时,还应该处理除数为零的情况和其他异常情况。此处示例代码仅用于演示如何计算两条直线的锐角。

猜你喜欢

转载自blog.csdn.net/weixin_42990464/article/details/132079696