【问题标题】:Determine a bounding rectangle around a diagonal line确定围绕对角线的边界矩形
【发布时间】:2016-12-12 22:19:03
【问题描述】:

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

我现在需要能够确定围绕它的边界矩形的坐标。

我有坐标 A 和 B,以及线条粗细 (W)。

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

我进行了搜索,但找不到与已提出的问题相对应的问题。

【问题讨论】:

  • 好像是一道数学(几何)题
  • 我投票结束这个问题,因为它不是关于编程,而是关于几何。
  • 这是关于数学和编程的,因为数学公式需要翻译成相关的编程语言,在本例中是 Java。所以不是数学或编程的主题!

标签: java math geometry


【解决方案1】:
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

【讨论】:

  • 你怎么能用 4 个坐标来表达这个矩形...?
  • @willywonkadailyblah:哎呀,我回答了 AABB。
  • @YvesDaoust,谢谢。但是有一个问题,无论起点和终点的顺序如何,这都会起作用吗?我的意思是,起点可以大于终点 - 右下角到左上角吗?
  • @Simon:这个你可以自己查。
猜你喜欢
  • 2020-06-18
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
相关资源
最近更新 更多