Welcome to the NavList Message Boards.


A Community Devoted to the Preservation and Practice of Celestial Navigation and Other Methods of Traditional Wayfinding

Compose Your Message

Add Images & Files
    Re: Triangulation without a chart.
    From: Jan van Puffelen
    Date: 1996 Oct 20, 12:45 +0200

    At 16:09 19-10-96 PDT, you wrote:
    >   I managed to find my way back ( on a moonless overcast night, thank
    >you very much ) with crude dead reckoning and a little luck.  What I'm
    >wondering is, is there a formula that would have given me my position?
    >I'm thinking about just pencilling the landmarks in, but my skill as a
    >mathematicion is considerably greater than my skill as a cartographer,
    >so I thought I'd present this problem to the collective wisdom of the
    Yes there are two solutions, one for two observed points and one for three.
    I have programmed these problems in BASIC for the small hand held calculator
    CASIO FX702P which could contain up to 10 of such programs.
    The first program is used to combine any two position lines (for instance
    two compass bearings of two known points):
    	Cross Bearing (Combination of any 2 position lines)
    1	INP "B3",E,"L3",F,"P3",P,"B4",G,"L4",H,"P4",Q	
    2	PRC 1,F-H	normalize difference in longitude
    	RPC X,Y	
    	RPC E-G,Y*COS ((G+E)/2)	        distance & course using avg latitude
    3	Z=X*SIN ((Y-P)/SIN (P-Q)	distance to 2nd point
    	SET F1	
    	PRT "VH4=";Z*60;"^"	print that distance and prompt
    	PRC -Z,Q	        compute position
    4	A=G	                basis for position
    1	A=A+X	                Latitude of position
    	PRC 1,B+Y/COS (A-X/2)	normalize longitude
    	RPC X,Y	
    	B=Y	                store longitude
    The CASIO FX702P has 26 variables, A through Z. The variables used in this
    program are given in the 1st column. Externally (using the display) these
    variables are referred to by the names in the second column. An explanation
    of the contents is found in the 3rd column:
    Var	Display	contains
    A		Latitude of calculated position
    B		Longitude of calculated position
    E	B3	Latitude of 1st position line
    F	L3	Longitude of 1st position line
    G	B4	Latitude of 2nd position line
    H	L4	Longitude of 2nd position line
    P	P3	Bearing of 1st position line
    Q	P4	Bearing of 2nd position line
    Z		Distance to 2nd point in NM/60
    The conversation via the display:
    Display/Accept	Description
    B3	        Latitude of 1st position line
    L3	        Longitude of 1st position line
    P3	        Bearing of 1st position line
    B4	        Latitude of 2nd position line
    L4	        Longitude of 2nd position line
    P4              Bearing of 2nd position line
    VH4= m.m	Distance from calculated position to B4/L4 (2nd position)
    ^	        Prompt, CONT updates position
    However, if THREE points are visible A VERY ACCURATE position can be
    calculated by measuring the angles (clockwise) between the first and the
    second point (A and B) and the second and the third point (B and C) with a
    sextant. This calculated position is not influenced by deviation and
    variation of the compass and, again, since the angles are measured with a
    precision of 0.1' or so extremely accurate!
    This method was invented by a Dutch 16th century mathematician, Snellius.
    The program can work in two ways:
    1. Entering the lat/long of the three points (answer Y)
    2. Entering the distance between A and B, C and D and the subtended angle
    between AB and BC (answer N)
    1	INP "POS Y/N',$	Input positions
    	IF $="N";	If not then
    	  INP "AB",R,"BC",T,"ABC",K	
    	  GOTO 6	
    2	GSB 13	        enter lat/long of point A
    	GSB 14	        enter lat/long of point B + compute
    	INP "BC',I,"LC",J	enter lat/long of point C
    	PRC 1,J-H	normalize difference in long
    	RPC X,Y	
    3	RPC I-G,Y*COS((I+G)/2)	distance and course from B to C
    	T=60*X	        in nautical miles
    	GSB 16	        normalize course
    	U=Y	        and store course from B to C
    4	Y=S+180-U	enclosed angle B
    	GSB 16	        normalize
    	Y=180-S+U	2nd possibility
    	GSB 16	        normalize
    5	SET F0	        no decimals
    	PRT "ABC=";X;Y;	display both possibilities
    	INP " 0/1",Z	and make a choice
    	K=X	        in case 0
    	IF K=1;	
    	  K=Y	        in case 1
    6	INP "ADB",P,"BDC",Q	enter measured angles
    	M=180-(K+P+Q)/2	        =beta=(X+Y)/2
    	N=ATN(R*SIN Q/T/SIN P)	=phi
    7	IF ABS(ABS M-90)<2;	angle between tangents less than 4 degrees
    	  PRT "<4"	        display error message
    	  END	                and stop
    8	O=ATN (TAN (45-N)*TAN M)%=gamma=(X-Y)/2	
    	V=M+O	                angle X
    	W=M-O	                angle Y
    	Z=R*SIN (P+V)/SIN P	distance AD
    9	SET F1	                display to 1 decimal
    	PRT "AD=";ABS Z;"BD=";ABS (R*SIN V/SIN P)	
    10	PRT "CD=";ABS (T*SIN (Q+W)/SIN Q)	
    	IF $<>"N" THEN 12	
    11	GSB 13	                enter lat/long of A
    	INP "NAB",S	        enter course from A to B
    	IF S=0;	                if nothing was entered
    	  GSB 14	        enter lat/long of B + compute
    12	PRC Z/60,S+V	        distance and course from A to D
    	A=E+X	                latitude of D
    	PRC 1,F+Y/COS (A-X/2)	normalize computed long
    	RPC X,Y	
    	B=Y	                long of D
    13	INP "BA",E,"LA",F	
    14	INP "BB",G,"LB",H	lat/long of B
    	PRC 1,H-F	        normalize differende of long
    	RPC X,Y	                from A to B
    	RPC G-E,Y*COS((G+E)/2)	distance and course
    15	GSB 16	                normalize course
    	R=60*X	                in nautical miles
    16	Y=Y-360*INT (Y/360)	normalize Y
    The list of used variables:
    Var 	Display	Contains
    $               string variable
    A		Lat of calculated position
    B		Long of calculated position
    E	BA	Lat of A
    F	LA	Long of A
    G	BB	Lat of B
    H	LB	Long of B
    I	BC	Lat of C
    J	LC	Long of C
    K	ABC	enclosed angle ABC
    P	ADB	measured sextant angle P
    Q	BDC	measured sextant angle Q
    R	AB	distance from A to B in NM
    S	NAB	bearing from A to B
    T	BC	distance from B to C in NM
    U		bearing from B to C
    V		angle X
    W		angle Y
    And the conversation via the display:
    Display	Meaning
    POS Y/N	Do you want to enter positions for A, B and C Y/N?
    AB	Distance from A to B in NM (in case of N)
    BC	Distance from B to C in NM (in case of N)
    ABC	Enclosed angle (in case of N)
    BA	Lat of A (in case of Y)
    LA	Long of A (in case of Y)
    BB	Lat of B (in case of Y)
    LB	Long of B (in case of Y)
    BC	Lat of C (in case of Y)
    LC	Long of C (in case of Y)
    ABC=x y 0/1	Decide which of the enclosed angles is right
    ADB	Enter observed sextant angle P (ADB)
    BDC	Enter observed sextant angle Q (BDC)
    AD=m.m	Distance from A to D in NM
    BD=m.m	Distance from B to D in NM
    CD=m.m	Distance from C to D in NM
    NAB	Bearing from A to B enter 0 to calculate
    Most of the BASIC commands are self explanatory. All angles are standard in
    degrees (not radians) The CASIO has some very useful commands to translate
    polar to rectangular coordinates (PRC) and rectangular to polar coordinates
    (RPC). These two commands are defined as follows:
    PRC a, b 	= Polar to Rectangular Coordinates: X=aCOSb, Y=aSINb (a and b are
    RPC a, b	= Rectangular to Polar Coordinates: Y=ATAN2(a,b), X=SQRT(SQR(a)+SQR(b))
    SET F n	        = Set display to fixed point, n decimals
    DMS a		= display a in format dd.mmss, i.e. 3.5 = 3d 30' 00.00"
    >    Thanks,
    >    Justin Wilmsmeyer
    >    justin@qdeck.com
    Jan van Puffelen 
    52d 24'5N
     4d 55'0E

    Browse Files

    Drop Files


    What is NavList?

    Join NavList

    (please, no nicknames or handles)
    Do you want to receive all group messages by email?
    Yes No

    You can also join by posting. Your first on-topic post automatically makes you a member.

    Posting Code

    Enter the email address associated with your NavList messages. Your posting code will be emailed to you immediately.

    Email Settings

    Posting Code:

    Custom Index

    Start date: (yyyymm dd)
    End date: (yyyymm dd)

    Visit this site
    Visit this site
    Visit this site
    Visit this site
    Visit this site
    Visit this site