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

如何计算旋转平面上反射光线与水平轴的夹角(C++实现)

计算光线反射角度的C++实现方案

我正在编写一个C++程序,需要计算光线的反射角度。示例中,黄色线条(入射光线)与X轴夹角为135度,照射到红色旋转平面后发生反射,绿色线条为反射光线。我已尝试计算黄色光线与红色平面的夹角,但不知如何结合旋转平面的角度进行计算。请问如何计算绿色反射光线与水平轴的夹角?希望能提供代码示例。

我尝试的代码

首先是计算入射光线与红色平面夹角的代码:

float a = atan(abs((HitPointWithRedLine.x - YellowLineStartPoint.x)) / abs(HitPointWithRedLine.y - YellowLineStartPoint.y)) * 180 / 3.14; 

之后我尝试结合平面角度计算反射角,但这段代码无法正常工作:

float resultAngle = a - angleLine

解决方案

以下方案虽非最优但可正常运行,此类计算使用向量替代角度会更严谨:

int LineAngle = 0;

int IncidentAngle = 135;
int beta = 180 - IncidentAngle;

int AngleOfRefrection = beta + 2 * LineAngle;


// 边界情况处理
if (IncidentAngle == 90)
    AngleOfRefrection = 270;
    
else if (IncidentAngle == 180)
    AngleOfRefrection = 0;

else if (IncidentAngle == 270)
    AngleOfRefrection = 90;

else if (IncidentAngle == 360 || IncidentAngle == 0)
    AngleOfRefrection = 180;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:39:55