【发布时间】:2011-09-11 14:11:28
【问题描述】:
http://img684.imageshack.us/img684/9305/fffnv.png
我需要解决数学问题吗,有没有简单的方法可以解决这个问题?
【问题讨论】:
-
嗯,你永远不需要做数学来解决数学问题。你可以试试神圣的灵感。或者,晚上试着把剧情放在枕头底下,希望牙仙给个答案。但最终,数学将是最一致的解决方案。
标签: javascript html math canvas
http://img684.imageshack.us/img684/9305/fffnv.png
我需要解决数学问题吗,有没有简单的方法可以解决这个问题?
【问题讨论】:
标签: javascript html math canvas
显然,您确实需要一些数学知识才能做到这一点。
Math.atan ((y-y')/(x-x')) 将为您提供第一行与地平线的角度(以弧度为单位)。
将 Pi/2(90 度)加到这个角度,得到 z 线的角度。
然后你可以使用Math.sin和Math.cos`乘以z来求第三个点的坐标。
【讨论】:
atan(不是tan),甚至比atan(y/x) 更好的是atan2(y, x),它可以处理整个圆并且不需要针对不同象限的所有情况。另外要找到结果点,您需要使用cos 和sin(不是acos 和asin)。
atan 而不是atan2 是一个坏主意,因为当dx==0 时您会遇到问题,并且因为您必须处理正/负dx 或dy 的所有情况(在计算@987654337 时) @ 两个负数或两个正数会给你相同的结果,从而丢弃符号信息,而在这两种情况下,角度显然是相反的;(+1,+1) = PI/4, (-1,-1) = -3/4 PI)。
首先计算从第二点到第一点的直线角度
var angle = Math.atan2(first.y - second.y, first.x - second.x);
然后您使用sin 和cos 计算结果点
var result = {x : second.x + z*Math.cos(angle + Math.PI/2),
y : second.y + z*Math.sin(angle + Math.PI/2)};
【讨论】: