Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算与直线垂直的点_Java_Geometry - Fatal编程技术网

Java 计算与直线垂直的点

Java 计算与直线垂直的点,java,geometry,Java,Geometry,我有一条由(x1,y1)(x2,y2)指定的线L,我想计算 点的坐标,即: 位于与L在其长度的一半处相交的法线上 距离L有一定距离 示例: 如果直线为(x1,a)(x2,a)(水平),则为 计算点为((x2-x1)/2,D) 如果直线为(a,y1)(a,y2)(垂直),则计算出 点为(D,(y2-y1)/2) 但是我不知道如何用一种通用的方法计算所有的坐标 不考虑角度的直线(-Pi到Pi) 提前谢谢 两个点之间的中心由 ((x1+x2)/2, (y1+y2)/2) 而(非标准化的)正常

我有一条由(x1,y1)(x2,y2)指定的线L,我想计算 点的坐标,即:

  • 位于与L在其长度的一半处相交的法线上
  • 距离L有一定距离
示例:

  • 如果直线为(x1,a)(x2,a)(水平),则为 计算点为((x2-x1)/2,D)
  • 如果直线为(a,y1)(a,y2)(垂直),则计算出 点为(D,(y2-y1)/2)
但是我不知道如何用一种通用的方法计算所有的坐标 不考虑角度的直线(-Pi到Pi)


提前谢谢

两个点之间的中心由

((x1+x2)/2, (y1+y2)/2)
而(非标准化的)正常

(-(y2-y1), (x2-x1))
如果我们规范化这个向量,我们得到

(-(y2-y1), (x2-x1)) / sqrt((x2-x1)^2+(y2-y1)^2)
如果我们把两者结合起来,我们就能找到两点

((x1+x2)/2, (y1+y2)/2) +- D * (-(y2-y1), (x2-x1)) / sqrt((x2-x1)^2+(y2-y1)^2)

这两个问题都满足您的要求。

一个很好的问题,因为我认为它应该标记为HomeWork。如果您向我们展示您迄今为止尝试过的代码,它可能会帮助我们确定这是否是一个编程问题。