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

Caml Discussion :

[CamL Light] Créer une animation (déplacement) en cercle.


Sujet :

Caml

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [CamL Light] Créer une animation (déplacement) en cercle.
    Bonjour,

    Je suis lycéen en Terminale S et ayant option ISN mon professeur nous à demandé de créer une animation avec CamL Light. J'ai donc pour idée de faire une "montre de gousset", enfin surtout des aiguilles qui tournent mais impossible de trouver comment faire tourner ces aiguilles d'une jolie forme circulaire. Pour le moment j'ai découpé la rotation en quatre quart mais le résultat fait que l'aiguille s'allonge aux quatre côté (12h, 3h, 6h et 9h) et se réduit au milieu de chaque.

    Mon professeur m'a donné comme piste la trigonométrie mais je n'arrive à rien. Même si je n'ai pas le temps de corriger à temps (pour vendredi) j'aurais bien voulu comprendre comment faire, voici ce que j'ai pour le moment :
    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
    #open "graphics";;
    open_graph " 800x600";;
    
    (*fond gris blanc*)
    set_color (rgb 245 245 245);;
    fill_circle 400 250 200;;
    
    (*fond gris clair*)
    set_color (rgb 230 230 230);;
    fill_circle 400 250 195;;
    
    (*fond gris foncé*)
    set_color (rgb 200 200 200);;
    fill_circle 400 250 190;;
    
    (*fond gris clair 2*)
    set_color (rgb 230 230 230);;
    fill_circle 400 250 180;;
    
    (*contours noirs*)
    set_color black;;
    draw_circle 400 250 180;;
    set_color black;;
    draw_circle 400 250 200;;
    
    (*fond principal blanc*)
    set_color white;;
    fill_circle 400 250 150;;
    
    (*contours noirs*)
    set_color black;;
    draw_circle 400 250 150;;
    
    (*heures*)
    moveto 520 241;;
    draw_string "III";;
    
    moveto 393 105;;
    draw_string "VI";;
    
    moveto 258 241;;
    draw_string "IX";;
    
    moveto 389 375;;
    draw_string "XII";;
    
    
    (*bouton 1*)
    set_color black;;
    fill_rect 383 450 34 25;;
    set_color (rgb 230 230 230);;
    fill_rect 384 450 32 24;;
    set_color black;;
    moveto 388 453;;
    lineto 388 470;;
    moveto 392 453;;
    lineto 392 470;;
    moveto 396 453;;
    lineto 396 470;;
    moveto 400 453;;
    lineto 400 470;;
    moveto 404 453;;
    lineto 404 470;;
    moveto 408 453;;
    lineto 408 470;;
    moveto 412 453;;
    lineto 412 470;;
    
    (*aiguille des secondes*)
    set_color red;;
    moveto 400 250;;
    lineto 400 360;;
    
    (*aiguille des heures*)
    set_color black;;
    moveto 400 250;;
    lineto 400 190;;
    
    (*aiguille des minutes*)
    set_color black;;
    moveto 400 250;;
    lineto 500 250;;
    
    (*rond central*)
    set_color (rgb 230 230 230);;
    fill_circle 400 250 10;;
    set_color black;;
    draw_circle 400 250 10;;
    fill_circle 400 250 4;;
    
    (*deplacement aiguille des seconde*)
    let pause () = 
     let res=ref 0 in
     for j = 0 to 550000 do
        res := !res + j*10
     done;;
    (*deplacement XII vers III*)
    for i = 0 to 110 do
    set_color white;
    moveto 400 250;
    lineto (400+(i-1)) (360-(i-1));
    set_color red;
    moveto 400 250;
    lineto (400+i) (360-i);
    set_color (rgb 230 230 230);
    fill_circle 400 250 10;
    set_color black;
    draw_circle 400 250 10;
    fill_circle 400 250 4;
    		pause ();
    done;;
    
    (*deplacement aiguille des secondes*)
    let pause () = 
     let res=ref 0 in
     for b = 0 to 550000 do
        res := !res + b*10
     done;;
    (*deplacement III vers VI*)
    for i = 0 to 110 do
    
    set_color black;
    moveto 400 250;
    lineto 500 250;
    set_color white;
    moveto 400 250;
    lineto (510-(i-1)) (250-(i-1));
    set_color red;
    moveto 400 250;
    lineto (510-i) (250-i);
    set_color (rgb 230 230 230);
    fill_circle 400 250 10;
    set_color black;
    draw_circle 400 250 10;
    fill_circle 400 250 4;
    		pause ();
    done;;
    
    (*deplacement aiguille des secondes*)
    let pause () = 
     let res=ref 0 in
     for j = 0 to 550000 do
        res := !res + j*10
     done;;
    (*deplacement VI vers IX*)
    for i = 0 to 110 do
    set_color black;
    moveto 400 250;
    lineto 400 190;
    set_color white;
    moveto 400 250;
    lineto (400-(i-1)) (140+(i-1));
    set_color red;
    moveto 400 250;
    lineto (400-i) (140+i);
    set_color (rgb 230 230 230);
    fill_circle 400 250 10;
    set_color black;
    draw_circle 400 250 10;
    fill_circle 400 250 4;
    		pause ();
    done;;
    
    (*deplacement aiguille des secondes*)
    let pause () = 
     let res=ref 0 in
     for j = 0 to 550000 do
        res := !res + j*10
     done;;
    (*deplacement IX vers XII*)
    for i = 0 to 110 do
    set_color white;
    moveto 400 250;
    lineto (290+(i-1)) (250+(i-1));
    set_color red;
    moveto 400 250;
    lineto (290+i) (250+i);
    set_color (rgb 230 230 230);
    fill_circle 400 250 10;
    set_color black;
    draw_circle 400 250 10;
    fill_circle 400 250 4;
    		pause ();
    done;;
    J'ai mis en gras l'animation, j'ai donc quatre animations pour le moment. Si une âme charitable aurait l'amabilité de m'aider, à défaut de vouloir me donner directement la réponse, quelques indices ?

    Merci à vous, Jinseih.

  2. #2
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Bonjour,

    Bienvenue sur les forums de developpez.net.

    Trigonométrie
    Si tu considères le cercle unité (de centre O et de rayon 1),
    Et si θ est l'angle formé par l'aiguille de longueur 1 et la demi-droite (x ≥ 0),
    Alors tu sais que :
    • l'abscisse du bout de l'aiguille est égale à cos θ
    • l'ordonnée du bout de l'aiguille est égale à sin θ


    Programmation
    À partir de là, le travail d'affichage consiste principalement :
    • à tenir compte du changement d'origine (translation)
    • à tenir compte de la longueur de l'aiguille (homothétie)
    • à convertir les résultats float en coordonnées int

    Edit: Et bien sûr le sens horaire est opposé au sens trigonométrique.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci de ton accueil et de cette réponse rapide, ce n'était absolument pas clair dans ma tête. Ce qui me pose problème est la conversion des résultats float en int, comment transformer un 6,34 en un entier relatif ??? Notre professeur ne nous a absolument pas parler de cela, il nous a seulement laisser les bases et nous devons nous débrouiller par nous même pour trouver les autres commandes

    Pour ce qui est de l'homothétie, n'apparait-elle pas d'elle-même après l'utilisation des cos et sin ? Ce qui me viens à l'esprit actuellement c'est de définir les x par côté adjacent/hypoténuse et les y par côté opposé/côté adjacent avec l'angle formé par l'aiguille mais bon il doit me manquer plein de facteurs.

    Enfin bref, je vais chercher par là ! Merci encore.

  4. #4
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut Manuel CamL Light

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci je vais lire tout ça, excusez ma fainéantise.

Discussions similaires

  1. [Caml light] Créer un executable
    Par karatekator dans le forum Caml
    Réponses: 33
    Dernier message: 11/03/2013, 19h03
  2. Créer une animation
    Par soldat yul dans le forum Flash
    Réponses: 7
    Dernier message: 16/07/2007, 17h59
  3. Créer une animation
    Par zappa37 dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 13/01/2007, 21h22
  4. [GD] Est-il possible de créer une animation ?
    Par JavaAcro dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 02/03/2006, 16h33
  5. [FLASH MX2004] Aide pour créer une animation
    Par SnakeTales dans le forum Flash
    Réponses: 5
    Dernier message: 04/08/2005, 10h50

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