计算对象的新x大小

时间:2018-06-20 01:41:36

标签: javascript

上下文

我有一个JavaScript 2d等距游戏,当对象B与对象A相交时,对象B将进入对象A的容器中。

一旦输入对象A的容器,则需要更新对象A的x和y大小(已占用的图块数量)

当对象B添加到对象A时,我首先尝试计算对象的新X大小。

问题

这是代表当前案件的图片:

example

对象A是带有黑色边框的形状,而对象B是带有红色边框的形状。蓝色区域是对象的“基础” X位置(为0); len1是对象A的X长度(= 2)。与对象2相同;基本X位置(= X2)为1; len2是2

在这种情况下,我试图找出绿色框的X大小,在这种情况下为3。我需要找到一些适用于许多情况的“公式”,例如当X1为在与X2相同的位置(X1-X2 = 0)。

我发现我的问题很难解释,所以希望我的解释清楚。不要犹豫,让我澄清评论中的内容

编辑:还请注意以下可能性

Len1 != Len2
x1 > x2
x1 < x2

1 个答案:

答案 0 :(得分:0)

您可以在此处将keyPressed()draw的段进行合并:

a

如果您使用b,只需将class Segment { constructor (left, right) { if (right < left) throw new Error(`Needs left < right: ${left} > ${right}`); this.left = left; this.right = right; } merge ({left, right}) { if (this.left <= right && left <= this.right) { // both segments intersect this.left = Math.min(this.left, left); this.right = Math.max(this.right, right); } return this; } get length () { return this.right - this.left + 1; } } let a = new Segment(0,1), b = new Segment(1,2); a.merge(b); console.log(a); // Segment { left: 0, right: 2 } console.log(a.length); // 3 替换为{x, length}

如果要合并帧的X和Y,而不是合并段的X,则rightx + length - 1的逻辑相同。