public void PhysicsSolve ()
	{
		// capture Image
		BufferedImage screenshot = ActionRobot.doScreenShot();

		// process image
		VisionRealShape vision = new VisionRealShape(screenshot);

		// get all object
		List<ABObject> objects = vision.findObjects();
		List<ABObject> pigs = vision.findPigs();
		List<ABObject> birds = vision.findBirds();
		List<ABObject> hills = vision.findHills();

		for (int i = 0; i < objects.size(); i++)
		{
			ABObject o1 = objects.get(i);
			for (int j = 0; j < objects.size(); j++)
			{
				ABObject o2 = objects.get(j);
				if (QualitativeRep.TouchRelation(o1, o2))
				{
					System.out.println("touch (" + o1.id + ", " + o2.id + ")");
					System.out.println("touch (" + o1.type + ", " + o2.type + ")");
				}
			}
			
			for (int j = 0; j < pigs.size(); j++)
			{
				ABObject o2 = pigs.get(j);
				if (QualitativeRep.TouchRelation(o1, o2))
				{
					System.out.println("touch (" + o1.id + ", " + o2.id + ")");
					System.out.println("touch (" + o1.type + ", " + o2.type + ")");
				}
			}
			
			for (int j = 0; j < hills.size(); j++)
			{
				ABObject o2 = hills.get(j);
				if (QualitativeRep.TouchRelation(o1, o2))
				{
					System.out.println("touch (" + o1.id + ", " + o2.id + ")");
					System.out.println("touch (" + o1.type + ", " + o2.type + ")");
				}
			}
		}
	}