ferrous objects or magnetic field generators (DC carrying wires() influence the local magnetic field, and give it a different shape. In absence of interference, the earth's magnetic field look appears homogonous and without deviation in the local region.
Consider the fields around a bar magnet in a bath of iron filings in suspension. In absence of the bar magnet, they will all line themselves up inside the tank identically. the whole tank will be same. If you introduce a tiny bar magnet into the solution, it will introduce the shaped fields and reorientate the particles in the classic bar magnetic shape. The bar magnetic field will vectorially add to the static (earth) field. Pick a 3d spot in the tank.
Now, if you rotate the tank 90 degrees, you'll find the point you chose in the tank , the vectors of the earth's field are now 90 deg to the previous influence, and the new resultant vector will be different.
If you had two vectors 1< 0 (earth's magnetic field) and 0.707<45 (bar nagnet) , the vector result is 1.58 < 18......
now if we rotate the tank 90 deg CCW so that we have 1< 90 and still 0.707<45 (bar magnet) , the new vector result is 1.58< 71deg . quite different angles !
IE the earths field was at 0 deg to start with. we introduced the magnet to the tank . now it reads 18 degrees. OK, so if you 'simply' subtract 18 from the compass, you get 0 deg OK,
but rotate the tank and now the compass reads 71 degrees. if you are still subtracting 18 degrees, now the compass reads (71-18 = 53deg) instead of what it should read (=90 because you rotated the tank and compass 90) . so single point corrections do not work.