public Vector3D KernelGradient(Vector3D pi, Vector3D pj){
		Vector3D dist = Vector3D.Substract(pi, pj);
		float r_r = dist.LengthSquare();
		if(r_r > H_H) return new Vector3D(0,0,0);
		float a = (float) Math.pow(H_H - r_r, 2);
		Vector3D vec = new Vector3D(- 2 * dist.x, - 2 * dist.y, - 2 * dist.z);
		vec.Scale(KPOLY *3* a);
		return vec;
	}