Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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_Math_Geometry - Fatal编程技术网

Java 确定围绕对角线的边框

Java 确定围绕对角线的边框,java,math,geometry,Java,Math,Geometry,用户将在屏幕上定义一条线,该线在绘制时具有给定的厚度(或宽度) 现在,我需要能够确定围绕这个区域的边界矩形的坐标。 我有坐标A和B,以及线的厚度(W) 如何计算坐标A1、A2、B1和B2 我搜索了一下,但找不到与此对应的问题 Dx= Xb - Xa Dy= Yb - Ya D= sqrt(Dx * Dx + Dy * Dy) Dx= 0.5 * W * Dx / D Dy= 0.5 * W * Dy / D 这将计算(Dx,Dy)沿AB方向的长度为W/2的向量。然后(-Dy,Dx)是垂直向量

用户将在屏幕上定义一条线,该线在绘制时具有给定的厚度(或宽度)

现在,我需要能够确定围绕这个区域的边界矩形的坐标。

我有坐标A和B,以及线的厚度(W)

如何计算坐标A1、A2、B1和B2

我搜索了一下,但找不到与此对应的问题

Dx= Xb - Xa
Dy= Yb - Ya
D= sqrt(Dx * Dx + Dy * Dy)
Dx= 0.5 * W * Dx / D
Dy= 0.5 * W * Dy / D
这将计算
(Dx,Dy)
沿
AB
方向的长度为
W/2
的向量。然后
(-Dy,Dx)
是垂直向量

Xmin = min(Xa, Xb) - abs(Dy) 
Xmax = max(Xa, Xb) + abs(Dy)
Ymin = min(Ya, Yb) - abs(Dx)
Ymax = max(Ya, Yb) + abs(Dx)

更新

我错答了AABB

对于笔划的四个角

Xa - Dy, Ya + Dx
Xa + Dy, Ya - Dx
Xb - Dy, Yb + Dx
Xb + Dy, Yb - Dx

这似乎是一个数学(几何学)问题,我投票将这个问题作为离题题结束,因为它不是关于编程,而是关于几何学。这是关于数学和编程的,因为数学公式需要翻译成相关的编程语言,在本例中是Java。所以,无论是数学还是编程都不是一个主题!如何用4个坐标来表示这个矩形@威利沃恩卡戴利布拉:噢,我为AABB做了回答。@YvesDaoust,谢谢你。但有一个问题是,无论起点和终点的顺序如何,这种方法都有效吗?我的意思是,起点能大于终点吗?从右下角到左上角?西蒙:这是你可以自己检查的。