【问题标题】:How to find the postion of this point (canvas)?如何找到这个点的位置(画布)?
【发布时间】:2011-09-11 14:11:28
【问题描述】:

http://img684.imageshack.us/img684/9305/fffnv.png

我需要解决数学问题吗,有没有简单的方法可以解决这个问题?

【问题讨论】:

  • 嗯,你永远不需要做数学来解决数学问题。你可以试试神圣的灵感。或者,晚上试着把剧情放在枕头底下,希望牙仙给个答案。但最终,数学将是最一致的解决方案。

标签: javascript html math canvas


【解决方案1】:

显然,您确实需要一些数学知识才能做到这一点。

Math.atan ((y-y')/(x-x')) 将为您提供第一行与地平线的角度(以弧度为单位)。

将 Pi/2(90 度)加到这个角度,得到 z 线的角度。

然后你可以使用Math.sinMath.cos`乘以z来求第三个点的坐标。

【讨论】:

  • 这是错误的。要获得角度,您需要使用atan(不是tan),甚至比atan(y/x) 更好的是atan2(y, x),它可以处理整个圆并且不需要针对不同象限的所有情况。另外要找到结果点,您需要使用cossin(不是acosasin)。
  • 删除了反对票。我仍然认为使用atan 而不是atan2 是一个坏主意,因为当dx==0 时您会遇到问题,并且因为您必须处理正/负dxdy 的所有情况(在计算@987654337 时) @ 两个负数或两个正数会给你相同的结果,从而丢弃符号信息,而在这两种情况下,角度显然是相反的;(+1,+1) = PI/4, (-1,-1) = -3/4 PI)。
【解决方案2】:

首先计算从第二点到第一点的直线角度

var angle = Math.atan2(first.y - second.y, first.x - second.x);

然后您使用sincos 计算结果点

var result = {x : second.x + z*Math.cos(angle + Math.PI/2),
              y : second.y + z*Math.sin(angle + Math.PI/2)};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 2023-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    相关资源
    最近更新 更多