A global navigation satellite system (GNSS) receiver comprising: a tracking engine running on a primary controller, the tracking engine configured to receive a plurality of signals from a plurality of satellites; and a space-time adaptive correlator (STAC) engine running on an application-specific controller, the STAC engine configured to: receive initial position data from the tracking engine; receive an initial receiver clock estimate from the tracking engine; the GNSS receiver being characterised by: construct a three dimensional spatial hypercube within a spatial coordinate system based on the received initial position data; receive the plurality of signals from the tracking engine; interpolate signal strengths of the plurality of signals as received from the tracking engine to generate a plurality of signal intensity curves (206; 206a-206b), wherein a signal intensity curve represents intensities of signals received from a single satellite vehicle as a function of time of arrival of each signal; integrate the plurality of signal intensity curves within the spatial hypercube for the initial receiver clock estimate to generate a signal intensity hypercube plot by plotting the plurality of generated signal intensity curves along the line of sight of each respective satellite vehicle within the spatial hypercube; and determine a receiver position based on the signal intensity hypercube plot. a tracking engine running on a primary controller, the tracking engine configured to receive a plurality of signals from a plurality of satellites; and a space-time adaptive correlator (STAC) engine running on an application-specific controller, the STAC engine configured to: receive initial position data from the tracking engine; receive an initial receiver clock estimate from the tracking engine; the GNSS receiver being characterised by: construct a three dimensional spatial hypercube within a spatial coordinate system based on the received initial position data; receive the plurality of signals from the tracking engine; interpolate signal strengths of the plurality of signals as received from the tracking engine to generate a plurality of signal intensity curves (206; 206a-206b), wherein a signal intensity curve represents intensities of signals received from a single satellite vehicle as a function of time of arrival of each signal; integrate the plurality of signal intensity curves within the spatial hypercube for the initial receiver clock estimate to generate a signal intensity hypercube plot by plotting the plurality of generated signal intensity curves along the line of sight of each respective satellite vehicle within the spatial hypercube; and determine a receiver position based on the signal intensity hypercube plot. receive initial position data from the tracking engine; receive an initial receiver clock estimate from the tracking engine; the GNSS receiver being characterised by: construct a three dimensional spatial hypercube within a spatial coordinate system based on the received initial position data; receive the plurality of signals from the tracking engine; interpolate signal strengths of the plurality of signals as received from the tracking engine to generate a plurality of signal intensity curves (206; 206a-206b), wherein a signal intensity curve represents intensities of signals received from a single satellite vehicle as a function of time of arrival of each signal; integrate the plurality of signal intensity curves within the spatial hypercube for the initial receiver clock estimate to generate a signal intensity hypercube plot by plotting the plurality of generated signal intensity curves along the line of sight of each respective satellite vehicle within the spatial hypercube; and determine a receiver position based on the signal intensity hypercube plot. construct a three dimensional spatial hypercube within a spatial coordinate system based on the received initial position data; receive the plurality of signals from the tracking engine; interpolate signal strengths of the plurality of signals as received from the tracking engine to generate a plurality of signal intensity curves (206; 206a-206b), wherein a signal intensity curve represents intensities of signals received from a single satellite vehicle as a function of time of arrival of each signal; integrate the plurality of signal intensity curves within the spatial hypercube for the initial receiver clock estimate to generate a signal intensity hypercube plot by plotting the plurality of generated signal intensity curves along the line of sight of each respective satellite vehicle within the spatial hypercube; and determine a receiver position based on the signal intensity hypercube plot.