优雅的方式来定位两个矩形

chi*_*org 6 javascript ruby language-agnostic math coordinates

我有一个矩形(称为目标),并希望在旁边放置另一个矩形(称为卫星).卫星具有一个位置(顶部,底部,左侧,右侧),用于确定相对于目标的放置边缘.它还有一个对齐方式 (左侧,中间,右侧为顶部和底部位置,顶部,中间和底部为左侧和右侧位置).

例:

+----------+----------------------------+
|          |                            |
|  Target  | Satellite, Position=RIGHT, |
|          | Align=TOP                  |
|          |                            |
|          |----------------------------+
|          |
+----------+
Run Code Online (Sandbox Code Playgroud)

我知道目标的左上角坐标以及它的宽度和高度.我也知道卫星的宽度和高度,并想要计算它的左上角坐标.我可以将其作为一系列12 if条款来实现,但也许有更优雅,数学或算法的方法来实现它.还有另一种方法:

# s = satellite, t = target
if pos == "top" && align == "left"
  s.x = t.x
  s.y = t.y - s.height
else if pos == "top" && align == "center"
  s.x = t.x + t.width / 2 - s.width / 2
  s.y = t.y - s.height
# etc, etc
Run Code Online (Sandbox Code Playgroud)

Ruby或JavaScript中的任何好的解决方案?

loc*_*zak 0

如果你使用了一系列对象,它就会起作用:

变量位置 = {

    顶部:{左:{x:t​​x,y:yy-s.height},中心:{x:t​​x.x + t.width/2- s.width/2,y:ty-s.height}}
    //ETC....
}
//然后要获取位置,您可以简单地
var pos = 位置[位置][对齐])