社区
JavaScript
帖子详情
一个JS验证:坐标+高宽使图片不能重叠
Allan168
2010-10-18 10:32:08
请教
c#绘图graphics.DrawImage(x,y,width,height)
我现在在页面上某区域画多个图(比如画11个)
所以图片1(x1,y1,width1,height1);
图片2(x2,y2,width2,height2);
图片3(x3,y3,width3,height3)......
但每个图之间不允许有重叠(每个图有x,y,width,height四个已知元素),
需要一个JS验证的方法
请问这个JS验证的算法应该是什么?
...全文
312
6
打赏
收藏
一个JS验证:坐标+高宽使图片不能重叠
请教 c#绘图graphics.DrawImage(x,y,width,height) 我现在在页面上某区域画多个图(比如画11个) 所以图片1(x1,y1,width1,height1); 图片2(x2,y2,width2,height2); 图片3(x3,y3,width3,height3)...... 但每个图之间不允许有重叠(每个图有x,y,width,height四个已知元素), 需要一个JS验证的方法 请问这个JS验证的算法应该是什么?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
碧海情天-赵亮
2010-10-20
打赏
举报
回复
[Quote=引用 4 楼 theforever 的回复:]
既然是画圆,就应该是(x1,y1,R);
怎么是(x1,y1,width1,height1);呢
平白让问题麻烦了。
判断两个圆是否有交集的方法,就是算出(x1,y1)到(x2,y2)的直线距离,看它是否小于2R,如果小于,就说明有交集。
[/Quote]
老了,眼神不好了,硬是把那么多个“图”看成“圆”了。
如果是矩形重叠判断的话,更容易了,不需求第三方数据,直接利用现有的数据就可以了。
具体情况,要看你的(X1,Y1)代表的点是什么,是矩形的中心点,还是左上角的点。
然后,无论是怎样,求出每个矩形的左上角坐标(X1,Y1),和右下角坐标(X2,Y2)就可以。
然后,依次把每个矩形的(X1,X2)和(Y1,Y2)分别存入XA,YA两个数组中。
循环XA数组,每个矩形都有一对(X1,X2),对应的是一段横向直线段。
1.如果所有横线段都有间隔,就说明无论Y如何,肯定已经没有重叠的可能了。
2.如果有部分横线段有交集,这个交集判断,容易吧,就是 IF((aX1>bX1&&aX1<bX2)||(aX2>bX1&&aX2<bX2)),记录下它所属的矩形ID。然后进入对YA数组的判断,在这轮判断,和上轮其实相同,只是把XA数组变成了YA数组,IF((aX1>bX1&&aX1<bX2)||(aX2>bX1&&aX2<bX2))变成了IF((aY1>bY1&&aY1<bY2)||(aY2>bY1&&aY2<bY2)),这样,如何还有中招的,就表明是重叠了,对应的ID也能获知。
概括起来,原理就是分别作一次水平是否有交集的测试,对有交集的再作一轮垂直是否有交集的测试。如果两个方向都有交集,就证明重叠。
hoojo
2010-10-19
打赏
举报
回复
用坐标和宽度判断重叠应该是可以的
取得交集
碧海情天-赵亮
2010-10-19
打赏
举报
回复
既然是画圆,就应该是(x1,y1,R);
怎么是(x1,y1,width1,height1);呢
平白让问题麻烦了。
判断两个圆是否有交集的方法,就是算出(x1,y1)到(x2,y2)的直线距离,看它是否小于2R,如果小于,就说明有交集。
Allan168
2010-10-18
打赏
举报
回复
我暂时想到的是:
x2 >= (x1 + width1) && y2 >= (y1 + height1)
x3 >= (x2 + width2) && y3 >= (y2 + height2)
......
但有个问题,如果
x2 <=(x1 + width1) 那么 y2 必须<= (y1 + height1)
......
s_liangchao1s
2010-10-18
打赏
举报
回复
可以近似想象成简单的<碰撞算法>
Allan168
2010-10-18
打赏
举报
回复
自己顶下
canvas实现
图片
标注之Fabric.
js
从入门学习到实现labelImg矩形多边形标注工具【下】
在计算机视觉和机器学习领域,高质量的图像标注数据是模型训练成功的基石。无论是目标检测、图像分割还是实例识别任务,精确的标注数据都直接影响着模型的性能和准确度。然而,传统的手动标注过程往往存在以下痛点精度问题:人工标注难以保证像素级精度,效率瓶颈:复杂场景标注耗时耗力,工具限制:通用工具难以满足专业需求,协作困难:团队标注缺乏统一标准,数据管理:标注结果难以有效组织和管理,基于这些挑战,我开发了这款基于Vue3和Fabric.
js
的专业图像标注工具。本工具旨在为开发者和标注团队提供一套高效、精确、易用的...
vue添加
图片
水印脱敏,动态水印字体大小、间距
记录一下前端添加水印,动态水印字体大小、间距 项目里需要对
图片
添加整片的水印最开始是直接引用这位大佬的。前端
js
实现给
图片
添加水印 这个大佬的方法里水印密度是手动传入的,对于同
一个
图片
上传器。密度是固定的,或者说,对于同
一个
页面里的水印添加方法要实现传入不同的水印密度,就要多次调用,所以实际应用中,当窄
图片
和宽
图片
用同样的密度,即使缩小了字体,也会出现水印密密麻麻
重叠
的问题。并且水印字体的大小也区分的比较生硬。所以在此文代码基础上做了些修改以实现简单的动态字体大小、间距。 新建
一个
waterMarker.j
html浏览器影响
js
问题,从html,css,javascript三方面谈谈“浏览器兼容性”的问题
不同浏览器的标签默认的外补丁和内补丁不同*{margin:0;padding:0;}css的hack问题:主要针对IE的不同版本,不同的浏览器的写法不同IE的条件注释hack:块属性标签float后,又有横行的margin情况下,在IE6显示 margin比设置的大,IE6中后面的一块被顶到下一行在float的标签样式控制中加入 display:inline;将其转化为行内属性备注:我们最常用的就...
html5属性浏览器
不能
用,从html,css,javascript三方面谈谈“浏览器兼容性”的问题
不同浏览器的标签默认的外补丁和内补丁不同*{margin:0;padding:0;}css的hack问题:主要针对IE的不同版本,不同的浏览器的写法不同IE的条件注释hack:块属性标签float后,又有横行的margin情况下,在IE6显示 margin比设置的大,IE6中后面的一块被顶到下一行在float的标签样式控制中加入 display:inline;将其转化为行内属性备注:我们最常用的就...
JavaScript强化教程 —— cocos
js
碰撞检测
本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 —— cocos
js
碰撞检测 简单描述下游戏的碰撞检测原理:首先要为每个游戏物体指定
一个
碰撞检测区域,然后在Update方法中实时检测两个物体的区域是否有
重叠
,如果有,那么就发生碰撞了。 简单看下代码,这个代码是从官方的代码里头摘出来的 复制代码 1 tools.Colli...
JavaScript
87,984
社区成员
224,681
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章