如何计算旋转平面上反射光线与水平轴的夹角(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
相关产品推荐
相关产品推荐

