1. 向量三角函数计算的核心逻辑
在C++中处理向量三角函数运算时,我们需要先明确几个基本概念。向量在几何上代表有方向和大小的量,而三角函数则是描述角度与边长关系的数学工具。当我们需要计算两个向量之间的三角函数值时,本质上是在计算这两个向量夹角的正弦、余弦或正切。
关键提示:C++标准库中的三角函数默认使用弧度制而非角度制,这是许多初学者容易踩坑的地方。1度等于π/180弧度,这个转换关系需要牢记。
1.1 向量夹角与点积的关系
计算两个向量夹角三角函数的基础是向量点积公式。对于两个n维向量A和B,它们的点积可以表示为:
cpp复制A·B = |A| * |B| * cosθ
其中θ就是两个向量之间的夹角。由此我们可以推导出:
cpp复制cosθ = (A·B) / (|A| * |B|)
这个公式是整套计算的基础,后续的sin和tan都可以通过cos推导出来。在实际编程中,我们需要先实现向量的点积和模长计算。
1.2 弧度与角度的转换
C++的
cpp复制const double PI = 3.14159265358979323846;
double degreesToRadians(double degrees) {
return degrees * PI / 180.0;
}
这个转换函数在后续计算中会频繁使用,特别是在调试和结果验证阶段,我们常常需要在两种单位制之间切换。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 向量类的设计与实现
2.1 基本向量类结构
为了便于操作,我们先定义一个简单的Vector类来封装向量相关操作:
cpp复制class Vector {
private:
std::vector<double> components;
public:
Vector(const std::vector<double>& comps) : components(comps) {}
// 计算向量模长(欧几里得范数)
double magnitude() const {
double sum = 0.0;
for (auto comp : components) {
sum += comp * comp;
}
return sqrt(sum);
}
// 点积运算
double dotProduct(const Vector& other) const {
if (components.size() != other.components.size()) {
throw std::invalid_argument("Vectors must have same dimension");
}
double result = 0.0;
for (size_t i = 0; i < components.size(); ++i) {
result += components[i] * other.components[i];
}
return result;
}
// 其他向量运算...
};
这个基础类封装了向量运算
