Code Examples
A repository of 155 code examples for BeepBeep
Collides.java
1 package pingus;
2 
3 import ca.uqac.lif.cep.functions.Constant;
4 import ca.uqac.lif.cep.functions.FunctionTree;
5 import ca.uqac.lif.cep.ltl.Troolean;
6 import ca.uqac.lif.cep.ltl.TrooleanCast;
7 import ca.uqac.lif.cep.util.Numbers;
8 import ca.uqac.lif.cep.xml.XPathFunctionGetNumber;
9 
10 /**
11  * Predicate |x<sub>1</sub>-x<sub>2</sub>| &lt; 6 &and; |y<sub>1</sub>-y<sub>2</sub>| < 10
12  */
13 public class Collides extends FunctionTree
14 {
15  public static final int X_RADIUS = 6;
16  public static final int Y_RADIUS = 10;
17 
18  public static final transient Collides instance = new Collides();
19 
20  ///
21  protected Collides()
22  {
23  super(Troolean.AND_FUNCTION);
24  {
25  // Build the expression |p1//x - p2//x| < 6
26  FunctionTree cast = new FunctionTree(TrooleanCast.instance);
27  FunctionTree lt = new FunctionTree(Numbers.isLessThan);
28  FunctionTree abs = new FunctionTree(Numbers.absoluteValue);
29  FunctionTree minus = new FunctionTree(Numbers.subtraction);
30  minus.setChild(0, new XPathFunctionGetNumber("message/characters/character[id=$p1]/position/x/text()"));
31  minus.setChild(1, new XPathFunctionGetNumber("message/characters/character[id=$p2]/position/x/text()"));
32  abs.setChild(0, minus);
33  lt.setChild(0, abs);
34  lt.setChild(1, new Constant(X_RADIUS));
35  cast.setChild(0, lt);
36  setChild(0, cast);
37  }
38  {
39  // Build the expression |p1//y - p2//y| < 10
40  FunctionTree cast = new FunctionTree(TrooleanCast.instance);
41  FunctionTree lt = new FunctionTree(Numbers.isLessThan);
42  FunctionTree abs = new FunctionTree(Numbers.absoluteValue);
43  FunctionTree minus = new FunctionTree(Numbers.subtraction);
44  minus.setChild(0, new XPathFunctionGetNumber("message/characters/character[id=$p1]/position/y/text()"));
45  minus.setChild(1, new XPathFunctionGetNumber("message/characters/character[id=$p2]/position/y/text()"));
46  abs.setChild(0, minus);
47  lt.setChild(0, abs);
48  lt.setChild(1, new Constant(Y_RADIUS));
49  cast.setChild(0, lt);
50  setChild(1, cast);
51  }
52  }
53  ///
54 
55  @Override
56  public FunctionTree duplicate(boolean with_state)
57  {
58  return this;
59  }
60 }
Predicate |x1-x2| < 6 ∧ |y1-y2| < 10.
Definition: Collides.java:13