给定两个日期范围,确定两个日期范围是否重叠的最简单或最有效的方法是什么?
举个例子,假设我们有通过日期时间变量表示的范围StartDate1来EndDate1 和 StartDate2到EndDate2.
我正在寻找一种算法来检测两个矩形是否相交(一个是任意角度,另一个只有垂直/水平线).
测试一个角落是否在另一个ALMOST中.如果矩形形成十字形状,则失败.
避免使用线条的斜率似乎是一个好主意,这需要垂直线条的特殊情况.
我有两个矩形,每个矩形有4个值:
左侧位置X,顶部位置Y,宽度W和高度H:
X1, Y1, H1, W1
X2, Y2, H2, W2
Run Code Online (Sandbox Code Playgroud)
矩形不会旋转,如下所示:
+--------------------> X axis
|
| (X,Y) (X+W, Y)
| +--------------+
| | |
| | |
| | |
| +--------------+
v (X, Y+H) (X+W,Y+H)
Y axis
Run Code Online (Sandbox Code Playgroud)
确定两个矩形的交点是否为空的最佳解决方案是什么?
我正在生成一些像这样的svg图像:
<svg version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<style type="text/css">
text {
font-family: Helvetica;
font-size: 60px;
paint-order: stroke;
stroke: #000000;
stroke-width: 6px;
stroke-linecap: butt;
stroke-linejoin: miter;
font-weight: 800;
}
</style>
<g stroke="lightgray" stroke-dasharray="1,1" stroke-width="1" transform="scale(4, 4)">
<line x1="0" y1="0" x2="256" y2="256"/>
<line x1="256" y1="0" x2="0" y2="256"/>
<line x1="128" y1="0" x2="128" y2="256"/>
<line x1="0" y1="128" x2="256" y2="128"/>
</g>
<g transform="scale(1, -1) translate(0, -900)">
<path d="M 128 445 Q 222 525 301 653 Q 319 685 334 709 L 343 725 Q …Run Code Online (Sandbox Code Playgroud)javascript algorithm coordinates force-based-algorithm node.js
检测红色矩形是否与黑色多边形重叠的最佳方法是什么?请参考此图片:

例:
<div id="big"> </div>
<div class="small"> </div>
<div class="small"> </div>
<div class="small"> </div>
<div class="small"> </div>
<div class="small"> </div>
<!-- ...and so on -->
Run Code Online (Sandbox Code Playgroud)
"#big"绝对位于".small"的一部分后面,但不是父元素.
我一直这样做:
var smallArray = [];
var $big = $('#big');
var $bigPos = $big.offset();
$('div.small').each(function() {
var $this = $(this);
var $thisPos = $this.offset();
if(
$thisPos.left >= $bigPos.left &&
$thisPos.left <= $bigPos.left+$big.outerWidth() &&
$thisPos.top >= $bigPos.top &&
$thisPos.top <= $bigPos.top+$big.outerHeight()
) smallArray.push($this);
});
Run Code Online (Sandbox Code Playgroud)
......但这似乎很糟糕.我是否错过了一些jQuery或vanilla JavaScript的方法,这些方法可以让我以更优雅高效的方式做到这一点?
非常感谢您提供的任何帮助.
我有两个矩形,我必须在函数中返回它们是否相交.
它们由[ x0, y0, x1, y1 ]表示矩形的左上角和右下角的对表示.或者,您的解决方案可能是[ x0, y0, width, height ]如果它在某种程度上更简单,我可以通过它调整我的函数的参数输入.
我试图看看矩形A中的两个角中是否有任何一个包含在矩形B中,但如果A大于B且B部分包含在A中,则表示它不重叠.现在我可以尝试A和B,但这似乎是一种糟糕的做事方式.
我不能预制一个大网格并占据矩形的矩形,因为不知道矩形是什么.我只能说它们是无符号整数,最小值为0且未知最大值.
我有以下表格数据:
Table: Seasons
id from to
---------------------------
1 2013-08-30 2013-09-04
2 2013-09-05 2013-09-08
3 2013-09-09 2013-09-20
Run Code Online (Sandbox Code Playgroud)
我需要运行一个查询,它返回特定日期范围内的所有记录,例如:返回受影响的所有记录 2013-09-04 to 2013-09-05
它会是这样的
date range: | 09-04 - 09-05|
seasons: 08-30 - 09-04 | 09-05 - 09-08 | 09-09 - 09-20
Run Code Online (Sandbox Code Playgroud)
所以它应该返回前2个记录.我已尝试使用BETWEEN进行查询,但它接缝我需要构建几个案例 - 还是有更简单的方法?thankx
所以我用这种方式来检测方块移动和接触其他方块并做出反应。它使用勾股定理来生成第三个参数,因此当方块接触时您不会得到两个 true if 语句。我最近一直试图在正方形到长方形上使用这种方法,但似乎无法使其正常工作。我画了几条线来帮助可视化代码在做什么。有人对如何使这种碰撞正常工作有任何建议吗?
const canvas = document.getElementById('canvas');
const context = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
let gravity = 1.5;
let friction = 0.9;
//CHARACTER:
class Player {
constructor(x, y, w, h, vx, vy, c, j) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
this.vx = vx;
this.vy = vy;
this.color = c;
this.jumping = j;
}
draw() {
context.fillStyle = this.color;
context.fillRect(this.x, this.y, this.w, this.h);
}
canvasCollision() {
if (this.x <= 0) …Run Code Online (Sandbox Code Playgroud)algorithm ×4
math ×4
geometry ×3
javascript ×3
collision ×1
coordinates ×1
date ×1
datetime ×1
graphics ×1
jquery ×1
mysql ×1
node.js ×1
pseudocode ×1
rectangles ×1
shapes ×1
siblings ×1