You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在OpenGL中绘制具有指定弧度夹角的两个向量

解决OpenGL中绘制指定夹角向量的问题

你的代码里两个向量的终点坐标完全相同(都是(0, vectorYRScalingValue, 0)),所以它们会完全重叠,自然看不到夹角。要实现指定弧度的夹角,需要用三角函数计算第二个向量的终点坐标。

假设你要让两个向量的夹角为theta(单位:弧度),第一个向量沿Y轴正方向(和你当前的Vx一致),第二个向量的终点坐标可以通过以下方式计算:

  • X坐标:vectorLength * sin(theta)
  • Y坐标:vectorLength * cos(theta)
  • Z坐标:保持0不变(2D平面向量场景)

修改后的代码示例:

#include <math.h> // 需包含数学库头文件

// 定义向量长度和指定夹角(示例为π/4,即45度)
const float vectorLength = 5.0f;
const float theta = M_PI / 4.0f;

// 绘制第一个向量(沿Y轴)
glBegin(GL_LINES);
glColor4f(1, .5, 0, 1);
glVertex3f(0, 0, 0);
glVertex3f(0, vectorLength, 0);
glEnd();

// 绘制第二个向量(与第一个夹角为theta)
glBegin(GL_LINES);
glColor4f(1, .5, 0, 1);
glVertex3f(0, 0, 0);
// 用三角函数计算终点坐标
glVertex3f(vectorLength * sin(theta), vectorLength * cos(theta), 0);
glEnd();

如果你的坐标系是X轴向右、Y轴向上,上述计算逻辑成立。若需要调整向量朝向,只需修改三角函数的组合(比如交换sin和cos、添加符号)即可。

注意:使用GCC编译时需添加-lm参数链接数学库,否则会出现三角函数未定义的错误。

内容的提问来源于stack exchange,提问作者Paul C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:45:36