gpt4 book ai didi

javascript - 返回交点位置和大小

转载 作者:行者123 更新时间:2023-12-02 17:38:18 25 4
gpt4 key购买 nike

我正在开发一个游戏,我发现了 ( a problem ),为了解决它,我需要返回交叉点位置和大小。

这是矩形碰撞检测代码:

for (var i = 0; i < rects.length; i++) {
for (var others = 0; others < rects.length; others++) {
if (others != i) {
if (rects[others].y + rects[others].height >= rects[i].y &&
rects[others].x + rects[others].width >= rects[i].x &&
rects[others].x <= rects[i].x + rects[i].width &&
rects[others].y <= rects[i].y + rects[i].height) {
// They're intersecting!
intery = 0; // Intersection Y
interx = 0; // Intersection X
interw = 0; // Intersection Width
interh = 0; // Intersection Height
}
}
}
}

最佳答案

演示:http://jsfiddle.net/m1erickson/TqRxG/

如果你有 2 个像这样定义的矩形:

enter image description here

var r1={
x:40,
y:40,
w:50,
h:30,
}

var r2={
x:60,
y:60,
w:50,
h:30,
}

然后你可以像这样计算它们的交集矩形(如果有):

enter image description here

function intersectingRect(r1,r2){
var x=Math.max(r1.x,r2.x);
var y=Math.max(r1.y,r2.y);
var xx=Math.min(r1.x+r1.w,r2.x+r2.w);
var yy=Math.min(r1.y+r1.h,r2.y+r2.h);
return({x:x,y:y,w:xx-x,h:yy-y});
}

[添加:检测圆与矩形碰撞]

如果你有一个这样定义的圆:

var c={
x:50,
y:50,
r:15
}

然后你可以像这样确定圆形和矩形是否发生碰撞:

function RectCircleColliding(circle,rect){
var distX = Math.abs(circle.x - rect.x-rect.w/2);
var distY = Math.abs(circle.y - rect.y-rect.h/2);
if (distX > (rect.w/2 + circle.r)) { return false; }
if (distY > (rect.h/2 + circle.r)) { return false; }
if (distX <= (rect.w/2)) { return true; }
if (distY <= (rect.h/2)) { return true; }
var dx=distX-rect.w/2;
var dy=distY-rect.h/2;
return (dx*dx+dy*dy<=(circle.r*circle.r));
}

关于javascript - 返回交点位置和大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22437523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com