public void surfaceNormalAt(double x, double y, double z, Vector3d normal) { double threshhold = 0.015; normal.setX(0.0); normal.setY(0.0); normal.setZ(1.0); if (!boundingBox.isXYInside(x, y) || (z > boundingBox.getZMax() - threshhold)) return; if (Math.abs(x - boundingBox.getXMin()) < threshhold) { normal.setX(-1.0); normal.setY(0.0); normal.setZ(0.0); } else if (Math.abs(x - boundingBox.getXMax()) < threshhold) { normal.setX(1.0); normal.setY(0.0); normal.setZ(0.0); } else if (Math.abs(y - boundingBox.getYMin()) < threshhold) { normal.setX(0.0); normal.setY(-1.0); normal.setZ(0.0); } else if (Math.abs(y - boundingBox.getYMax()) < threshhold) { normal.setX(0.0); normal.setY(1.0); normal.setZ(0.0); } }
public static void packRosVector3ToVector3d(Vector3 rosVector, Vector3d vectorToPack) { vectorToPack.setX(rosVector.getX()); vectorToPack.setY(rosVector.getY()); vectorToPack.setZ(rosVector.getZ()); }