~ubuntu-branches/ubuntu/quantal/flightgear/quantal

« back to all changes in this revision

Viewing changes to src/FDM/UIUCModel/uiuc_controlInput.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Ove Kaaven
  • Date: 2002-03-27 21:50:15 UTC
  • Revision ID: james.westby@ubuntu.com-20020327215015-0rvi3o8iml0a8s93
Tags: upstream-0.7.9
ImportĀ upstreamĀ versionĀ 0.7.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**********************************************************************
 
2
 
 
3
 FILENAME:     uiuc_controlInput.cpp
 
4
 
 
5
----------------------------------------------------------------------
 
6
 
 
7
 DESCRIPTION:  sets control surface deflections for specified input 
 
8
               modes
 
9
 
 
10
----------------------------------------------------------------------
 
11
 
 
12
 STATUS:       alpha version
 
13
 
 
14
----------------------------------------------------------------------
 
15
 
 
16
 REFERENCES:   
 
17
 
 
18
----------------------------------------------------------------------
 
19
 
 
20
 HISTORY:      04/08/2000   initial release
 
21
               06/18/2001   (RD) Added aileron_input and rudder_input
 
22
               07/05/2001   (RD) Code added to allow the pilot to fly
 
23
                            aircraft after the control surface input
 
24
                            files have been used.
 
25
 
 
26
----------------------------------------------------------------------
 
27
 
 
28
 AUTHOR(S):    Jeff Scott         <jscott@mail.com>
 
29
               Robert Deters      <rdeters@uiuc.edu>
 
30
 
 
31
----------------------------------------------------------------------
 
32
 
 
33
 VARIABLES:
 
34
 
 
35
----------------------------------------------------------------------
 
36
 
 
37
 INPUTS:       -Simtime
 
38
               -deflection times
 
39
               -deflection angles
 
40
 
 
41
----------------------------------------------------------------------
 
42
 
 
43
 OUTPUTS:      -elevator deflection
 
44
 
 
45
----------------------------------------------------------------------
 
46
 
 
47
 CALLED BY:    uiuc_coefficients.cpp
 
48
 
 
49
----------------------------------------------------------------------
 
50
 
 
51
 CALLS TO:     none
 
52
 
 
53
----------------------------------------------------------------------
 
54
 
 
55
 COPYRIGHT:    (C) 2000 by Michael Selig
 
56
 
 
57
 This program is free software; you can redistribute it and/or
 
58
 modify it under the terms of the GNU General Public License
 
59
 as published by the Free Software Foundation.
 
60
 
 
61
 This program is distributed in the hope that it will be useful,
 
62
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 
63
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
64
 GNU General Public License for more details.
 
65
 
 
66
 You should have received a copy of the GNU General Public License
 
67
 along with this program; if not, write to the Free Software
 
68
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 
69
 USA or view http://www.gnu.org/copyleft/gpl.html.
 
70
 
 
71
**********************************************************************/
 
72
 
 
73
#include <simgear/compiler.h>
 
74
 
 
75
#include "uiuc_controlInput.h"
 
76
 
 
77
#include STL_IOSTREAM
 
78
 
 
79
void uiuc_controlInput()
 
80
{
 
81
  // elevator step input
 
82
  if (elevator_step)
 
83
    {
 
84
      if (Simtime >= elevator_step_startTime)
 
85
        {
 
86
          elevator = elevator + elevator_step_angle;
 
87
        }
 
88
    }
 
89
 
 
90
  // elevator singlet input
 
91
  if (elevator_singlet)
 
92
    {
 
93
      if (Simtime >= elevator_singlet_startTime && 
 
94
          Simtime <= (elevator_singlet_startTime + elevator_singlet_duration))
 
95
        {
 
96
          elevator = elevator + elevator_singlet_angle;
 
97
        }
 
98
    }
 
99
 
 
100
  // elevator doublet input
 
101
  if (elevator_doublet)
 
102
    {
 
103
      if (Simtime >= elevator_doublet_startTime && 
 
104
          Simtime <= (elevator_doublet_startTime + elevator_doublet_duration/2))
 
105
        {
 
106
          elevator = elevator + elevator_doublet_angle;
 
107
        }
 
108
      else if (Simtime >= (elevator_doublet_startTime + elevator_doublet_duration/2) && 
 
109
               Simtime <= (elevator_doublet_startTime + elevator_doublet_duration))
 
110
        {
 
111
          elevator = elevator - elevator_doublet_angle;
 
112
        }
 
113
    }
 
114
 
 
115
  // elevator input
 
116
  if (elevator_input)
 
117
    {
 
118
      double elevator_input_endTime = elevator_input_timeArray[elevator_input_ntime];
 
119
      if (Simtime >= elevator_input_startTime && 
 
120
          Simtime <= (elevator_input_startTime + elevator_input_endTime))
 
121
        {
 
122
          double time = Simtime - elevator_input_startTime;
 
123
          if (pilot_elev_no_check)
 
124
            {
 
125
              elevator = 0 + elevator_tab;
 
126
              pilot_elev_no = true;
 
127
            }
 
128
          elevator = elevator + 
 
129
            uiuc_1Dinterpolation(elevator_input_timeArray,
 
130
                                 elevator_input_deArray,
 
131
                                 elevator_input_ntime,
 
132
                                 time);
 
133
        }
 
134
    }
 
135
 
 
136
  // aileron input
 
137
  if (aileron_input)
 
138
    {
 
139
      double aileron_input_endTime = aileron_input_timeArray[aileron_input_ntime];
 
140
      if (Simtime >= aileron_input_startTime && 
 
141
          Simtime <= (aileron_input_startTime + aileron_input_endTime))
 
142
        {
 
143
          double time = Simtime - aileron_input_startTime;
 
144
          if (pilot_ail_no_check)
 
145
            {
 
146
              aileron = 0;
 
147
              if (Simtime==0)             //7-25-01 (RD) Added because
 
148
                pilot_ail_no = false;     //segmentation fault is given
 
149
              else                        //with FG 0.7.8
 
150
                pilot_ail_no = true;
 
151
            }
 
152
          aileron = aileron + 
 
153
            uiuc_1Dinterpolation(aileron_input_timeArray,
 
154
                                 aileron_input_daArray,
 
155
                                 aileron_input_ntime,
 
156
                                 time);
 
157
        }
 
158
    }
 
159
 
 
160
  // rudder input
 
161
  if (rudder_input)
 
162
    {
 
163
      double rudder_input_endTime = rudder_input_timeArray[rudder_input_ntime];
 
164
      if (Simtime >= rudder_input_startTime && 
 
165
          Simtime <= (rudder_input_startTime + rudder_input_endTime))
 
166
        {
 
167
          double time = Simtime - rudder_input_startTime;
 
168
          if (pilot_rud_no_check)
 
169
            {
 
170
              rudder = 0;
 
171
              pilot_rud_no = true;
 
172
            }
 
173
          rudder = rudder + 
 
174
            uiuc_1Dinterpolation(rudder_input_timeArray,
 
175
                                 rudder_input_drArray,
 
176
                                 rudder_input_ntime,
 
177
                                 time);
 
178
        }
 
179
    }
 
180
  return;
 
181
}
 
182
 
 
183
// end uiuc_controlInput.cpp