My Math Forum  

Go Back   My Math Forum > Science Forums > Computer Science

Computer Science Computer Science Forum


Reply
 
LinkBack Thread Tools Display Modes
February 11th, 2012, 08:31 PM   #1
 
Joined: Feb 2012

Posts: 2
Thanks: 0

Help with a relative motion/geometric problem

Hi,

I'm not sure if this is the right forum to ask this question but here it goes: I'm trying to write a program that simulates an old but simple target tracking device used on ships in WWII but I've been having problems trying to understand how to use a few geometrical equations in a code.

The program should be able to come up with new ranges and bearings over time based on initial values.

Here are the equations in question, pgs 24-25 of this 1944 manual:

http://www.hnsa.org/doc/tdc/pg024.htm
http://www.hnsa.org/doc/tdc/pg025.htm

The terminology for the variables can be found here on pgs. 13/15:

http://www.hnsa.org/doc/tdc/pg013.htm
http://www.hnsa.org/doc/tdc/pg015.htm

I'm trying to figure out how to calculate delta R from equation VIII on pg25 and delta B equation X on pg25.

This is the "wrong" quick code I came up with in C# for testing (I'm sure I'm missing something):
Code:
 
   public partial class Form1 : Form
    {

        float R, B, So, St, Co, Ct, A, Br, iR, iB;
        float dR, dB, dt;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            //********** RANGES

            iR = 5000;   // Initial range in yards
            R = iR;      // Range
            
            //********* COURSES AND SPEEDS
            
            Ct = 120;           // Target course in degrees
            St = 10 * 0.5626f;  // Target speed in knots (converted to yards/sec)
            Co = 270;           // Ownship course
            So = 5 * 0.5626f;   // Ownship speed in knots (converted to yards/sec)   


            //************** ANGLES

            Br =  25;           // Relative target bearing

            iB = Co + Br;       // Initial true target bearing in degrees
            B = iB;             // True target bearing
            A = 180 + B - Ct;   // Target angle

           
            //********** INSTANTANEOUS CHANGES

            dB = 0;   // Instantaneous change in true bearing
            dR = 0;   // Instantaneous change in range


            dt = 1f;  // time step?

            for (float t = 1f; t < 1000f; t += dt)
            {

                dR = dR + (St * (float)Math.Cos(DegToRad(A)) + So * (float)Math.Cos(DegToRad(Br)));

                R = iR - dR;

                dB = dB + ((St * (float)Math.Sin(DegToRad(A)) + So * (float)Math.Sin(DegToRad(Br)))*t) / R;

                B = iB + dB;
                if (B > 360)
                    B = B % 360;
                if (B < 0)
                    B = B + 360;
                if (B > 359.5 && B < 360.5)
                    B = 0;

                Br = B - Co;
                if (Br > 360)
                    Br = Br % 360;
                if (Br < 0)
                    Br = Br + 360;
                if (Br > 359.5 && Br < 360.5)
                    Br = 0;

                A = 180 + B - Ct;
                if (A > 360)
                    A = A % 360;
                if (A < 0)
                    A = A + 360;
                if (A > 359.5 && A < 360.5)
                    A = 0;

                listBox1.Items.Add( "t = " + t.ToString("000.00") + "       Range (R)  = " + R.ToString("0000") + "    True Bearing (B) = " + B.ToString("000.00")
                                   + "    Relative Bearing (Br)  = " + Br.ToString("000.00") + "   Angle A = " + A.ToString("000.00") + "   dB = " + dB.ToString("0.0000")
                                   + "    dR = " + dR.ToString("0.0000"));
            }

        }

        double DegToRad(float dd)  { return (double)(0.0174532925f * dd);  }
    }
But once I run some of these test problems:

http://www.hnsa.org/doc/tdc/pg220.htm

...the new range and bearing results aren't even close to the values shown.

What I'm not understanding is how to integrate the equations over time and how to keep track of time in seconds or minutes(not in real time I mean). If any of you guys have ideas on how to correctly code these equations (in C# or any other language) I'd really appreciate!

I'm sorry if this seems like a very basic question, but I'm just not seeing how to solve it.

Thanks!
Optimus is offline  
 
February 12th, 2012, 05:47 AM   #2
Global Moderator
 
CRGreathouse's Avatar
 
Joined: Nov 2006
From: UTC -5

Posts: 13,741
Thanks: 328

Math Focus: Number theory, computational mathematics, combinatorics, FOM, symbolic logic
Re: Help with a relative motion/geometric problem

One possibility: you put angles in degrees, but C# expects them to be in radians.
CRGreathouse is offline  
February 12th, 2012, 12:11 PM   #3
 
Joined: Feb 2012

Posts: 2
Thanks: 0

Re: Help with a relative motion/geometric problem

Quote:
Originally Posted by CRGreathouse
One possibility: you put angles in degrees, but C# expects them to be in radians.
Hi GRGreathouse, I'm already using radians for the sin and cos calculations, I believe the only place that it would matter. I think the problem must be something with the program's logic. Anyway, thanks for the reply.
Optimus is offline  
Reply

  My Math Forum > Science Forums > Computer Science

Tags
motion or geometric, problem, relative



Thread Tools
Display Modes


Similar Threads
Thread Thread Starter Forum Replies Last Post
Physics: Projectile Motion/Relative Motion edwinandrew Physics 0 February 26th, 2014 04:30 PM
relative rate of moving problem asifrahman1988 Calculus 1 March 17th, 2013 03:24 AM
Uniform Relative Motion in 3D inkliing Calculus 1 March 2nd, 2010 01:46 PM
Relative Motion Question Billy Madison Applied Math 2 November 18th, 2007 01:27 AM
[Research problem] A line & a circle w/ relative velocities Solarmew Algebra 0 January 1st, 1970 12:00 AM





Copyright © 2014 My Math Forum. All rights reserved.