📄 containspred.java
字号:
//ContainsPred.java// //This library is free software; you can redistribute it and/or//modify it under the terms of the GNU Lesser General Public//License as published by the Free Software Foundation; either//version 2.1 of the License, or (at your option) any later version.// //This library is distributed in the hope that it will be useful,//but WITHOUT ANY WARRANTY; without even the implied warranty of//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU//Lesser General Public License for more details.package rtree.join;import rtree.*;import java.util.List;/** The "intersects" binary predicate. This is only for the sweepline algo. @author Prachuryya Barua*/public class ContainsPred extends Predicate{ public ContainsPred(){} public void relate(Element event, int from, Element[] others, List pairs, int evtSide) { //System.out.println("SweepLine.internalLoop : before pairs size : " + pairs.size()); if(evtSide == Join.LEFT){ for(int i=from; (i<others.length) && (others[i] != null) && (others[i].getRect().getMaxX() < event.getRect().getMaxX()); i++){//while others are still intersecting with the event if(event.getRect().getMinY() < others[i].getRect().getMinY() && event.getRect().getMaxY() > others[i].getRect().getMaxY()){//check the y coordinate if(evtSide == Join.LEFT) pairs.add(p.paired(event, others[i])); else pairs.add(p.paired(others[i], event)); }//if }//for }else{ /*do nothing as, if left contains right then left must have appeared before at all cost .In other words, if the event took place at a right side then it is not supposed to contain anything. We need to concern overselves with events because of left tree only. */ } //System.out.println("SweepLine.internalLoop : after pairs size : " + pairs.size()); } /** @param side The side of <code>elmt1</code>. */ public boolean relateMismatch(Element elmt1, Element elmt2, int side) { //System.out.println("ContainsPred.relateMismatch :"); try{ if(elmt1 instanceof NonLeafElement || elmt2 instanceof NonLeafElement) return elmt1.getRect().overlaps(elmt2.getRect()); else{ if(side == Join.LEFT) return elmt1.getRect().contains(elmt2.getRect()); else return elmt2.getRect().contains(elmt1.getRect()); } }catch(Exception e){ e.printStackTrace(); return false; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -