@Override
	public Vector3d getForceAt(Vector3d position, Matrix3d rotation,
			Vector3d point) {

		Vector3d localPoint = getLocalPoint(position, rotation, point);

		Vector3d worldAxis = new Vector3d(localAxis);
		rotation.transform(worldAxis);

		Vector3d axisComponentPoint = new Vector3d(localAxis);
		axisComponentPoint.scale(localPoint.dot(localAxis));

		//Tangential component
		localPoint.sub(axisComponentPoint);

		if (localPoint.lengthSquared() > outerRadius * outerRadius
				|| localPoint.lengthSquared() < innerRadius * innerRadius) {
			return new Vector3d(0, 0, 0);
		}

		Vector3d force = new Vector3d();
		force.cross(worldAxis, localPoint);
		force.normalize();
		force.scale(strength);

		if (Double.isNaN(force.x)) {
			throw new RuntimeException();
		}

		double blast = 1 / (localPoint.length() - innerRadius);
		force.scale(blast);
		return force;
	}