Math 计算垂直于并以另一条给定直线为中心的直线的坐标

Math 计算垂直于并以另一条给定直线为中心的直线的坐标,math,coordinates,trigonometry,Math,Coordinates,Trigonometry,我给出了以下内容: 第一行的x坐标:0 第一行的y坐标:0 第一条线的角度:135度 第一行的长度:10 第二行偏移量:5 首先,我必须计算第一行的x2和y2坐标,我的操作如下: var x2 = length * Math.cos(Math.PI * angle / 180.0); var y2 = length * Math.sin(Math.PI * angle / 180.0); 现在我已经给出了(x1 | y1)和(x2 | y2)。在此基础上,根据给定的偏移量,我需要计算一条直线的

我给出了以下内容:

第一行的x坐标:0
第一行的y坐标:0
第一条线的角度:135度
第一行的长度:10

第二行偏移量:5

首先,我必须计算第一行的x2和y2坐标,我的操作如下:

var x2 = length * Math.cos(Math.PI * angle / 180.0);
var y2 = length * Math.sin(Math.PI * angle / 180.0);
现在我已经给出了(x1 | y1)和(x2 | y2)。在此基础上,根据给定的偏移量,我需要计算一条直线的坐标,该直线垂直于第一条直线,长度与第一条直线相同。我试图实现的是下图,黄线是给出的,绿线是需要的


我知道我必须使用窦房结和余弦,但是我无法得到一个适用于每个给定角度的公式。如果有人能提供一个公式或指引我正确的方向,我将不胜感激。提前感谢

不确定这是最快的实现 但我认为这很容易遵循,并且可以作为一个更快的例行程序的测试:

这些步骤是:

  • 把线引到原点
  • 旋转90度
  • 返回原位置
  • 添加“偏移”(和长度的一半)
  • 全部计算如下:

  • 找到线的中心
    [a,b]=[(x1+x2)/2,(y1+y2)/2]
    并从两端减去它。类似地,你会得到
    [x'1,y'1]=[x1-a,y1-b]
    [x'2,y'2]
  • 使用,对于90度,它只是
    [[0,1],-1,0]*[x'1,y'1]
  • [a,b]
    添加回两点
  • (用
    theta
    标记角度,用
    d
    标记距离):添加
    [(a+d)*cos(theta),(b+d)*sin(theta)]
    以到达最终位置

  • 这个答案很有用,我知道你需要(x3,y3)和(x4,y4)。您还需要黄线和绿线的截距坐标。如果你需要你画的线。否则,只要有合适的角度,实际的线段可以在任何地方。好的,黄绿线的交点可以很容易地计算:
    var xIntersection=(偏移+长度)*Math.cos(Math.PI*angle/180.0)``var yIntersection=(偏移量+长度)*数学sin(数学π*角度/180.0)否,使用棕褐色。三角形=(x1,y1)-(a,b)-(x4,y4)。角度(x3,y3),(x4,y4),(x1,y1)=180-90-(135-90)=45(等腰直角三角形)。直线(x4,y4)-(a,b)=10+5=15(因为tan 45是1)。两条线的尺寸都一样!?这怎么可能,除非我在这个问题上遗漏了什么。我真的不明白你怎么能说出这些点,(x1,y1)=a,(x2,y2)=b,(x4,y4)=c,(x3,y3)=d。如果线ab延长,则让它在(a,b)=e处与线dc相交。ab线与垂直线的夹角为135。三角形aec是直角三角形。角度aec是直角。角度cae=135-90=45,因此角度ace=180-90-45=45。因此,三角形aec是等腰直角三角形。因此,其底部=其高度(tan 45=1=垂直/底部)。如果高度=5+10=15,ec也为15。现在,在你们的问题中,ce线是否延伸到ab的投影,或者是否短于ab的投影。当ab=10和ec=15时,不可能出现第1种情况。第二种情况可能