IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Liens entre plusieurs fichiers.m


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Liens entre plusieurs fichiers.m
    Depuis une dizaine de jour, je suis sur un projet qui doit se terminer dans 15j maintenant et certains obstacles s'offre à moi. C'est pourquoi je demande votre aide

    j'ai crée 3 fichiers.m je vais vous expliquer pourquoi

    Dans un premier, j'ai mon repere principal qui represente la surface terrestre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    % Représentation du repere Nord / Est pour la modélisation du scénario
     
    clear all;
    clc;
     
    figure1 = figure('Color',[1 1 1]);                                          
     
    plot([0 0], [-90 90],':');
    hold on;
    plot([-360 360], [0 0],':');
    axis ([-360 360 -90 90]);                                                   % valeur des axes : xmin xmax ymin ymax 
     
    Xlabel ('Ouest / Est');                                                     % etiquette de l'axe des abscisses
    Ylabel ('Sud / Nord');                                                      % etiquette de l'axe des ordonnées
     
    title('\fontsize{13}Repère principal du scénario','FontWeight','Bold');
    datacursormode;
     
    uicontrol('style','text',...
        'units','normalized',...
        'BackgroundColor','w',...
        'position',[0.85 0.05 0.1 0.015],...
        'string','Echelle : 1 <--> 1°');
     
     
    % Choix de la position du HVU au départ du scénario
     
    l=input('latitude du HVU = ');                                              % choix de la latitude de départ du scénario pour le HVU
    while l<-90 || l>90
        clc
        l=input('Rentrez une latitude du HVU comprise entre -90° et 90° = '); 
    end
     
    L=input('Longitude du HVU = ');                                             % choix de la longitude de départ du scénario pour le HVU
    while L<-360 || L>360
        L=input('Rentrez une Longitude du HVU comprise entre -360° et 360° = ');
    end
     
    plot ([L L], [l l],'.r','MarkerSize',20);                                   % affichage de la position du HVU
    la représentation est celle-ci :

    [img=http://img205.imageshack.us/img205/8286/repereprincipaloy6.th.jpg]

    ce morceau de code devra permettre par la suite de placer le navire principal de ma flotte (appelé HVU dans le second fichier.m) à l'aide des coordonnée latitude/longitude.

    le point rouge represente juste un test fait lors d'une simulation avec des coordonnées prisent au hazard

    Ensuite j'ai mon 2e fichier.m


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    clear all; 
    clc;
     
    %%%%%%%%%%%%%%%%%%%%%%%%% PARAMETRES INITIAUX %%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    % 1° <--> 60N <--> 111.12 km
     
    % HVU :
    Vhvu=18                                                                     % Vitesse du HVU en noeuds 
    VHVU=18*1.852;                                                               % vitesse du HVU en km/h
    VHVU=VHVU/111.12;                                                           % vitesse du HVU en °/h
     
    % Frégates :
    Vd=12                                                                       % vitesse de la frégate en noeuds en drift 
    Vs=24                                                                       % vitesse de la fréagte en noeuds en sprint 
    VD=12*1.852;                                                                % vitesse de la frégate en drift en km/h
    VS=24*1.852;                                                                % vitesse de la frégate en sprint en km/h
    VDd=VD/111.12;                                                               % vitesse de la frégate en drift en °/h
    VSd=VS/111.12;                                                               % vitesse de la frégate en sprint en °/h
     
    % Sous-Marin 
    Vsm=input('Vsm = ');                                                        % vitesse du sous-marin choisie par l'utilisateur en noeuds 
    while Vsm>Vhvu
          Vsm=input('Vsm = '); 
    end
    VSM=Vsm*1.852;                                                              % vitesse du sous-marin en km/h
    VSM=VSM/111.12;                                                             % vitesse du sous-marin en °/h
     
    CapHVUd=input('CapHVU en degré = ');
    CapHVUr=CapHVUd*pi/180;
    CapDeg=90-CapHVUd;
     
    TDZ=20;                                                                     % cercle d'origine la position du HVU à l'instant t   
     
    thetaDeg=(asin(Vsm/Vhvu))*180/pi;                                           % angle entre le cap du HVU à l'instant t et le LLA (en degré)                                            
    theta=asin(Vsm/Vhvu);                                                       % angle entre le cap du HVU à l'instant t et le LLA (en radian)
     
    L1=TDZ/sin(theta);                                                          % distance entre la position du HVU à l'instant t et l'origine du LLA
    L2=3/2*TDZ;                                                                 % distance entre la position du HVU à l'instant t et la petite base du trapeze correspondant à la zone de protection
    L3=28;                                                                      % hauteur du trapeze correspondant à la zone de protection d'une frégate 
    L=L1+L2+L3;                                                                 % sommes des trois distances cad distance entre l'origine du LLA et la grande base du trapeze correspondant à la zone de protection d'une frégate
    Lk=99*10^6-L1;
     
    B1=tan(theta)*L;                                                            % grande base du trapeze correspondant à la zone de protection d'une frégate
    B2=tan(theta)*(L1+L2);                                                      % petite base du trapeze correspondant à la zone de protection d'une frégate
    Bk=tan(theta)*99*10^6;
    AirTrapeze=(B1+B2)*(L3/2)                                                   % air du trapeze
    AirZone=2*AirTrapeze                                                        % air de la zone de protection
     
    B3=tan(theta)*(130+L1);                                                     % petite base du trapeze n°2
    B4=tan(theta)*(130+L3+L1);                                                  % grande base du trapeze n°2
    AirTrapeze2=(B3+B4)*(L3/2)                                                  % air du trapeze n°2
     
    betaDeg=(atan(Vsm/Vs))*180/pi;                                              % angle de la trajectoire de la frégate en sprint par rapport au cap du HVU
     
     
    % Initialisation des paramètres de simulation 
    deltaT=0.01;                                                                % base de temps = 0,01 seconde                                                           
     
     
    %%%%%%%%%%%%% Représentation du cercle trigonomètrique %%%%%%%%%%%%%
     
    figure1 = figure('Color',[1 1 1]);
    polar(0,200);
    title('\fontsize{14}Représentation graphique du scénario','FontWeight','Bold');
    datacursormode;
     
     
     
     
     
    %%%%%%%%%%%%% Representation des LLA %%%%%%%%%%%%%
     
    % Parametres : 
     
    L4=sin(CapHVUr)*L1;                                                         % abscisse de l'origine du LLA
    L5=cos(CapHVUr)*L1;                                                         % ordonnée de l'origine du LLA
    L22=cos(90*pi/180-CapHVUr)*Lk;
    L23=sin(90*pi/180-CapHVUr)*Lk;
    L24=cos(90*pi/180-CapHVUr)*Bk;
    L25=sin(90*pi/180-CapHVUr)*Bk;
    L26=L22-L25;
    L27=L23+L24;
    L28=L22+L25;
    L29=L23-L24;
     
     
    % 1e branche :
     
    pts = [-L4 -L5
           L26 L27];
    p1 = pts(1,:);
    p2 = pts(2,:);
     
    % Create line
    line([p1(1,1) p2(1,1)], [p1(1,2) p2(1,2)],...                               % format line( [x1 x2], [y1 y2])
        'Color','k');                                 
     
     
    % 2e branche :
     
    pts = [-L4 -L5
           L28 L29];  
    p3 = pts(1,:);
    p4 = pts(2,:);
     
    % Create line
    line([p3(1,1) p4(1,1)], [p3(1,2) p4(1,2)],...                               % format line( [x1 x2], [y1 y2])   
        'Color','k');                                 
     
    hold on;
     
     
    %%%%%%%%%%%%% Représentation de la zone de protection des frégates %%%%%%%%%%%%%
     
    % Petite base du trapèze : B2
     
    L6=cos(90*pi/180-CapHVUr)*L2;                                               % abscisse de l'intersection entre le cap du HVU et la petite base du trapeze
    L7=sin(90*pi/180-CapHVUr)*L2;                                               % ordonnée de l'intersection entre le cap du HVU et la petite base du trapeze
    L8=cos(90*pi/180-CapHVUr)*B2;                                                
    L9=sin(90*pi/180-CapHVUr)*B2;                                               
    L10=L6-L9;                                                                  % abscisse du point se trouvant à l'intersection du LLA et de la petite base
    L11=L7+L8;                                                                  % ordonnée du point se trouvant à l'intersection du LLA et de la petite base
    L12=L6+L9;                                                                  % abscisse du point se trouvant à l'intersection du LLA et de la petite base
    L13=L7-L8;                                                                  % ordonnée du point se trouvant à l'intersection du LLA et de la petite base
     
     
    pts = [L10 L11
           L12 L13];
    p5 = pts(1,:);
    p6 = pts(2,:);
     
    % Create line
    line([p5(1,1) p6(1,1)], [p5(1,2) p6(1,2)],...                       % format line( [x1 x2], [y1 y2])
        'Color','k');
     
     
    % Grande base du trapèze : B1
     
    L14=cos(90*pi/180-CapHVUr)*(L2+L3);                                         % abscisse de l'intersection entre le cap du HVU et la grande base du trapeze
    L15=sin(90*pi/180-CapHVUr)*(L2+L3);                                         % ordonnée de l'intersection entre le cap du HVU et la grande base du trapeze
    L16=cos(90*pi/180-CapHVUr)*B1;
    L17=sin(90*pi/180-CapHVUr)*B1;
    L18=L14-L17;                                                                % abscisse du point se trouvant à l'intersection du LLA et de la grande base
    L19=L15+L16;                                                                % ordonnée du point se trouvant à l'intersection du LLA et de la grande base
    L20=L14+L17;                                                                % abscisse du point se trouvant à l'intersection du LLA et de la grande base
    L21=L15-L16;                                                                % ordonnée du point se trouvant à l'intersection du LLA et de la grande base
     
     
    pts = [L18 L19
           L20 L21];
    p7 = pts(1,:);
    p8 = pts(2,:);
     
    % Create line
    line([p7(1,1) p8(1,1)], [p7(1,2) p8(1,2)],...                       % format line( [x1 x2], [y1 y2])
        'Color','k');
     
    hold on;
     
     
    %%%%%%%%%%%%% Representation d'une zone en avale de la flotte : Trapeze 2 %%%%%%%%%%%%%
     
    % Petite base du trapeze 2
     
    L31=cos(90*pi/180-CapHVUr)*130;                                             % abscisse de l'intersection entre le cap du HVU et la petite base du trapeze 2
    L32=sin(90*pi/180-CapHVUr)*130;                                             % ordonnée de l'intersection entre le cap du HVU et la petite base du trapeze 2
    L33=cos(90*pi/180-CapHVUr)*B3;
    L34=sin(90*pi/180-CapHVUr)*B3;
    L35=L31-L34;                                                                % abscisse du point se trouvant à l'intersection du LLA et de la petite base
    L36=L32+L33;                                                                % ordonnée du point se trouvant à l'intersection du LLA et de la petite base
    L37=L31+L34;                                                                % abscisse du point se trouvant à l'intersection du LLA et de la petite base
    L38=L32-L33;                                                                % ordonnée du point se trouvant à l'intersection du LLA et de la petite base
     
    pts = [L35 L36
           L37 L38];
    p19 = pts(1,:);
    p20 = pts(2,:);
     
    % Create line
    line([p19(1,1) p20(1,1)], [p19(1,2) p20(1,2)],...                   % format line( [x1 x2], [y1 y2])
        'Color','k');
     
     
    % Grande base du trapeze 2
     
    L39=cos(90*pi/180-CapHVUr)*(130+L3);                                        % abscisse de l'intersection entre le cap du HVU et la grande base du trapeze 2
    L40=sin(90*pi/180-CapHVUr)*(130+L3);                                        % ordonnée de l'intersection entre le cap du HVU et la grande base du trapeze 2
    L41=cos(90*pi/180-CapHVUr)*B4;
    L42=sin(90*pi/180-CapHVUr)*B4;
    L43=L39-L42;                                                                % abscisse du point se trouvant à l'intersection du LLA et de la grande base
    L44=L40+L41;                                                                % ordonnée du point se trouvant à l'intersection du LLA et de la grande base    
    L45=L39+L42;                                                                % abscisse du point se trouvant à l'intersection du LLA et de la grande base
    L46=L40-L41;                                                                % ordonnée du point se trouvant à l'intersection du LLA et de la grande base                                                        
     
    pts = [L43 L44
           L45 L46];
    p21 = pts(1,:);
    p22 = pts(2,:);
     
    % Create line
    line1 = line([p21(1,1) p22(1,1)], [p21(1,2) p22(1,2)],...                   % format line( [x1 x2], [y1 y2])
        'Color','k');
     
     
    %%%%%%%%%%%%% Représentation des axes sur le cercle trigonomètrique %%%%%%%%%%%%%
     
    plot([0 0], [-200 200],'-.y')
    plot([-200 200], [0 0],'-.y')
     
     
    %%%%%%%%%%%%% Représentation des cercles pour des raisons de visualisations %%%%%%%%%%%%%
     
    t1 = 0:0.1:2.01*pi;
    x=75*cos(t1);
    y=75*sin(t1);
    plot(x,y,':k');
    text (15, 79, '75')
     
    t2 = 0:0.1:2.01*pi;
    x=125*cos(t2);
    y=125*sin(t2);
    plot(x,y,':k');
    text (22, 127, '125')
     
    t3 = 0:0.1:2.01*pi;
    x=175*cos(t3);
    y=175*sin(t3);
    plot(x,y,':k');
    text (29, 179, '175')
     
     
    %%%%%%%%%%%%% Representation du HVU %%%%%%%%%%%%%
     
    plot ([0 0], [0 0],'.r','MarkerSize',20);
    text (3, 3,'HVU','FontWeight','Bold')
     
     
    %%%%%%%%%%%% Représentation du cap du HVU %%%%%%%%%%%%%
     
    pts = [-L4*99*10^6 -L5*99*10^6
            L4*99*10^6 L5*99*10^6];
     
    p17 = pts(1,:);
    p18 = pts(2,:);
     
    % Create line
    line([p17(1,1) p18(1,1)], [p17(1,2) p18(1,2)],...                           % format line( [x1 x2], [y1 y2])
         'Color','k'); 
     
     
    %%%%%%%%%%%%% Représentation du TDZ liée au HVU %%%%%%%%%%%%%
     
    t = 0:0.1:2.01*pi;
    x=(TDZ)*cos(t);
    y=(TDZ)*sin(t);
    plot(x,y,'k');
    text (3, 23,'TDZ','FontWeight','Bold') 
     
     
    % %%%%%%%%%%%%% Modelisation du mouvement du HVU %%%%%%%%%%%%%
    % 
    % % Initialsation des paramètres du mouvement
    % v0=18;                                                                    % vitesse initiale du HVU (en kts)
    % y0=0;                                                                     % ordonnée initiale du HVU (en m)
    % t0=0;
    % tn=99;
    % 
    % % Initialisation des variables de calcul
    % x(1)=0;                                                                     % abscisse initiale du HVU = 0
    % y(1)=0;                                                                     % ordonnée initiale du HVU = 0
    % vX=v0;                                                                    % vitesse horizontale initiale du HVU - cette vitesse est constante
    % vY=v0;                                                                    % vitesse verticale initiale du HVU - cette vitesse est constante
    % 
    % % Initialisation graphique
    % %xbasc();
    % 
    % % Calcul du mouvement
    % i=2;                                                                      % indice de boucle 
    % while (deltaT < 99*10^6)                                                    % la boucle est exécutée tant que le temps n'est pas dépassé 
    %       vX(i)=vX(i-1)+deltaT;
    %       vY(i)=vY(i-1)+deltaT;
    %       x(i)=x(i-1)+vX(i)*deltaT;
    %       y(i)=y(i-1)+vY(i)*deltaT;
    %       i=i+1;                                                               % on passe à l'indice de tableau suivant
    % end
    % 
    % % Affichage du mouvement dans le repère choisi
    % 
    % ODE45
    % plot(x,y)
    %drawnow
     
     
     
    %%%%%%%%%% MODELISATION DES FREGATES %%%%%%%%
     
     
    %%%%%%%%%%%% frégate 1 %%%%%%%%%%%%%
     
     
    %%%%%%%%%%%% frégate 2 %%%%%%%%%%%%%
     
     
     
    %%%%%%%%%%%%% Ajout de bouton %%%%%%%%%%%%%
     
     
    sh = uicontrol(...
        'style','togglebutton',...
        'units','normalized',...
        'FontWeight','Bold',...
        'Position',[0.05 0.9 0.15 0.03],...
        'BackgroundColor','r',...
        'string','Lancement et Arrêt du scénario');
     
    uicontrol('style','text',...
        'units','normalized',...
        'BackgroundColor','w',...
        'position',[0.85 0.05 0.1 0.015],...
        'string','Echelle : 1 <--> 1Km');
    j'obtient l'image ci-dessous :
    [img=http://img98.imageshack.us/img98/7783/representationdelaflottho3.th.jpg]

    le CapHVUd=input('CapHVU en degré = '); du code permet de faire varier l'angle (par rapport au Nord) de la droite passant par l'origine du repère.

    ce qui serait bien serait de placer un slider qui me permettrait de faire varier cet angle durant la simulation. J'ai essayé le morceau de code ci-dessous malheureusement matlab me dit que la variable CapHVUd est déja utilisé. Donc comment faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %uicontrol( 'style','slider',...
    %     'Max',360, ...
    %     'Min',-360, ...
    %     'Value',0.1,...
    %     'SliderStep',[0.05 0.2],...    
    %     'position',[0.05 0.1 0.1 0.015],...
    %     'units','normalized',...
    %     'CallBack',@CapHVUd_callback,...
    %     'string','Modification du cap du HVU',...

    Le but de ce deuxième fichier est de faire une simulation en faisant avancer le point se trouvant à l'origine du repère (un navire appelé HVU) sur la droite tracé à l'aide de CapHVUd=input('CapHVU en degré = '); tout en le laissant à l'origine du repère dans ce cas la, lors de la simulation le mouvement sera simulé par l'avancé de la droite sur le point.

    j'ai essayé le morceau de code ci-dessous en vain

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    %%% Modelisation du mouvement du HVU %%%
     
    % % Initialsation des paramètres du mouvement
    % v0=18;                                % vitesse initiale du HVU (en kts)
    % y0=0;                                  % ordonnée initiale du HVU (en m)
     
    % Initialisation des variables de calcul
    % x(1)=0;                               % abscisse initiale du HVU = 0
    % y(1)=0;                               % ordonnée initiale du HVU = 0
    % vX=v0;                               % vitesse horizontale initiale du HVU - cette vitesse est constante
    % vY=v0;                              % vitesse verticale initiale du HVU - cette vitesse est constante
     
    % Initialisation graphique
    %xbasc();
     
    % Calcul du mouvement
    % i=2;                                  % indice de boucle 
    % while (deltaT<99*10^6)       % la boucle est exécutée tant que le temps n'est pas dépassé 
    %       vX(i)=vX(i-1)+deltaT;
    %       vY(i)=vY(i-1)+deltaT;
    %       x(i)=x(i-1)+vX(i)*deltaT;
    %       y(i)=y(i-1)+vY(i)*deltaT;
    %       i=i+1;                        % on passe à l'indice de tableau suivant
    % end
    % 
    %  Affichage du mouvement dans le repère choisi
    % plot(x,y)
    % drawnow

    Dans un 3e fichier.m


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    % Modelisation des trajectoires des frégates dans leur repere
     
    clear all;
    clc;
     
    %%%%%%%%%%%%%%% PARAMETRES INITIAUX %%%%%%%%
     
    % 1° <--> 60N <--> 111.12 km
     
    % HVU :
    Vhvu=18                                                                     % Vitesse du HVU en noeuds 
    VHVU=18*1.852;                                                              % vitesse du HVU en km/h
    VHVUd=VHVU/111.12;                                                           % vitesse du HVU en °/h
     
    % Sous-Marin 
    Vsm=input('Vsm = ');                                                        % vitesse du sous-marin choisie par l'utilisateur en noeuds 
    while Vsm>Vhvu
        Vsm=input('Vsm = ');
    end
    VSM=Vsm*1.852;                                                              % vitesse du sous-marin en km/h
    VSM=VSM/111.12;                                                             % vitesse du sous-marin en °/h
     
    % Frégates :
    Vd=12                                                                       % vitesse de la frégate en noeuds en drift 
    Vs=24                                                                       % vitesse de la fréagte en noeuds en sprint 
    VD=12*1.852;                                                                % vitesse de la frégate en drift en km/h
    VS=24*1.852;                                                                % vitesse de la frégate en sprint en km/h
    VDd=VD/111.12;                                                               % vitesse de la frégate en drift en °/h
    VSd=VS/111.12;                                                               % vitesse de la frégate en sprint en °/h
     
    TDZ=20;                                                                     % cercle ayant pour origine la position du HVU à l'instant t 
     
    thetaDeg=(asin(Vsm/Vhvu))*180/pi;                                           % angle entre le cap du HVU à l'instant t et le LLA (en degré)                                            
    theta=asin(Vsm/Vhvu);                                                       % angle entre le cap du HVU à l'instant t et le LLA (en radian)
    betaDeg=(atan(Vsm/Vs))*180/pi;                                              % angle de la trajectoire de la frégate en sprint par rapport au cap du HVU
     
    L1=TDZ/sin(theta);                                                          % distance entre la position du HVU à l'instant t et l'origine du LLA
    L2=3/2*TDZ;                                                                 % distance entre la position du HVU à l'instant t et la petite base du trapèze correspondant à la zone de protection
    L3=28;                                                                      % hauteur du trapèze correspondant à la zone de protection d'une frégate 
    L=L1+L2+L3;    
     
    B1=tan(theta)*L;                                                            % grande base du trapeze correspondant à la zone de protection d'une frégate
    B2=tan(theta)*(L1+L2);                                                      % petite base du trapeze correspondant à la zone de protection d'une frégate
     
    %Ps=((-5/12)*(Vf*Vf))+5*Vf+45
    Ps1=((-5/12)*(Vs*Vs))+5*Vs+45;                                              % portée du sonar estimée pour une certaine vitesse de la frégate (sprint)
    Ps2=((-5/12)*(Vd*Vd))+5*Vd+45;                                              % portée du sonar estimée pour une certaine vitesse de la frégate (drift)
     
    % Initialisation des paramètres de simulation 
    deltaT=0.01;                                                                % base de temps = 0,01 seconde
     
    figure1 = figure('Color',[1 1 1]);                                          % ajustement de la couleur de fond de l'image
     
    title('\fontsize{13}Modelisation des trajectoires des frégates dans leur repere','FontWeight','Bold');
    datacursormode;
     
    hold on;
    axis ([0 100 -100 100]);                                                    % valeur des axes : xmin xmax ymin ymax 
     
    plot([0 0], [B2 -B2]),                                                      % representation de la petite base du trapeze
    plot([L3 L3], [B1 -B1]);                                                    % representation de la grande base du trapeze
    plot([0 L3], [0 0]);                                                        % representation de la hauteur du trapeze
    plot([0 L3], [B2 B1])                                                       % ligne entre le sommet de la petite base et de la grande base
    plot([0 L3], [-B2 -B1])                                                     % ligne entre le sommet de la petite base et de la grande base
     
    hold on;
    grid on;                                                                    % ajout de la grille sur le graphique
     
     
    uicontrol('style','text',...
        'units','normalized',...
        'BackgroundColor','w',...
        'position',[0.85 0.05 0.1 0.015],...
        'string','Echelle : 1 <--> 1km');
     
     
     
     %%%%%%%%% MODELISATION DES FREGATES %%%%%%%%%
     
     % Boucle pour la délimitation des périodes des vitesse sprint & drift 
     
    % Vf1=VS;                                                                   % vitesse de la frégate 1 en sprint
    % Vf2=VD;                                                                   % vitesse de la frégate 2 en drift 
    % t=0;                                                                      % initialisation du temps 
    % while t<3                                                                 % boucle tant que t < ..
    %    tic                                                                    % lancement du chrono
    %    Vf1=VS;                                                                % conditions de la boucle
    %    Vf2=VD;                                                                % conditions de la boucle 
    %    t=t+toc;                                                               % temps initiale + temps écoulé
    %     if (t>=3)
    %     Vf1=VD;
    %     Vf2=VS;
    %     t=3;
    %         while t<6
    %         tic
    %         Vf1=VD;
    %         Vf2=VS;
    %         t=t+toc;
    %             if (t>=6)
    %                   t=0;
    %             break
    %             end
    %          end
    %     end
    % end
     
     
     
    % %%%%%%%%%%%% frégate 1 %%%%%%%%%%%%%
     
    pts1 = plot ([5 5], [B2/3 B2/3],'.r','MarkerSize',20);
     
    % Visualisation de la portée des sonars en sprint & drift %
     
    % t=0:0.1:2*pi;
    % x=Ps1*cos(t);
    % y=Ps1*sin(t);
    % h = stem(x,y);
    % set(h(1),'Color','g')
    % set(h(1),'Marker','none')
    % set(get(h,'BaseLine'),'LineStyle','none')
    % plot(x,y,'g') 
     
     
    % else Vf>=Vs;
    % t=0:0.1:2.01*pi;
    % x=Ps*cos(t);
    % y=Ps*sin(t);
    % h=stem(x,y);
    % set(h(1),'Color','g')
    % set(h(1),'Marker','none')
    % set(get(h,'BaseLine'),'LineStyle','none')
    % plot(x,y,'g') 
    % end
     
     
    %%%%%%%%%%%% frégate 2 %%%%%%%%%%%%%
     
    pts2 = plot ([5 5], [-2*B2/3 -2*B2/3],'.r','MarkerSize',20);
     
    % Visualisation de la portée des sonars en sprint & drift %
     
    % t=0:0.1:2.01*pi;
    % x=Ps2*cos(t);
    % y=Ps2*sin(t);
    % h = stem(x,y);
    % set(h(1),'Color','g')
    % set(h(1),'Marker','none')
    % set(get(h,'BaseLine'),'LineStyle','none')
    % plot(x,y,'g')
     
    % for Vf=Vs;
    % t=0:0.1:2.01*pi;
    % x=Ps2*cos(t);
    % y=Ps2*sin(t);
    % h=stem(x,y);
    % set(h(1),'Color','g')
    % set(h(1),'Marker','none')
    % set(get(h,'BaseLine'),'LineStyle','none')
    % plot(x,y,'g')
    % end
    j'obtient l'image ci-dessous :
    [img=http://img133.imageshack.us/img133/228/representationdesfrgatenp6.th.jpg]

    Qui represente les deux premiers trapèzes du 2e fichier.m

    ma question principal est : comment faire le lien entre les 3 fichiers.m ?
    le premier montre le repere général de l'ensemble, le deuxieme la représentation graphique de la flotte et le 3e la modélisation des deux trapèzes avec dans le futur la modélisation du mouvement de deux mobiles chacun à l'interieur d'un trapèze .

    Je voudrais fixer l'axe du 3e fichier.m sur le 2e fichier.m qui permettrait lorsque je lance la simulation de mon 2e fichier, le mouvement de mes deux fichiers. Sachant que le mobile se trouvant à l'origine du repère (le mobile appelé HVU) avance avec une vitesse de 18, les deux trapèzes du 3e fichier doivent eux aussi avancer avec une vitesse de 18 sur l'axe des abscisses.

    Ensuite les fichiers 2 et 3 devront etre rapporté sur le 1e fichier et lors de la simulation on verait l'ensemble de la flotte bouger sur le repere terrestre

    J'ai besoin de vous car je sens que je vais manquer de temps pour finaliser ce projet

    Merci d'avance

  2. #2
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    Salut,

    voici une solution (à améliorer) :

    1- Mettre ton code en fonction :

    J'ai défini la fonction myAnimation (à mettre dans myAnimation.m) qui prend en entre 3 paramètres : Vf, CapHVUd, et hFigure qui est le handle de la figure pour dessiner dessus ...

    J'ai mi la balise [modification] la ou j'ai touché le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
     
    function myAnimation(Vf,CapHVUd,hFigure)
    %
    %
     
    %clear all; 
    %clc;
    clock;
     
    %%%% PARAMETRES INITIAUX %%%% 
     
    Vhvu=18% Vitesse du HVU en noeuds 
     
    % Vitesse des ASWFF en noeuds 
     
    % [MODIFICATION]
    if nargin < 2
        Vf=input('Vf = ');
    end
    % [\MODIFICATION]
     
    Vd=12                                         % vitesse de la frégate en drift 
     
    Vs=24                                         % vitesse de la fréagte en sprint 
     
    % Vitesse du sous-marin en noeuds
    Vsm=8                                          % vitesse du sous-marin 
     
    % [MODIFICATION]
    if nargin < 2
        CapHVUd=input('CapHVU en degré = ');
    end
    % [\MODIFICATION]
     
    CapHVUr=CapHVUd*pi/180;
    CapDeg=90-CapHVUd;
     
    TDZ=20;                                  
     
    thetaDeg=(asin(Vsm/Vhvu))*180/pi                                                        
    theta=asin(Vsm/Vhvu);                             
     
    L1=TDZ/sin(theta);                                                          
    L2=3/2*TDZ;                                                                 
    L3=28;                                                                       
    L=L1+L2+L3;                                                                 
    Lk=99*10^6-L1;
     
    B1=tan(theta)*L;                                                            
    B2=tan(theta)*(L1+L2);                                                      
    Bk=tan(theta)*99*10^6;
    AirTrapeze=(B1+B2)*(L3/2)                                                   
    AirZone=2*AirTrapeze                                                        
     
    B3=tan(theta)*(130+L1);                                                     
    B4=tan(theta)*(130+L3+L1);                                                  
    AirTrapeze2=(B3+B4)*(L3/2)                                                  
     
    betaDeg=(atan(Vsm/Vs))*180/pi                                               
     
    Ps=((-5/12)*(Vf*Vf))+5*Vf+45;                                                
     
    % Initialisation des paramètres de simulation 
    deltaT=0.01                            % base de temps = 0,01 seconde
     
    %[MODIFICATION]
    %figure1 = figure('Color',[1 1 1]);
    if nargin < 2
        hFigure =1;
    end
    figure(hFigure)
    set(hFigure,'Color',[1 1 1])
    %[MODIFICATION]
    polar(0,200);
    title('\fontsize{14}Représentation graphique','FontWeight','Bold');
    datacursormode;
     
     
    uicontrol('style','text',...
        'units','normalized',...
        'BackgroundColor','w',...
        'position',[0.85 0.05 0.1 0.015],...
        'string','Echelle : 1 <--> 1Km');
     
     
     
    % Parametres : 
     
    L4=sin(CapHVUr)*L1;                                                         
    L5=cos(CapHVUr)*L1;                                                         
    L22=cos(90*pi/180-CapHVUr)*Lk;
    L23=sin(90*pi/180-CapHVUr)*Lk;
    L24=cos(90*pi/180-CapHVUr)*Bk;
    L25=sin(90*pi/180-CapHVUr)*Bk;
    L26=L22-L25;
    L27=L23+L24;
    L28=L22+L25;
    L29=L23-L24;
     
     
    % 1e branche :
     
    pts = [-L4 -L5
           L26 L27];
    p1 = pts(1,:);
    p2 = pts(2,:);
     
    % Create line
    line1 = line([p1(1,1) p2(1,1)], [p1(1,2) p2(1,2)],...                       % format line( [x1 x2], [y1 y2])
        'Color',['k']);                                 
     
     
    % 2e branche :
     
    pts = [-L4 -L5
           L28 L29];  
    p3 = pts(1,:);
    p4 = pts(2,:);
     
    % Create line
    line([p3(1,1) p4(1,1)], [p3(1,2) p4(1,2)],...                               % format line( [x1 x2], [y1 y2])   
        'Color',['k']);                                 
     
    hold on;
     
     
     
    % Petite base du trapèze 
     
    L6=cos(90*pi/180-CapHVUr)*L2;                                               
    L7=sin(90*pi/180-CapHVUr)*L2;                                               
    L8=cos(90*pi/180-CapHVUr)*B2;                                                
    L9=sin(90*pi/180-CapHVUr)*B2;                                               
    L10=L6-L9;                                                                 
    L11=L7+L8;                                                                  
    L12=L6+L9;                                                                  
    L13=L7-L8;                                                                  
     
     
    pts = [L10 L11
           L12 L13];
    p5 = pts(1,:);
    p6 = pts(2,:);
     
    % Create line
    line1 = line([p5(1,1) p6(1,1)], [p5(1,2) p6(1,2)],...                       % format line( [x1 x2], [y1 y2])
        'Color',['k']);
     
     
    % Grande base du trapèze 
     
    L14=cos(90*pi/180-CapHVUr)*(L2+L3);                                         
     
    L15=sin(90*pi/180-CapHVUr)*(L2+L3);                                         
    L16=cos(90*pi/180-CapHVUr)*B1;
    L17=sin(90*pi/180-CapHVUr)*B1;
    L18=L14-L17;                                                                
    L19=L15+L16;                                                                
    L20=L14+L17;                                                                
    L21=L15-L16;                                                                
     
     
    pts = [L18 L19
           L20 L21];
    p7 = pts(1,:);
    p8 = pts(2,:);
     
    % Create line
    line1 = line([p7(1,1) p8(1,1)], [p7(1,2) p8(1,2)],...                       % format line( [x1 x2], [y1 y2])
        'Color',['k']);
     
    hold on;
     
     
     
    plot([0 0], [-200 200],'-.y')
    plot([-200 200], [0 0],'-.y')
     
     
     
    t1 = 0:0.1:2.01*pi;
    x=75*cos(t1);
    y=75*sin(t1);
    plot(x,y,':k');
    text (15, 79, '75')
     
    t2 = 0:0.1:2.01*pi;
    x=125*cos(t2);
    y=125*sin(t2);
    plot(x,y,':k');
    text (22, 127, '125')
     
    t3 = 0:0.1:2.01*pi;
    x=175*cos(t3);
    y=175*sin(t3);
    plot(x,y,':k');
    text (29, 179, '175')
     
     
    %%% Representation du HVU %%%
     
    plot ([0 0], [0 0],'.r','MarkerSize',20);
    text (3, 3,'HVU','FontWeight','Bold')
     
     
    %%% Représentation du cap du HVU %%%
     
    pts = [-L4*99*10^6 -L5*99*10^6
            L4*99*10^6 L5*99*10^6];
     
    p17 = pts(1,:);
    p18 = pts(2,:);
     
    % Create line
    line([p17(1,1) p18(1,1)], [p17(1,2) p18(1,2)],...                           % format line( [x1 x2], [y1 y2])
         'Color',['k']); 
     
     
    %%% Représentation du TDZ liée au HVU %%%
     
    t = 0:0.1:2.01*pi;
    x=(TDZ)*cos(t);
    y=(TDZ)*sin(t);
    plot(x,y,'k');
    text (3, 23,'TDZ','FontWeight','Bold') 
     
     
    %%% Modelisation du mouvement du HVU %%%
     
    % % Initialsation des paramètres du mouvement
    % v0=18;                                % vitesse initiale du HVU (en kts)
    % y0=0;                                  % ordonnée initiale du HVU (en m)
     
    % Initialisation des variables de calcul
    % x(1)=0;                               % abscisse initiale du HVU = 0
    % y(1)=0;                               % ordonnée initiale du HVU = 0
    % vX=v0;                               % vitesse horizontale initiale du HVU - cette vitesse est constante
    % vY=v0;                              % vitesse verticale initiale du HVU - cette vitesse est constante
     
    % Initialisation graphique
    %xbasc();
     
    % Calcul du mouvement
    % i=2;                                  % indice de boucle 
    % while (deltaT<99*10^6)       % la boucle est exécutée tant que le temps n'est pas dépassé 
    %       vX(i)=vX(i-1)+deltaT;
    %       vY(i)=vY(i-1)+deltaT;
    %       x(i)=x(i-1)+vX(i)*deltaT;
    %       y(i)=y(i-1)+vY(i)*deltaT;
    %       i=i+1;                        % on passe à l'indice de tableau suivant
    % end
    % 
    %  Affichage du mouvement dans le repère choisi
    % plot(x,y)
    % drawnow
    2- Script d'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    clear all
    close all
    clc
     
    Vf = 2;  % aucune idée sur le sens physique :s
    Vangles = 5:5:90; 
     
     
    for u=1:numel(Vangles)
        myAnimation(Vf,Vangles(u),1)
     
        pause(2) 
        close 1 
    end
    Poste à la suite si t'as un probléme

    ++ bonne chance

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    J'ai quelques peu modifier le 1e message du topic en laissant l'ensemble des commentaires rajouté un fichier.m et modifier à certains endroit le code des fichiers.

    Vf devait etre la vitesse des frégates mais j'ai enlevé cette partie en laissant uniquement 2 vitesses distinctes Vs et Vd, deux vitesses utilisées par les frégates uniquement.

    Ma question peu paraître bête mais matlab n'apprécie pas le ''num'' de ton script d'appel et je vois pas bien ce que cela représente

  4. #4
    Membre éprouvé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Points : 1 256
    Points
    1 256
    Par défaut
    salut,

    NUMEL renvois le nombre d'éléments de ce que tu lui passe, ce qui correspond à la taille pour un vecteur (ligne ou colonne d'où son intérêt ...).

    Essaies ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    clear all
    close all
    clc
     
    Vf = 2;  % aucune idée sur le sens physique :s
    Vangles = 5:5:90; 
    
    
    for u=1:size(Vangles,2)
        myAnimation(Vf,Vangles(u),1)
    
        pause(2) 
        close 1 
    end

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    J'ai crée la fonction myAnimation dans le .m du même nom comme tu me l'as indiqué j'ai essayé d'appelé la fonction malheureusement j'ai un message d'erreur renvoyé par matlab qui me laisse dubitatif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ??? reference to a cleared variable CapHVUd 
    Error in ==> myAnimation
            CapHVUr=CapHVUd*pi/180
    Je l'a comprend vraiment pas, je suis encore un petit bleu sur matlab


    et il y a aussi cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error in ==> myAnimation
            myAnimation (Vangles(u),1)
    j'ai enlevé le Vf qui n'a plus lieu d'être

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Enlève le 'clear all' au début de ta fonction car cela efface toutes les variables donc en particulier celles que tu mets en entrée de ta fonction.

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Voila mon projet arrive à son terme et il me reste juste une petite chose à faire.



    sur l'image ci-dessus il me reste juste à simuler l'avancement de l'ensemble (les deux trapezes et la droite les coupants) avec une vitesse déterminé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vhvu=input('Vitesse du HVU en nœuds = ');
    Malheureusement, je vois pas comment faire un drawnow sur des segments tracé avec ''line'' apriori si on fait avancer le point se trouvant en coordonnée (0,0) l'ensemble de la figure devrait avancé vu que tous les segments sont fixés entre eux.

    Une petite aide pour pouvoir franchir enfin cette ligne d'arrivé me ferait énormèment plaisir, même si vous avez pas la solution précise, proposé des idées car je vois vraiment pas comment faire

    Le code est le suivant. Il est certes lourd, il y a surement moyens de l'optimiser mais il doit rester accessible à une tierce personne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    % REPRESENTATION GRAPHIQUE DANS LE REPERE DES FREGATES
     
    % *************************************************************************
    %                                     Modélisation des trajectoires des frégates 
    % *************************************************************************
     
    % ******************  1° <--> 60N <--> 111.12 km **************************
     
    clc;
     
    %%%% PARAMETRES INITIAUX %%%%
     
    % HVU :
    if nargin <2
    Vhvu=input('Vitesse du HVU en nœuds = ');  
    end
     
    % Cap :
    CapHVUd=input('Cap du HVU en degré = ');      
    while CapHVUd>360 || CapHVUd<-360
        CapHVUd=input('Choisir un cap du HVU compris entre -360° et 360° : CapHVU en degré = ');
    end
    CapHVUr=CapHVUd*pi/180;                                           
     
    % Sous-Marin  
    if nargin <2
    end
    Vsm=input('Vitesse du Sous-Marin en nœuds = ');        
    while Vsm>Vhvu || Vsm<0
      Vsm=input('Choisir une vitesse du Sous-Marin comprise entre 0 et la vitesse du HVU : Vsm = '); 
    end
     
    % Frégates
    Vd=input ('Choisir une vitesse de la frégate en drift = ');   %vitesse en drift 
    Vs=Vhvu+(Vhvu-Vd)                % vitesse de la frégate en nœuds en sprint 
     
    TDZ=20;           % cercle ayant pour origine la position du HVU à l'instant t   
     
    thetaDeg=(asin(Vsm/Vhvu))*180/pi              % angle entre le cap du HVU à l'instant t et le LLA (en degré)                                            
    theta=asin(Vsm/Vhvu);                                % angle entre le cap du HVU à l'instant t et le LLA (en radian)
     
    betaDeg=(atan(Vsm/Vs))*180/pi       % angle trajectoire frégate en sprint / au cap du HVU (en degrés)
    beta=(atan(Vsm/Vs));                       % angle trajectoire frégate en sprint / au cap du HVU (en radian)
     
    L1=TDZ/sin(theta);                     % distance entre position du HVU à l'instant t et l'origine du LLA (en Km)
    L2=3/2*TDZ;                              % distance entre la position du HVU à l'instant t et la petite base 
    L3=28;                                       % hauteur du trapèze  (en Km)
    L=L1+L2+L3;                          % distance entre l'origine des LLA et l'intersection grande base/cap (en Km)
     
    L4=(cos(90*pi/180-CapHVUr)*(L2+L3));                      % abscisse du LLA à la distance L2+L3
    L5=(sin(90*pi/180-CapHVUr)*(L2+L3));                        % ordonnée du LLA à la distance L2+L3
     
    B1=tan(theta)*L                       % grande base trapèze (en km)
    B2=tan(theta)*(L1+L2)          % petite base du trapèze  (en km)
     
     
    % Initialisation des paramètres de simulation 
    deltaT = input ('Choix de la valeur du pas pour tracer les trajectoires = ');
     % distance perdu par rapport au HVU du à l'angle Beta
    t=input ('Base de temps pour les diffèrentes phases sprint & drift en minute = ');
    d=Vs*(t/60);                  % distance parcourue par la frégate durant la base de temps choisie par l'utilisateur
    Hyp=d/cos(beta);          % distance devant être parcourue éviter de perdre de la distance sur le HVU                                                              
    t1=(60/((Vs)/(Hyp-d)));     % temps devant être ajouté à la phase de sprint pour éviter la perte de distance 
     
    d=input('Distance initiale souhaitée séparant les frégates à t0 en kilomètre = ');
    while d>2*B1
        d=input ('Choisir une distance séparant les deux frégates qui reste dans le périmètre de protection. d = '); 
    end
     
    d1=input('Position initiale souhaitée de la frégate en abscisse en kilomètre = ');
     
     
     
    figure1 = figure('Color',[1 1 1]);                    % ajustement de la couleur de fond de l'image
    if nargin < 2
        hFigure = 3;
    figure(hFigure)
    set(hFigure,'Color',[1 1 1])
    end 
     
    Xlabel ('X en Mille Nautique');                                             
    Ylabel ('Y en Mille Nautique');                                             
    title('\fontsize{13}Représentation graphique dans le repère des frégates','FontWeight','Bold');
    dcm_obj = datacursormode;                                                   
    set (dcm_obj,'DisplayStyle','datatip','SnapToDataVertex','off')
     
    hold on;
    axis equal                                                    
    grid on;                                                                   
     
     %%%% Représentation du HVU %%%%
     
    pts = [0 0                                                                  % coordonnée en abscisse et ordonnée du cap du HVU
           L4/1.852 L5/1.852];
    p17 = pts(1,:);
    p18 = pts(2,:);
    line([p17(1,1) p18(1,1)], [p17(1,2) p18(1,2)],...                           % modélisation de la ligne représentant le cap du HVU
         'Color','b'); 
    plot ([0 0], [0 0],'.r','MarkerSize',20);                                   % marqueur pour la représentation du HVU
    text (-2, 2,'HVU','FontWeight','Bold')                                      % texte pour illustrer la position du HVU
     
     
    % Y=0:deltaT:200;
    % Z1=0*Y;
    % figure('doublebuffer','on')
    % fig1=figure1;
    % set(fig,'doublebuffer','on')
    % Z=plot(Y(1),Z1(1),'b');
    % for n=2:numel(Y)
    %     set(Z,'xdata',Y(1:n),'ydata',Z1(1:n))
    % drawnow
    % end
     hold on;
     
     
    %%%% Représentation des LLA %%%%
     
    % Parametres : 
    L6=cos(90*pi/180-CapHVUr)*L2;                                               % abscisse du point se trouvant à l'intersection du cap du HVU et de la petite base du trapèze
    L7=sin(90*pi/180-CapHVUr)*L2;                                               % ordonnée du point se trouvant à l'intersection du cap du HVU et de la petite base du trapèze
    L8=cos(90*pi/180-CapHVUr)*B1;                                               % ordonné du point à l'intersection des LLA et de la grande base dans un repère de rotation 90-CapHVU
    L9=sin(90*pi/180-CapHVUr)*B1;                                               % abscisse du point à l'intersection des LLA et de la grande base dans un repère de rotation 90-CapHVU
    L10=cos(90*pi/180-CapHVUr)*B2;                                              % ordonné du point à l'intersection des LLA et de la petite base dans un repère de rotation 90-CapHVU
    L11=sin(90*pi/180-CapHVUr)*B2;                                              % abscisse du point à l'intersection des LLA et de la petite base dans un repère de rotation 90-CapHVU
     
     
    % 1e branche :
    pts = [(L6-L11)/1.852 (L7+L10)/1.852                                        % coordonnée en abscisse et ordonnée d'une des droite du LLA
           (L4-L9)/1.852 (L5+L8)/1.852];
    p1 = pts(1,:);
    p2 = pts(2,:);
    line([p1(1,1) p2(1,1)], [p1(1,2) p2(1,2)],...                               % modélisation d'une des ligne représentant le LLA
        'Color','b');                                 
     
    % 2e branche :
    pts = [(L6+L11)/1.852 (L7-L10)/1.852                                        % coordonnée en abscisse et ordonnée d'une des droite du LLA
           (L4+L9)/1.852 (L5-L8)/1.852];  
    p3 = pts(1,:);
    p4 = pts(2,:);
    line([p3(1,1) p4(1,1)], [p3(1,2) p4(1,2)],...                               % modélisation d'une des ligne représentant le LLA
        'Color','b');                                 
     
    hold on;
     
     
    %%%% Modélisation des frégates %%%%
     
    % Paramètres pour la représentation
    L12=cos(90*pi/180-CapHVUr)*(L2+d1);     
    L13=sin(90*pi/180-CapHVUr)*(L2+d1);                                          
    L14=cos(90*pi/180-CapHVUr)*(d/2);                                           
    L15=sin(90*pi/180-CapHVUr)*(d/2);                                           
     
    % Petite base du trapèze : B2                                    
    pts = [(L6-L11)/1.852 (L7+L10)/1.852       % coordonnée en abscisse et ordonnée de la petite base 
           (L6+L11)/1.852 (L7-L10)/1.852];
    p5 = pts(1,:);
    p6 = pts(2,:);
    line([p5(1,1) p6(1,1)], [p5(1,2) p6(1,2)],...    % modélisation de la petite base du trapeze
        'Color','b');
     
     
     
    % Grande base du trapèze : B1
    pts = [(L4-L9)/1.852 (L5+L8)/1.852         % coordonnée en abscisse et ordonnée de la petite base 
           (L4+L9)/1.852 (L5-L8)/1.852];
    p7 = pts(1,:);
    p8 = pts(2,:);
    line([p7(1,1) p8(1,1)], [p7(1,2) p8(1,2)],...    % modélisation de la grande base des deux trapèzes
        'Color','b');
     
    hold on;
     
     % Boucle pour la délimitation des périodes de vitesse sprint & drift 
     
    % Vf1=Vs                                       % vitesse de la frégate 1 en sprint
    % Vf2=Vd                                      % vitesse de la frégate 2 en drift 
    % t=0;                                               % initialisation du temps 
    % while t<3                                       % boucle tant que t < ..
    %    tic                                               % lancement du chrono
    %    Vf1=Vs;                                  % conditions de la boucle
    %    Vf2=Vd;                                      % conditions de la boucle 
    %    t=t+toc;                                       % temps initiale + temps écoulé
    %     if (t>=3)
    %     Vf1=Vd;
    %     Vf2=Vs;
    %     t=3;
    %         while t<6
    %         tic
    %         Vf1=Vd;
    %         Vf2=Vs;
    %         t=t+toc;
    %             if (t>=6)
    %                   t=0;
    %             break
    %             end
    %          end
    %     end
    % end
     
    % frégate 1 :
     
    f1 = plot ([(L12-L15)/1.852 (L12-L15)/1.852], [(L13+L14)/1.852 (L13+L14)/1.852],'.r','MarkerSize',20);       
    text ((L12-L15+2)/1.852, (L13+L14+2)/1.852,'Frégate 1','FontWeight','Bold')
     
    x0=(L12-L15)/1.852;                                 % position initiale de la frégate 1 (en abscisse)
    y0=(L13+L14)/1.852;                                 % position initiale de la frégate 1 (en ordonnée)                                                         
     
    x1=x0+cos(beta+(90*pi/180-CapHVUr))*(Vs*((t+t1)/60));   % position  frégate à t = .. min (en abscisse)
    y1=y0+sin(beta+(90*pi/180-CapHVUr))*(Vs*((t+t1)/60));     % position  frégate à t = .. min (en ordonnée)
    % l'équation d'une droite est de la forme y=ax+b
    a1=(y1-y0)/(x1-x0);                                                         % détermination du coefficient directeur de la droite
    b1=y1-x1*a1;                                                                % détermination de l'ordonnée à l'origine de la droite
    if x0 < x1
    M1=x0:deltaT:x1;
    else 
        M1=x1:deltaT:x0;
    end
    N1=a1*M1+b1;
    x2=x1+cos(90*pi/180-CapHVUr)*(Vd*(t/60));
    y2=y1+sin(90*pi/180-CapHVUr)*(Vd*(t/60));
     
    a2=(y2-y1)/(x2-x1);                                                         
    b2=y2-x2*a2;                                                               
    if x1 < x2
    M2=x1:deltaT:x2;
    else 
        M2=x2:deltaT:x1;
    end
    N2=a2*M2+b2;
     
    x3=x2+cos(beta-(90*pi/180-CapHVUr))*(Vs*((t+t1)/60)); 
    y3=y2-sin(beta-(90*pi/180-CapHVUr))*(Vs*((t+t1)/60)); 
     
    a3=(y3-y2)/(x3-x2);                                                         
    b3=y3-x3*a3;                                                                
    if x2 < x3
    M3=x2:deltaT:x3;
    else
        M3=x3:deltaT:x2;
    end
    N3=a3*M3+b3;
     
    x4=x3+cos(90*pi/180-CapHVUr)*(Vd*(t/60));
    y4=y3+sin(90*pi/180-CapHVUr)*(Vd*(t/60));
     
    a4=(y4-y3)/(x4-x3);                                                         
    b4=y4-x4*a4;                                                               
    if x3 < x4
    M4=x3:deltaT:x4;
    else
        M4=x4:deltaT:x3;
    end
    N4=a4*M4+b4;
     
    p=plot(M1,N1,'b',M2,N2,'r',M3,N3,'b',M4,N4,'r');
    hold on;
    legend (p,{'Trajectoire en Sprint','Trajectoire en Drift'})
     
    % extraction des coordonnées dans un fichier externe
    fid =  fopen('trajectoire frégate 1.txt', 'wt');
    fprintf(fid,'%s\n','#Pour des raisons de facilité OSATIS représente les coordonnées selon la norme suivante : axe des abscisses = y ; axe des ordonnées = x');
    fprintf(fid,'\n%s\n','#vecteur y');
    fprintf(fid,'%6.4f\n', M1, M2, M3, M4);
    fprintf(fid,'\n\n%s\n','#vecteur x');
    fprintf(fid,'%6.4f\n', N1, N2, N3, N4);
    fclose(fid);
     
     
     
     
    % frégate 2 :
     
    f2 = plot ([(L12+L15)/1.852 (L12+L15)/1.852], [(L13-L14)/1.852 (L13-L14)/1.852],'.r','MarkerSize',20);    
    text ((L12+L15+2)/1.852, (L13-L14+2)/1.852,'Frégate 2','FontWeight','Bold')
     
    x01=(L12+L15)/1.852;                        % position initiale de la frégate 2 (en abscisse)
    y01=(L13-L14)/1.852;                       % position initiale de la frégate 2 (en ordonnée)                                                         
    x5=x01+cos(90*pi/180-CapHVUr)*(Vd*(t/60));
    y5=y01+sin(90*pi/180-CapHVUr)*(Vd*(t/60));
    a5=(y5-y01)/(x5-x01);                                              
    b5=y5-x5*a5;                                                                
    if x01 < x5
    M5=x01:deltaT:x5;
    else
        M5=x5:deltaT:x01;
    end
    N5=a5*M5+b5;
     
    x6=x5+cos(beta+(90*pi/180-CapHVUr))*(Vs*((t+t1)/60));          
    y6=y5+sin(beta+(90*pi/180-CapHVUr))*(Vs*((t+t1)/60));                 
    a6=(y6-y5)/(x6-x5);                                                         
    b6=y6-x6*a6;                                                                
    if x5 < x6
    M6=x5:deltaT:x6;
    else
        M6=x6:deltaT:x5;
    end
    N6=a6*M6+b6;
     
    x7=x6+cos(90*pi/180-CapHVUr)*(Vd*(t/60));
    y7=y6+sin(90*pi/180-CapHVUr)*(Vd*(t/60));
    a7=(y7-y6)/(x7-x6);                                                        
    b7=y7-x7*a7;                                                             
    if x6 < x7
    M7=x6:deltaT:x7;
    else
        M7=x7:deltaT:x6;
    end
    N7=a7*M7+b7;
     
    x8=x7+cos(beta-(90*pi/180-CapHVUr))*(Vs*((t+t1)/60)); 
    y8=y7-sin(beta-(90*pi/180-CapHVUr))*(Vs*((t+t1)/60)); 
    a8=(y8-y7)/(x8-x7);                                       
    b8=y8-x8*a8;                                                               
    if x7 < x8
    M8=x7:deltaT:x8;
    else
        M8=x8:deltaT:x7;
    end
    N8=a8*M8+b8;
     
    p1=plot(M5,N5,'r',M6,N6,'b',M7,N7,'r',M8,N8,'b');
     
    % extraction des coordonnées dans un fichier externe
    fid =  fopen('trajectoire frégate 2.txt', 'wt');
    fprintf(fid,'%s\n','#Pour des raisons de facilité OSATIS représente les coordonnées selon la norme suivante : axe des abscisses = y ; axe des ordonnées = x');
    fprintf(fid,'\n%s\n','#vecteur y');
    fprintf(fid,'%6.4f\n', M5, M5, M6, M7);
    fprintf(fid,'\n\n%s\n','#vecteur x');
    fprintf(fid,'%6.4f\n', N5, N6, N7, N8);
    fclose(fid);

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Citation Envoyé par smo8000 Voir le message
    Malheureusement, je vois pas comment faire un drawnow sur des segments tracé avec ''line''
    Je ne vois pas bien ce que DRAWNOW vient faire ici. Cette fonction sert juste à forcer l'affichage d'un objet graphique.

    Citation Envoyé par smo8000 Voir le message
    vu que tous les segments sont fixés entre eux.
    La je ne comprends pas

    Un exemple simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    figure
     
    crx = line([0 0 ; 0 0],[1 -1 ; -1 1],[1 1 ; -1 -1],'color','r');
     
    dr  = line([0 10],[0 0],[0 0]);
     
    set(gca,'xlim',[0 10],'ylim',[-1 1],'zlim',[-1 1])
    view(3)
    grid on
     
    for n=1:10
     
        set(crx,'xdata',[n n]);
        pause(.5)
     
    end

Discussions similaires

  1. Lien entre 2 fichier .swf
    Par barbo_Africa dans le forum Flash
    Réponses: 1
    Dernier message: 15/05/2007, 12h27
  2. Faire des liens entre plusieurs table
    Par gibea00 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/01/2007, 18h01
  3. Réponses: 9
    Dernier message: 10/07/2006, 14h52
  4. Réponses: 3
    Dernier message: 16/05/2006, 10h32
  5. [Upload] Problème de lien entre mes fichiers
    Par temperature dans le forum Langage
    Réponses: 18
    Dernier message: 25/04/2006, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo