ThreeJS:在45度下跟随鼠标

时间:2014-04-28 07:55:12

标签: math line angle

让我们说我正在将鼠标移动到一个圆圈中,其终点位于鼠标位置之后。当按住左键Ctrl时,此线的终点应该坚持45度,具体取决于终点与线的起点之间的角度。

请注意,我正在查看ABOVE(y +)中直线向下看的行,这就是我使用X和Z来定义位置的原因。

这是我走了多远。所以我得到了最近的45度角,现在我只需要计算线的正确终点。

p1 =行的起点

p2 =线的终点(鼠标位置)

if (l_vIsCtrlPressed) {
   var length = Algo.Length(p1, p2);
   var angle = Algo.Angle(p1, p2);
   angle = Algo.ConvertToDegree(angle);
   angle = Math.round(angle / 45) * 45;
}

我尝试使用以下计算但没有成功。

p2.x = p1.x - length * Math.cos(angle);
p2.z = p1.z - length * Math.sin(angle);

角(度)

0 LEFT

-90 DOWN

90 UP

180&& -180对

1 个答案:

答案 0 :(得分:0)

我忘了将角度转换回弧度-.-“ 以下代码修复了我的问题。现在用0度,45度,90度,135度,180度等角度绘制线条

if (l_vIsCtrlPressed) {
    var length = Algo.Length(p1, p2);
    var angle = Algo.Angle(p1, p2);
    angle = Algo.ConvertToDegrees(angle);
    angle = Math.round(angle / 45) * 45;
    angle = Algo.ConvertToRadians(angle); // FORGOT TO CONVERT BACK TO RADIANS

    p2.x = p1.x - length * Math.cos(angle);
    p2.z = p1.z - length * Math.sin(angle);
}