让我们说我正在将鼠标移动到一个圆圈中,其终点位于鼠标位置之后。当按住左键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对
答案 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);
}