社区
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验证的算法应该是什么?
...全文
277
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
打赏
举报
回复
自己顶下
JavaScript实用范例词典04-14
9.58 从文件字段中选取
一个
图片
作为 页面背景... 311 第10章 页面内容篇.... 313 10.1 将网页设为首页... 313 10.2 回到浏览器的首页... 314 10.3 将网页加入到收藏夹... 314 10.4 导出收藏夹... 315 10.5 ...
HTML理论知识
②画布
高宽
的问题:画布默认
高宽
300*150.切记一定要使用html的attribute的形式来定义画布的宽高,通过css形式定义会缩放画布内的图像.③绘制矩形的问题:a.边框宽度的问题,边框宽度是在偏移量上下分别渲染一半,可能会...
2023前端面试题总结(html,css,
js
)
BFC - Block Formatting Context 块级格式化上...2,每
一个
BFC区域都是独立隔绝的,互不影响怎样使
一个
元素变成BFC区域1、body根元素2、float属性不为none3、position为absolute或fixed4、行内块显示模式,inline-block。
前端面试经典题目合集(HTML+CSS)
构成:结构层、表示层、行为层 分别是:HTML、CSS、JavaScript 作用:HTML实现页面结构,CSS完成页面的表现与风格,JavaScript实现一些客户端的功能与业务。2、HTML5的优点与缺点?优点: a、网络标准统一、...
JavaScript 深度学习(二)
原文:zh.annas-archive.org/md5/ea99677736c22d68b5818a18b5a9213a ...如何编写和训练
一个
TensorFlow.
js
中的卷积神经网络来解决手写数字分类的任务 如何在 Node.
js
中训练模型以实现更快的训练
JavaScript
87,994
社区成员
224,693
社区内容
发帖
与我相关
我的任务
JavaScript
Web 开发 JavaScript
复制链接
扫一扫
分享
社区描述
Web 开发 JavaScript
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章