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

Interfaces Graphiques Discussion :

Origami cones et cylindres / Recherche partenaire


Sujet :

Interfaces Graphiques

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Origami cones et cylindres / Recherche partenaire
    Bonjour tout le monde,

    Je travaille depuis un mois sur un GUI Matlab en lien avec les techniques d'Origami relatives aux structures coniques et cylindriques, et je suis actuellement à la recherche d'un partenaire doué avec Matlab et la géométrie spatiale qui serait potentiellement intéressé pour me venir en aide et contribuer à ce projet. Initialement, ce GUI devait me permettre d'obtenir les motifs dépliés ("crease pattern") qui permettent d'obtenir les structures pliables afin de trouver les meilleures paramètres et la meilleure solution pour une antenne conique gonflable spatiale, mais maintenant que j'ai franchit cette étape je souhaite aussi fournir une vue 3D animée de la structure en fonction des paramètres entrés....
    J'ai déjà pas mal avancé mais de nombreux points m'empêchent de continuer...

    Voila, si intéressé, n'hésitez pas à me contacter.

    Cordialement,

    Quelques photos de ce que j'ai déjà réalisé...






  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour

    Intéressant comme sujet.

    J'ai déjà pas mal avancé mais de nombreux points m'empêchent de continuer...
    Peux tu nous dire quels sont ces points? Peut être que certaines personnes se sentiront plus concernés par ton sujet si ils savent exactement à quoi s'attendre.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Problèmes N°1
    Ok merci Gooby.

    Je vais exposé certaines de mes difficultés alors...

    I) Je souhaite créer une fenêtre avec une vue animée en 3D du cône ou cylindre qui se plie et déplie automatiquement et en boucle sans tuer l'ordinateur de l'utilisateur. Voici le code que j'ai pour l'instant qui a plein de défauts, car il est super lent, la structure ne se plie pas comme il faut... Je pense que d'emblée ma méthode ne convient pas...
    Bref, mais même si l'on fait abstraction de tout ça, je n'arrive pas à comprendre pourquoi à chaque incrémentation de la boucle avec pour variable gamma (qui est doit plier ou déplier la structure), les plots qui sont effectués dans l'axes "poly", se retrouve dans un autre axes ("top" ou "iso" qui est une copy de "poly") aprés incrémentation. Il y a aussi un problème hold on/hold off, superposition des plots que je ne souhaite pas...
    Sur cette fenêtre je souhaite aussi ajouter un slider qui arrête l'animation quand on le bouge et vient placer automatiquement la structure à une certaine valeur de gamma, c'est-à-dire à une certaine étape du pliage... Je ne sais pas trop comment mettre cela en œuvre.

    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
    function Tridim0
     
    global alpha beta lat xi eta
     
    %# pixels units
    screensize = get( groot, 'Screensize' );                 
    xSize = screensize(3)/2;
    ySize = screensize(4); 
     
    FigHandle00 = figure('Name','3D View - Cylindrical pattern','NumberTitle','off');
    set(FigHandle00, 'units','pixels', 'Position',[xSize 0 xSize ySize]);
     
    alpha =40; beta = 10;
    lat = 10;
    eta = 6;xi = 10;
     
    long = lat * sind(alpha)/sind(beta);
     
    m = 0; n = 0;
     
        xA = m;
        yA = n;
        xB = m+lat;
        yB = n;
            aAC = tand(alpha);
            bAC = yA - aAC*xA;
            S = roots([aAC^2+1 -2*yB*aAC-2*xB bAC^2+yB^2+xB^2-2*yB*bAC-long^2]);
        xC = m+max(S);
        yC = n+aAC*xC+bAC;
        xD = m+long*cosd(alpha+beta);
        yD = n+long*sind(alpha+beta);
     
    for gamma=1:1:5
        for i=1:1:eta
            for j=1:1:xi
     
            % Parallelogram
     
            x = [m+xA m+xB m+xC m+xD m+xA];
            y = [n+yA n+yB n+yC n+yD n+yA];
            diagx = [m+xA m+xC];
            diagy = [n+yA n+yC];
     
            m = x(2);
            n = y(2);
     
            poly = axes('units', 'normalized','position', [0.34 0.59 0.22 0.22]);
            set(poly,'handlevisibility','off','visible','off');
            degrees = 2*pi/xi;
            theta=(0:xi)/xi;
            R(i) =sqrt(lat^2/(2*(1-cos(degrees))));
            [d1, d2]= size(theta);
            z{1} = ones(1,d2)*0;
            Rot = [cosd(gamma*(i-1)) -sind(gamma*(i-1)) 0 ; sind(gamma*(i-1)) cosd(gamma*(i-1)) 0 ; 0 0 1];
     
            if i ~= 1
                z{i} = ones(1,d2)*(sqrt(long^2-(R(i-1)-R(i)*cosd(gamma))^2-(R(i)*sind(gamma))^2))+z{i-1};     
            end
     
            r=cos(pi/xi)*cos(mod(degrees,2*pi/xi)-pi/xi)*R(i);
     
            if j==1 
                for u=1:1:d2
                    X(i,u) = r*cos(2*pi*theta(u));
                    Y(i,u) = r*sin(2*pi*theta(u));
                    Z(i,u) = z{i}(u);
     
                    Xr(i,u) = X(i,u)*Rot(1,1)+Y(i,u)*Rot(1,2);
                    Yr(i,u) = X(i,u)*Rot(2,1)+Y(i,u)*Rot(2,2);
                    Zr(i,u) = z{i}(u);
                end
                    plot3(Xr,Yr,Zr,'color',[1 1 0]);
                    hold on
            end
            if i~=1
                for u=2:1:d2
                    plot3([Xr(i,u) Xr(i-1,u-1)],[Yr(i,u) Yr(i-1,u-1)],[Zr(i,u) Zr(i-1,u-1)],'--','color',[1 0 0]);
                    hold on
                end
            end
     
            Xp = r*cos(2*pi*theta);
            Yp = r*sin(2*pi*theta);
            Zp = z{i};
     
            Xpr = Xp*Rot(1,1)+Yp*Rot(1,2)+Zp*Rot(1,3);
            Ypr = Xp*Rot(2,1)+Yp*Rot(2,2)+Zp*Rot(2,3);
            Zpr = Xp*Rot(3,1)+Yp*Rot(3,2)+Zp*Rot(3,3);
     
            paul = plot3(Xpr,Ypr,Zpr,'color',[1 1 0]);
     
            hold on;  axis off;  axis equal;  box off;  view(0,0); 
            set(paul,'linewidth',2)
     
                if j == 1
                    u = x(4);
                    v = y(4);
                end
     
            end
            m = u;
            n = v;
        end
     
        pause(0.01);
     
        hc = allchild(gca);
        top = axes('Position',[0 0.5 0.4 0.4]);
        box off; axis equal; axis off;
        copyobj(hc,top);
        view(0,90);
     
        iso = axes('Position',[0.5 0.5 0.6 0.6]);
        box off; axis equal; axis off;
        copyobj(hc,iso);
        view(45,45);
        axes(poly);
     
    end
     
     
    % Create slider
    sld = uicontrol('Style', 'slider',...
        'Min',1,'Max',50,'Value',41,...
        'Position', [400 20 120 20],...
        'Callback', @surfzlim);
    II) Sur cet autre code qui doit afficher le pattern du cône programmé selon une certaine méthode (qui n'est pas bien détaillé dans le papier que je suis, c'est pourquoi le motif obtenu n'est pas encore bon), je souhaite masquer une partie de la figure afficher avec deux disques. Mais ces disques doivent aussi être transparent (non remplit en blanc ou autre) dans le sens où je ne souhaite pas qu'ils masquent le fond d'écran bleu dans un pur souci esthétique. En gros des disques qui cache dans l'axes mais pas la figure... Je ne sais pas si c'est clair comme explication ^^. J'aimerais aussi que le pattern obtenu soit automatiquement centré dans l'axes sans tenir compte des disques invisibles...

    Et je souhaite aussi ajouter un bouton qui permettent de reprendre ce motif et de l'ouvrir dans un pdf en noir et blanc (centré avec optimisation de l'espace... et des marges) sans le fond d'écran bleu cette fois-ci.... J'ai tenté des choses mais pas convaincantes....

    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
     
     
    function mapping6
    global long lat alpha beta eta xi zeta D
     
    [alpha1, alpha2, beta1, beta2]=function3;
     
    %# pixels units
    screensize = get( groot, 'Screensize' );                 
    xSize = screensize(3)/2;
    ySize = screensize(4);
     
    FigHandle6 = figure('Name','Conical pattern 3','NumberTitle','off');
    set(FigHandle6, 'units','pixels', 'Position',[0 0 xSize ySize]);
     
     alpha1 =36; beta1 = 12;
     lat = 10;
     eta = 10;xi = 10;
     D = 2;
     
    long = lat*sind(alpha)/sind(beta);
     
    % Points and angles (angle in radians)
    zeta = 0;
    m=0;n=0;
    u=0;v=0;t=0;k=0;
    rot=0; xmax=0; ymax=0;
     
        xA = m;
        yA = n;
        xB = m+lat;
        yB = n;
        xD = m+long*cosd(alpha1+beta1);
        yD = n+long*sind(alpha1+beta1);
            aAC = tand(alpha1);
            bAC = yA - aAC*xA;
            S = roots([aAC^2+1 -2*yB*aAC-2*xB bAC^2+yB^2+xB^2-2*yB*bAC-long^2]);
        xC1 = m+max(S);
        yC1 = n+aAC*xC1+bAC;
     
        diag = sqrt((yC1-yA)^2+(xC1-xA)^2);
            aDC = (yC1-yD)/(xC1-xD);
     
        alpha2 = alpha1 -atand(aDC) ;
        beta2 = acosd((lat^2-long^2-diag^2)/(-2*long*diag));
     
    % Sample data
    for i=1:1:eta
        for j=1:1:xi
     
        x = [m+xA m+lat m+diag*cosd(alpha1) m+long*cosd(alpha1+beta1) m+xA];
        y = [n+yA n+yB n+diag*sind(alpha1) n+long*sind(alpha1+beta1) n+yA];
     
        diagx = [m+xA m+diag*cosd(alpha1)];
        diagy = [n+yA n+diag*sind(alpha1)];
     
        m = x(1);
        n = y(1);
     
        % Tx matrices
        first = [m n;m n;m n;m n;m n];
        third = [m n;m n];
     
        if j == 1
           if i==1 
                second = [cosd(zeta) -sind(zeta);sind(zeta) cosd(zeta)];
           else if aDE<0
                second = [cosd(zeta+180) -sind(zeta+180);sind(zeta+180) cosd(zeta+180)];
                else
                second = [cosd(zeta+180*k) -sind(zeta+180*k);sind(zeta+180*k) cosd(zeta+180*k)];    
                end
           end
        else
           if i==1  
                second = [cosd(zeta+rot) -sind(zeta+rot);sind(zeta+rot) cosd(zeta+rot)];
           else if aDE<0 && t>1
                second = [cosd(zeta+rot+180) -sind(zeta+rot+180);sind(zeta+rot+180) cosd(zeta+rot+180)];
                else
                second = [cosd(zeta+rot+180*k) -sind(zeta+rot+180*k);sind(zeta+rot+180*k) cosd(zeta+rot+180*k)];
                end
           end
        end
     
        % Use homogenous coords
        mp_quad(:,1) = x';
        mp_quad(:,2) = y';
        mp_diag(:,1) = diagx';
        mp_diag(:,2) = diagy';
     
        % Calculate (note because we premultiply)
        rotated_quad = (second* (mp_quad-first)')+first';
        rotated_diag = (second* (mp_diag-third)')+third';
     
        plot(rotated_quad(1,:), rotated_quad(2,:),'color',[1 1 0],'linewidth',2)
        hold on
        axis equal
        grid off
        axis off
        plot(rotated_diag(1,:), rotated_diag(2,:),'--','color','r')
        title('Transformed crease pattern of conical structure','color','y','FontSize',25,'Fontname','Helvetica','Fontweight','bold')
     
     
        delta = beta2-beta1;
        zeta = j*delta;
     
            if j == 1 && i == 1
                aAB = (y(2)-y(1))/(x(2)-x(1));
            end
            if j == 1
                aDE = (rotated_quad(2,3)-rotated_quad(2,4))/(rotated_quad(1,3)-rotated_quad(1,4));           
                u=rotated_quad(1,4);
                v=rotated_quad(2,4);
                if aDE<0
                   t=t+1;
                else if t>1
                   t=0;
                   k=1;
                    end
                end
            end
     
            m=rotated_quad(1,2);
            n=rotated_quad(2,2);
     
            %Cerlce bottom
            if i == 1 && j == xi
                xF1 = rotated_quad(1,2);
                yF1 = rotated_quad(2,2);
            end
     
            if i == D+1 && j == 1
                xE1 = rotated_quad(1,1);
                yE1 = rotated_quad(2,1);
            end
     
            if i == D && j == floor((xi+1)/2)
                if xi/2 == round(xi/2)
                    xM1 = rotated_quad(1,2);
                    yM1 = rotated_quad(2,2);
                else                
                    xM1 = (rotated_quad(1,1)+rotated_quad(1,2))/2;
                    yM1 = (rotated_quad(2,1)+rotated_quad(2,2))/2;
                end
            end
     
            %Cerlce top
            if i == eta-D+1 && j == xi
                xF2 = rotated_quad(1,2);
                yF2 = rotated_quad(2,2);
            end
     
            if i == eta && j == 1
                xE2 = rotated_quad(1,4);
                yE2 = rotated_quad(2,4);
            end
     
            if i == eta && j == floor((xi+1)/2)
                if xi/2 == round(xi/2)
                    xM2 = rotated_quad(1,2);
                    yM2 = rotated_quad(2,2);
                else                
                    xM2 = (rotated_quad(1,1)+rotated_quad(1,2))/2;
                    yM2 = (rotated_quad(2,1)+rotated_quad(2,2))/2;
                end
            end
     
        end
        m = u;
        n = v;
     
        if rotated_quad(1,2)>xmax
           xmax = rotated_quad(1,2);
        end
        if rotated_quad(1,2)>ymax
           ymax = rotated_quad(2,2);
        end
     
        AB = sqrt((rotated_quad(2,1)-rotated_quad(2,2))^2+(rotated_quad(1,1)-rotated_quad(1,2))^2);
        CD = sqrt((rotated_quad(2,3)-rotated_quad(2,4))^2+(rotated_quad(1,3)-rotated_quad(1,4))^2);
        scale = CD/AB;
        long = long*scale;
        rot=atand((aDE-aAB)/(1+aDE*aAB));
        zeta = rot; 
        lat=sqrt((mp_quad(4,1)-mp_quad(3,1))^2+(mp_quad(4,2)-mp_quad(3,2))^2);
     
        diag = sqrt(lat^2+long^2-2*lat*long*cosd(180-alpha1-beta2));
     
    end
     
    xIE = (xE1+xM1)/2;
    yIE = (yE1+yM1)/2;
    aEM = (yM1-yE1)/(xM1-xE1);
        aEMp = -1/aEM;
        bEMp = yIE-aEMp*xIE;
     
    xIF = (xF1+xM1)/2;
    yIF = (yF1+yM1)/2;
    aMF = (yF1-yM1)/(xF1-xM1);
        aMFp = -1/aMF;
        bMFp = yIF-aMFp*xIF;
     
    xC1 = (bMFp-bEMp)/(aEMp-aMFp);
    yC1 = aMFp*xC1+bMFp;
     
    xIE = (xE2+xM2)/2;
    yIE = (yE2+yM2)/2;
    aEM = (yM2-yE2)/(xM2-xE2);
        aEMp = -1/aEM;
        bEMp = yIE-aEMp*xIE;
     
    xIF = (xF2+xM2)/2;
    yIF = (yF2+yM2)/2;
    aMF = (yF2-yM2)/(xF2-xM2);
        aMFp = -1/aMF;
        bMFp = yIF-aMFp*xIF;
     
    xC2 = (bMFp-bEMp)/(aEMp-aMFp);
    yC2 = aMFp*xC2+bMFp;
     
    R0 = sqrt((yC1-yA)^2+(xC1-xA)^2);
    R1 = sqrt((yC1-yE1)^2+(xC1-xE1)^2);
    R2 = sqrt((yC2-yE2)^2+(xC2-xE2)^2);
     
    aC1E = (yC1-yE1)/(xC1-xE1);
    aC1F = (yC1-yF1)/(xC1-xF1);
    aC2E = (yC2-yE2)/(xC2-xE2);
    aC2F = (yC2-yF2)/(xC2-xF2);
     
    phi1 = atand((-aC1E+aC1F)/(1+aC1E*aC1F));
    phi2 = atand((-aC2E+aC2F)/(1+aC2E*aC2F));
     
    %Cercle bottom
    d = sqrt((xF1-xE1)^2+(yF1-yE1)^2); % Distance between points
    a = atan2(-(xF1-xE1),yF1-yE1); % Perpendicular bisector angle
    b = asin(d/2/R1); % Half arc angle
    c = linspace(a-b,a+b); % Arc angle range
    e = sqrt(R1^2-d^2/4); % Distance, center to midpoint
    x = (xE1+xF1)/2-e*cos(a)+R1*cos(c); % Cartesian coords. of arc
    y = (yE1+yF1)/2-e*sin(a)+R1*sin(c);
    t=linspace(0,2*pi,1000);
    ux=R0*cos(t)+xC1;
    uy=R0*sin(t)+yC1;
    vx=R1*cos(t)+xC1;
    vy=R1*sin(t)+yC1;
    X=[ux(1:end-1);ux(2:end);vx(2:end);vx(1:end-1)];
    Y=[uy(1:end-1);uy(2:end);vy(2:end);vy(1:end-1)];
    plot(x,y,'color',[1 1 0],'linewidth',2);
     
    %Cercle top
    d = sqrt((xF2-xE2)^2+(yF2-yE2)^2); % Distance between points
    a = atan2(-(xF2-xE2),yF2-yE2); % Perpendicular bisector angle
    b = asin(d/2/R2); % Half arc angle
    c = linspace(a-b,a+b); % Arc angle range
    e = sqrt(R2^2-d^2/4); % Distance, center to midpoint
    x = (xE2+xF2)/2-e*cos(a)+R2*cos(c); % Cartesian coords. of arc
    y = (yE2+yF2)/2-e*sin(a)+R2*sin(c);
    THETA=linspace(0,2*pi,1000);
    RHO=ones(1,1000)*R2;
    [X,Y] = pol2cart(THETA,RHO);
    X=X+xC2;
    Y=Y+yC2;
    plot(x,y,'color',[1 1 0],'linewidth',2);
    zoom on
     
    %# figure size printed on paper
    set(FigHandle6, 'PaperUnits','centimeters')
    set(FigHandle6, 'PaperSize',[XA3 YA3])
    set(FigHandle6, 'PaperPosition',[xMargin yMargin xSize ySize])
    set(FigHandle6, 'PaperOrientation','portrait')
     
    axis([xE1 xmax 0 yC1])
     
    % %# export to PDF and open file
    % print -dpdf -r0 Mapping6.pdf
    % winopen Mapping6.pdf
    III) Le problème le plus embêtant. Pour tracer les "crease pattern" des cônes on doit appliquer des fonctions aux angles d'entrées alpha et beta des quadrialtéres (j'ai publié un post pour ce problème : http://www.developpez.net/forums/d15...angle-origami/), mais les angles alpha', beta', alpha'' et beta" retournés et utilisés pour le motif sont incohérents. J'ai essayé de contacter les professeurs japonais qui ont publié les recherches que je suis pour ce GUI, mais pas de réponse pour le moment.... Sans résolution de ce problème tous le reste est obsolète. J'ai trouvé une autre méthode, dans la thèse d'un autre japonais dont le travail est plutôt impressionnant, mais c'est écrit en japonais et je ne m'y suis pas encore penché sérieusement dessus.

    Voila pour le moment. Dans une deuxième étape je souhaiterai ajouter encore d'autres motifs permettant d'obtenir des cônes et cylindres d'une différente façon... et faire en sorte de pouvoir exploiter le "maillage" en ajoutant des propriété mécanique etc... mais bon la j'y suis pas encore et je ne sais pas si j'y serais un jour.

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Movie replay, button et resize
    Bonjour tout le monde,

    Je cherche un moyen de permettre le "Replay" d'une vidéo lors d'un clique sur un bouton. Cette vidéo est enregistrée au préalable à l'aide de getframe. Chaque frame est stoqué dans une structure (comme dans l'aide matlab) mais je ne peux pas passer en global cette variable de type structure dans le Callback de mon bouton, et ainsi permettre la relecture de la vidéo en cliquant sur celui-ci...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    The following error occurred converting from struct to double:
    Error using double
    Conversion to double from struct is not possible.
    Comment est-ce que je peux faire ça ?

    De plus j'aimerais savoir si quelqu'un a une méthode pour afficher cette vidéo dans un format réduit.
    Dans l'aide de "movie" sur Matlab il est spécifié que la vidéo est afficher sans possibilité de réduire ou augmenter sa taille : "movie(h,M,n,fps,loc) specifies loc, a four-element location vector, [x y 0 0], where the lower left corner of the movie frame is anchored (only the first two elements in the vector are used). The location is relative to the lower left corner of the figure or axes specified by handle h and in units of pixels, regardless of the object's Units property."

    Cependant je suis sûr qu'il doit y avoir une astuce...
    J'ai trouvé cette méthode sur internet ( http://stackoverflow.com/questions/1...ions-in-matlab), mais elle ne permet pas de réduire seulement augmenter si je ne me trompe pas... (N étant obligatoirement un scalaire).

    J'ai essayé l'astuce qui consiste à créer une nouvelle fenêtre (de dimension souhaité pour la vidéo), à copyobj(allchild()) la première fenêtre dans cette nouvelle puis à faire getframe... mais ça prend beaucoup trop de temps...

    Si quelqu'un a une idée.

    Merci

Discussions similaires

  1. [Recrutement] Recherche partenaire(s) pour projet professionnel
    Par stratboy61 dans le forum Projets
    Réponses: 11
    Dernier message: 08/02/2011, 09h39
  2. [Partenaire] Recherche partenaire(s) pour projet ambitieux -Marketplace communautaire
    Par MaelSmoboo dans le forum Autres
    Réponses: 0
    Dernier message: 25/09/2009, 19h43
  3. [Partenaire] Recherche partenaire développeur pour création de Start-up !
    Par MaelSmoboo dans le forum Autres
    Réponses: 0
    Dernier message: 29/05/2009, 01h18
  4. Recherche Partenaire//Programmation //..
    Par Jazys dans le forum Projets
    Réponses: 3
    Dernier message: 11/07/2006, 13h18

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