File: BearingDescriber.java

package info (click to toggle)
gpsprune 26.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,824 kB
  • sloc: java: 52,154; sh: 25; makefile: 21; python: 15
file content (40 lines) | stat: -rw-r--r-- 1,283 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package tim.prune.function.distance;

import tim.prune.I18nManager;

/** Class to convert a bearing into a language-dependent description like "N" or "SW" */
public class BearingDescriber
{
	/** Concatenated cardinals like "NESW" */
	private final String _singleCardinals;
	/** Concatenated two-letter cardinals like "NESESWNW" */
	private final String _doubleCardinals;

	/** Constructor */
	BearingDescriber()
	{
		final String cardinalNorth = I18nManager.getText("cardinal.n"),
				cardinalEast = I18nManager.getText("cardinal.e"),
				cardinalSouth = I18nManager.getText("cardinal.s"),
				cardinalWest = I18nManager.getText("cardinal.w");
		_singleCardinals = cardinalNorth + cardinalEast + cardinalSouth + cardinalWest;
		_doubleCardinals = cardinalNorth + cardinalEast
				+ cardinalSouth + cardinalEast
				+ cardinalSouth + cardinalWest
				+ cardinalNorth + cardinalWest;
	}


	/**
	 * @param bearing angle in degrees clockwise from north
	 * @return description using cardinals, like N, NE, E
	 */
	String describeBearing(double bearing)
	{
		final int index = (int) Math.floor((bearing + 22.5 + 360.0) / 45) % 8;
		if ((index % 2) == 0) {
			return _singleCardinals.substring(index / 2, index / 2 + 1);
		}
		return _doubleCardinals.substring(index - 1, index + 1);
	}
}