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

Scilab Discussion :

Bug d'affichage : la fenêtre devient blanche ou noir


Sujet :

Scilab

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Bug d'affichage : la fenêtre devient blanche ou noir
    Bonjour à tous,
    Dans un programme, je calcul la déformation du profil d'un pièce. Pour obtenir une représentation assez visuel du phénomène je souhaite afficher le profil avec un gradient de couleur. Pour ce faire j'ai codé la fonction suivante.

    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
     
    function affichageMoment(selectedStep,tulipe,jonc,Nhis,Mfis)
     
    DT=tulipe.diametreFondGorge+jonc.hauteurFil;
     
    xMax=max(Nhis(:,1,:));
    yMax=max(Nhis(:,2,:));
    yMin=max(Nhis(:,2,:));
     
    etendu=abs(max(Mfis))+abs(min(Mfis));
     
    graphNumber=200+selectedStep
     
    nn=10
     
    nInf=zeros(nn,1)
    nSup=zeros(nn,1)
     
    temp997=size(Effch);
    n=temp997(1,3);
     
    nInf(1,1)=min(Mfis);
    for pp=2:nn
        nInf(pp,1)=min(Mfis)+(((pp-1)/nn)*etendu);
    end
     
    nSup(nn,1)=max(Mfis);
    for pp=1:nn-1
        nSup(pp,1)=min(Mfis)+((pp/nn)*etendu);
    end
     
    scf(graphNumber);
    for pp=1:nn
        plot(-10,0,'color',couleur(nn-pp+1,nn));
        str(pp,1)=msprintf("%d < X < %d",nInf(pp,1),nSup(pp,1));
    end
    legend(str(1,1),str(2,1),str(3,1),str(4,1),str(5,1),str(6,1),str(7,1),str(8,1),str(9,1),str(10,1),"out_upper_right")
    th=gce()
    th.font_size=2
     
    a=gca();
    a.isoview='on';
    a.data_bounds=[0,yMin;xMax,yMax];
    a.title.text="Circlip Simulation";
    a.title.font_size=5;
    f=gcf();
    f.figure_size=[700,1000];
     
    alpha=-%pi/2:0.01:%pi/2;
     
    plot((DT/2)*cos(alpha),(DT/2)*sin(alpha),'k');
    xstring(12,-12,string(selectedStep),0,1);
     
    for ii=1:99
        pt=[Nhis(ii,1,selectedStep) Nhis(ii,2,selectedStep);...
            Nhis(ii+1,1,selectedStep) Nhis(ii+1,2,selectedStep)];
        for uu=1:nn
            if Mfis(ii,selectedStep)>=nInf(uu,1)&Mfis(ii,selectedStep)<nSup(uu,1) then
                ptColor=couleur(uu,nn);
            end
        end
        plot(pt(:,1),pt(:,2),'color',ptColor);
        e=gce();
        e.children.thickness=2;
    end
     
    endfunction
    Pour une meilleure compréhension, Nhis correpond à l'historique des profil selon le pas de calcul, et Mfis au moments de flexion que je souhaite afficher. Ci joint une image du résultat (partiel j'ai arrêté le programme à 60 pas) de l'affichage souhaité.

    Le problème semble se situer sur la dernière boucle. La fonction s'exécute correctement jusqu'à un moment aléatoire où la fenêtre devient soit blanche ou noir. Je pense que je dois dépasser une limite d'affiche ou un nombre d'éléments.

    Je suis curieux de savoir si quelqu'un aurait une solution à ce problème où si vous l'avez déjà rencontré.

    Merci de votre aide
    LL
    Images attachées Images attachées  

  2. #2
    Candidat au Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    J'ai essayer avec une fonction scatter (qui n'affiche donc plus des bout de droite mais bien des points). Je penserais que ce serait plus léger mais ça ne fonctionne pas du tout
    J'ai des bugs similaires même si ils sont moins fréquents. Aussi ici j'utilise un color map au lieu de ma propre fonction de couleur. Donc je ne pense pas que cela vienne du nombre d'éléments à afficher

    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
    function affichageMoment(selectedStep,tulipe,jonc,Nhis,Mfis)
     
    DT=tulipe.diametreFondGorge+jonc.hauteurFil;
     
    xMax=max(Nhis(:,1,:));
    yMax=max(Nhis(:,2,:));
    yMin=max(Nhis(:,2,:));
     
    etendu=abs(max(Mfis))+abs(min(Mfis));
     
    graphNumber=200+selectedStep
     
    nn=10
     
    nInf=zeros(nn,1)
    nSup=zeros(nn,1)
     
    nInf(1,1)=min(Mfis);
    for pp=2:nn
        nInf(pp,1)=min(Mfis)+(((pp-1)/nn)*etendu);
    end
     
    nSup(nn,1)=max(Mfis);
    for pp=1:nn-1
        nSup(pp,1)=min(Mfis)+((pp/nn)*etendu);
    end
     
    scf(graphNumber);
    f=gcf();
    f.figure_size=[700,1000];
    f.color_map=jetcolormap(nn);
    for pp=1:nn
        //plot(-10,0,'color',couleur(nn-pp+1,nn));
        plot(-10,0,'color',f.color_map(pp,:))
        str(pp,1)=msprintf("%d < X < %d",nInf(pp,1),nSup(pp,1));
    end
    legend(str(1,1),str(2,1),str(3,1),str(4,1),str(5,1),str(6,1),str(7,1),str(8,1),str(9,1),str(10,1),"out_upper_right");
    th=gce();
    th.font_size=2;
     
    a=gca();
    a.isoview='on';
    a.data_bounds=[0,yMin;xMax,yMax];
    a.title.text="Circlip Simulation";
    a.title.font_size=5;
     
    alpha=-%pi/2:0.01:%pi/2;
     
    plot((DT/2)*cos(alpha),(DT/2)*sin(alpha),'k');
    xstring(12,-12,string(selectedStep),0,1);
     
    ptColor(1,1)=nn
    for ii=1:99
        for uu=1:nn
            if Mfis(ii,selectedStep)>=nInf(uu,1)&Mfis(ii,selectedStep)<nSup(uu,1) then
                ptColor(ii+1,1)=nn-uu;
            end
        end
    end
     
    s=20;
     
    scatter(Nhis(:,1,selectedStep),Nhis(:,2,selectedStep),s,ptColor, "fill");
     
    endfunction

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/12/2018, 16h36
  2. La fenêtre de mon application devient blanche lorsque je la déplace
    Par RomDeRick dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/07/2009, 14h48
  3. [Kylix] Problème d'affichage de fenêtres
    Par Progs dans le forum EDI
    Réponses: 1
    Dernier message: 01/01/2005, 02h46
  4. [AWT] Bug d'affichage
    Par deathwing dans le forum Composants
    Réponses: 3
    Dernier message: 17/05/2004, 17h39
  5. [TP]TP7/XP : bug d'affichage
    Par art dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 17/04/2004, 22h20

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