public Point3f findPointOnPlane(char direction, int x, int y, float c) {
		if (tempMatrix4f == null)
			tempMatrix4f = new Matrix4f();
		tempMatrix4f.setIdentity();
		tempMatrix4f.invert(transformManager.matrixTransform);
		float xa = 0, ya = 0, za = 0;
		if (pmin == null)
			pmin = new Point3f();
		pmin.set(transformManager.reversePerspectiveAdjustments(x, y, -1000));
		tempMatrix4f.transform(pmin);
		if (pmax == null)
			pmax = new Point3f();
		pmax.set(transformManager.reversePerspectiveAdjustments(x, y, 1000));
		tempMatrix4f.transform(pmax);
		float dx = pmax.x - pmin.x;
		float dy = pmax.y - pmin.y;
		float dz = pmax.z - pmin.z;
		switch (direction) {
		case 'x':
			xa = c;
			ya = (xa - pmin.x) / dx * dy + pmin.y;
			za = (xa - pmin.x) / dx * dz + pmin.z;
			break;
		case 'y':
			ya = c;
			xa = (ya - pmin.y) / dy * dx + pmin.x;
			za = (ya - pmin.y) / dy * dz + pmin.z;
			break;
		case 'z':
			za = c;
			xa = (za - pmin.z) / dz * dx + pmin.x;
			ya = (za - pmin.z) / dz * dy + pmin.y;
			break;
		}
		if (planePoint == null)
			planePoint = new Point3f();
		planePoint.set(xa, ya, za);
		return planePoint;
	}