Forum Liberty Basic France

Général » Cone de Révolution Et non pas Connes de Révolutions
Le 03/06/2012 à 08h17

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Ne sachant pas trop où poser ce truc, je le mets là... en espérant que ça va pas gener la circulation. :p
Que fait ce code ?
Il retourne l'image de 180° sans autorisation, et la ratatine dans le sens de la hauteur.
en fait, qu'il fait un peu ce qu'il veut. :heink
Mais comme c'est zouli, il a la vie sauve.
Cassiope... si tu trouve un vieux compresseur dans ton hangar, regonfle donc ce machin, ( en restant dans les limites d'élasticité ) ;)

Code JB :
 
 
NoMainWin
Dim p(3,1)
WindowWidth = 535
WindowHeight = 465
UpperLeftX = Int((DisplayWidth-WindowWidth)/2)
UpperLeftY = Int((DisplayHeight-WindowHeight)/2)
 
 BUTTON #g.calc, "draw", [draw], UL, 460, 50
 textbox #g.en, 460, 80, 50, 25                'entrée angle
 BUTTON #g, "new", [new], UL, 460, 130
Open "Révolution" For Graphics_nsb_nf As #g
#g "TrapClose [quit]"
   #g, "setfocus"
  [new]
   Print #g.en, str$(25)                'angle par défaut
   Print #g,"when leftButtonDown [coord]"
    #g,"down"
    #g,"Fill darkgreen"
        #g,"Color white; BackColor darkgreen"
        Print text(460,120,"Angle")
        Print text(100,420,"Poser des points le long de l'axe")
    dim r(24): dim h(36): dim v(36)
    p=0.9: xc=20: yc=1: pi= 3.1416:x=200
 
    #g, "up": #g, "goto 200 20": #g, "down"  'tracé de l'axe
    for i=20 to 360 step 20
    #g, "goto ";x;" ";i
    next i
 wait
 
 [coord]
    mx = MouseX
    my = MouseY
    #g,"Color red; BackColor red; Place ";mx;" ";my
    #g,"CircleFilled 3"
 
  xc= mx/16: yc= my/24  ' résolution > 25 X 80 (à bisto dé naz )
  r(yc)=26-xc         'stock rayons
  yc=yc+1
  '[autre]   'autre angle ?
 wait
 
 [draw]
    print #g.en, "!contents? var$"   'saisie angle de vue
    an = val(var$)
 
    u=sin((an*pi)/180)
    axe=cos((an*pi)/180)
 
   'visu --------------------
     for w=1 to 24
     rt=8*r(w)  '  8
     yr=200+((12-w)*16*axe)
     gosub [calc]
     next w
     ' goto [autre]
  wait
 
 [calc]
    #g, "Color green ";" BackColor green"
     #g, "down"
    for i =10 TO 360 step 10
      lt= i/10  '  10
      x= 200+(rt* sin((i*pi)/180))
      xp= 200+(rt*sin(((i+10)*pi)/180))
      y= yr+((rt*u)*cos(i*pi/180))*0.9
      yp=yr+((rt*u)*cos((i+10)*pi/180))*0.9
      #g, "place ";x;" ";y
      #g, "goto ";xp;" ";yp
      if w>1 then #g, "goto ";h(lt);" ";v(lt)
      h(lt)=xp: v(lt)=yp
      #g, "flush"
        gosub [paus]
    next i
 return
   ' yr=400-(200+(16*w)-200)
wait
 
    [paus]
        timer 10, [temps]
        wait
        [temps]
        timer 0
    return
 
[quit]
Close #g
 
  Function text(x,y,msg$)
    #g,"Place ";x;" ";y;";|";msg$
  End Function
 
 
____________________
Roro

   
Le 03/06/2012 à 10h33

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Aprés tests avancés, il s'avère que ce code fait trés exactement le contraire de qu'il devrait. :lol
Il suffisait de le savoir..... :d
Utilisation: coté gauche: jantes de voiture toutes marques et objets divers. coté droit: verres à pieds et vases à fleurs.



Edité par Roland Le 03/06/2012 à 13h52
____________________
Roro

   
Le 03/06/2012 à 14h05

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
A peine corrigé :
Code VB :
' http://libertybasic.fr/forum/topic-133+cone-de-revolution.php#m1325

NoMainWin
WindowWidth = 600
WindowHeight = 550
UpperLeftX = Int((DisplayWidth-WindowWidth)/2)
UpperLeftY = Int((DisplayHeight-WindowHeight)/2)
 
 BUTTON  #g.calc, "draw", [draw], UL, 460, 50, 50, 25
 textbox #g.en, 460, 90, 50, 25                'entrée angle
 BUTTON  #g.new, "new", [new], UL, 460, 130, 50, 25
 Open "Révolution" For Graphics_nsb_nf As #g
   #g "TrapClose [quit]"
   #g "setfocus"
   an = 15
  [new]
    #g.en an                'angle par défaut
    #g "down ; Fill darkgreen"
    #g "Color white; BackColor darkgreen"
    #g "when leftButtonDown [coord]"
    Print text(410,108,"Angle")
    Print text(150,WindowHeight-45,"Poser des points sur la hauteur")
    redim r(24) : redim h(36) : redim v(36)
    pi = asn(1)*2 'pi= 3.1416
    xc=20 : yc=1 : x=240
 
    for i=20 to 460 step 20    'tracé de l'axe
        #g "place 240 ";i
        for t = 0 to 30
            if t>5 and t<15 then #g "goto 240 ";i+t
        next
    next i
 wait
 
 [coord]
    mx = MouseX
    my = MouseY
    #g "Color red; BackColor red; Place ";mx;" ";my
    #g "CircleFilled 3"
 
    xc= mx/10: yc= my/24  ' résolution > 25 X 80 (a bista dé naz )
    r(yc)=26-xc         'stock rayons
    yc=yc+(yc<24)
    '[autre]   'autre angle ?
 wait
 
 [draw]
    #g "when leftButtonDown"
    #g.en "!contents? var$"   'saisie angle de vue
    an = val(var$)
 
    u = sin(an*pi/180)
    axe = cos(an*pi/180)
 
   'visu --------------------
     for w=1 to 24
        rt = 8*r(w)  '  8
        yr = 240+(12-w)*16*axe
        gosub [calc]
     next w
    #g "when leftButtonDown [coord]"
  wait
 
 [calc]
    #g "Color green ; BackColor green"
    lt = 0
    for i =10 TO 360 step 10
       lt= lt + 1'i/10  '  10
       x=  240+(rt* sin(i*pi/180))
       y=  yr+rt*u*cos(i*pi/180)*0.9
       xp= 240+(rt*sin((i+10)*pi/180))
       yp= yr+rt*u*cos((i+10)*pi/180)*0.9
       #g "set ";x;" ";y
       #g "goto ";xp;" ";yp
       if w>1 then #g "goto ";h(lt);" ";v(lt)
       h(lt)=xp
       v(lt)=yp
       gosub [paus]
    next i
    #g "flush"
 return
   ' yr=400-(240+(16*w)-200)
'wait

    [paus]
        timer 10, [temps]
        wait
        [temps]
        timer 0
    return
 
[quit]
    Close #g
END
 
  Function text(x,y,msg$)
     #g "Place ";x;" ";y;";|";msg$
  End Function
 


Bien intéressant.

Il y a plein de chose que je ne comprends pas, mais c'est amusant de faire des points un peu partout et de voir ce que ça donne... c'est zooli :heink :top mais ça s'arrête toujours vers 1/3 de la hauteur :(

Il est un peu difficile de voir le rapport entre le placement et la quantité des points et la forme obtenue, mais tu peux sûrement y rémédier ;)

Tu veux bien poster le code original Amstrad par exemple ?

@+



Edité par cassiope01 Le 05/06/2012 à 16h23
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 03/06/2012 à 16h26

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Tu rigole ! vu le temps que j'ai mis à réaliser que la saisie des points se faisait dans une résolution, et le tracé dans une autre, c'est en pensant à "Séquence" et à son inkey$ que ça m'est revenu.
Par contre, pour le reste, c'est le genre de code qu'il vaut mieux en faire un autre que de chercher à comprendre, j'ai meme pas été foutu d'extraire les coefficients du calcul, à etre obligé dans mettre en amont, qui sont annulés lors du calcul.
Le nombre de prog's qui m'ont échappés, et qui courrent dans les bois..un jour on va se faire attaquer.
Celui-là, depuis quinze jours, je l'ai perdu quatre ou cinq fois, alors que je le tenais.
C'est vrai que je suis vraiment bordélique....C'est la Lune...la Lune je te dis.
Te casse pas à vouloir faire tourner les verres à pieds...Y'a 'Blender" qui s'en occupe.
Bon je regarde si tu a trouvé la valve......à+
Ah oui je vais mettre le code Amstrad, il y a la ligne d'entrée de coordonnées où je pense qu'il y a une ambiguité à cause du nom des variables r(yc) c'est probable qu'il y a du recyclage non maitrisé. Tu sais que
ce n'est pas le genre de chose qui m'inquiete. (du moment que ça marche ) c'est la programation à "l'emplatre"... P....n,... .il faut que je m'arrete...Enfin, ça te fait de la lecture. ;) ....à+
____________________
Roro

   
Le 03/06/2012 à 17h18

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Comme je me suis déjà taper de le rentrer dans le simulateur (pour vérifier que ce n'était pas un "mort-né"), et que je ne peux pas le sortir du simul en texte (snapshot hyéroglyphique).
Je te mets les parties adaptées:
Saisie des points:
if inkey ( 1...8..2..0)=0 then xc=xc+-1 ou yc=yc+-1(les flèches pour déplacer le pointeur...en résolution 25 X 80)
Validation (entrée)du point:
if inkey(18)=32 'touche ENTER' then r(yc)=26-xc : yc=yc+1 (c'est là qu'est la magouille)

Validation de l'ensemble des points: Lecture de shift +Enter (bla bla..)>envoie à saisie de l'angle.

La suite est identique à part que j'ai changé en "u" un "p" qui était un coefficient de correction propre au pc (0.9) que j'ai laissé dans l'initialisation. Mais qui dans le prog était codé en dur à deux endroit (que tu peux certainement supprimer sans effets) De toutes façon "u" est fixé à la troisième ligne de [draw], donc ça ne pouvait pas etre "p".
Il y avait un: print "terminé" là où j'ai mis un: ' goto [autre] (changement d'angle/memes données)
Enfin, il y a la dernière ligne, aprés le return:"yr=400-(200+((((.....dont je ne suis pas arrivé à définir l'utilité, et que j'ai mis en: ' '''

A la cinquième ligne de: [coord] il y le passage de la résolution de mon Toshiba >à 25 X 80 ( il y a des chances que celà ne soit pas super, mais j'ai essayé le coeff 8 (600/80) qui me parraissait logique, il en a pas voulu. (out range r( ) )
je t'ai fais grace de tout le baratin dont on était friand en ces temps reculés....Avec moi, tu n'a plus besoin d'acheter le journal...Veinard ! ;)
Ah, il y a le p(3,1) qui est tout en haut en dessous du nomainwin, c'est un copeau qui trainait dans l'atelier, et qui s'est glissé pendant l'emballage (à virer)



Edité par Roland Le 03/06/2012 à 17h29
____________________
Roro

   
Le 03/06/2012 à 18h58

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Un petit ajout: Petit ajout: dessous: yp=yr+((rt*u)cos(((.....il y a:
plot x, y
draw xp, yp
if w>1 then draw h( lt ), v( lt )
h( ) et v( ) qui servent à joindre les cercles entre eux, il me semble ....et là ,y'a vraiment tout.
____________________
Roro

   
Le 03/06/2012 à 19h06

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland:
Comme je me suis déjà taper de le rentrer dans le simulateur ...

Donc je repose ma question :

pourrais-tu poster ce code source que tu t'es tapé à rentrer dans le simulateur ?

tes explications compliquées ne me permettent pas d'essayer l'exercice de traduction vers JB que tu as réussi à faire avec ta connaissance de JB.

@+



Edité par cassiope01 Le 03/06/2012 à 19h06
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 03/06/2012 à 20h53

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Attend, avant écoute ça : tout se passe à la troisième ligne de : 'visu
yr=200+(( 12-w) *16* axe avec 200 tu règle la hauteur, j'ai mis: 150. Au lieu de 16 j'ai mis 26 et c'est Booo!
par contre j'ai allongé la fenetre à: 550
Si tu commence à mettre des points plus bas que le bas de l'axe, ça monte plus haut que le haut de la fenetre
Avec ce que j'ai mis dans les deux derniers posts, il y a absolument tout dans l'ordre:
pose des points> entrée de chaque point >entrée de l'ensemble>angle>calcul, et les plots et les draw. il y a tout
Dans le simul, il y a: print #8 qui envoie la liste dans un fichier, avant ça marchait, depuis, il ya eu changement de pc, réinstall, ext...et ça ne marche plus, j'ai essayé de l'envoyer à "Tiny" (imprimante pdf virtuelle) rien à faire.
Règle les deux variables, le bazard, il va monter jusqu'au plafond
Maintenant tu va m'expliquer pourquoi "redim"...plutot que "dim". sans faire référence à l'aide..je te rappelle qu'elle à pris feu il y a quelque temps déjà.
Je continue de trifouiller le simulateur pour lui faire cracher le code.
En cas d'echec, je t'envoie le manuscrit par la poste. :lol
____________________
Roro

   
Le 03/06/2012 à 22h14

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Bon, le simul ne veux rien savoir. Alors on contourne.
je l'ai mis en html ( c'est la version "non voyant" ) pour pas louper des ligne j'ai fais chevaucher, il y a donc des lignes répétées, elles sont numérotées, ça va aller;
par contre ce n'est pas la version intégrale, il y a le minimum pour que ça fonctionne, et évidemment j'ai testé.
>>>> the lien >>>> ICI.zip .........N'oublie pas les expli' pour les " redim"

Allez, au diable l'avarice voilà le simulateur, La Bete.zip avec une copie de clavier, un condensé de doc (trés condensé), une expli, et le fichier du code. évidemment, préviens quand tu la pris, que je l'enlève. ça va te changer de JB....Sur ! ;)



Edité par Roland Le 03/06/2012 à 23h02
____________________
Roro

   
Le 04/06/2012 à 17h03

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Merci Roland.

Je vais peut-être voir ce que je peux faire pour disposer de plus de choses paramétrables, ou bien je le posterais chez les anglophones pour voir ce qu'ils sauraient en tirer...!?

(je parle du ICI.zip bien sûr, pas de la bête ;) )


@+



Edité par cassiope01 Le 04/06/2012 à 17h04
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 04/06/2012 à 18h03

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Si tu teste "la bete" ( ce dont je doute ) elle envoie une syntax error au chargement du "volume1.sna"
ne pas en tenir compte Run > Enter et roule...heu ..non , plutot...rame !
Je ne suis pas arrivé à voir pourquoi ça inverse le haut et le bas.
Hey ! tu n'a pas répondu pour les "redim". Je croyais avoir trouvé, mais non, le "new" rebranche en amont des "dim's"...donc...No Comprendo por qué :..."redim". :( ;)
____________________
Roro

   
Le 04/06/2012 à 20h37

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
ALERTE ! Il faut corriger xc =mx/16...c'est xc = mx/10 et on retrouve les proportions rayon min/max
Normal ! 200/20 =10




Edité par Roland Le 04/06/2012 à 20h43
____________________
Roro

   
Le 05/06/2012 à 11h37

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
DIM déclare une variable tableau et donc réserve un espace mémoire nécessaire à chaque fois.
REDIM la réinitialise simplement. Apparemment la déclare aussi si ça n'a pas été fait précédament.


-



Edité par cassiope01 Le 05/06/2012 à 11h38
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 05/06/2012 à 13h12

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
J'en conclu que "dim" ne remets pas à zéro le contenu d'un tableau plein.
Hey.. tu a mis cx = mx/10 ? ça remets le rayon dans la juste proportion des points entrés. :miam
Tu a interet à changer le nom: "cy" dont le y indique qu'il s'agit du rayon suivant dans l'axe des y's ;)



Edité par Roland Le 05/06/2012 à 14h04
____________________
Roro

   
Le 05/06/2012 à 19h32

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Quelque peu remanié...

- maintenant on trace les points en déplaçant la souris tout en maintenant appuyé sur le clic gauche.

Code VB :
' http://libertybasic.fr/forum/topic-133+cone-de-revolution.php#m1325

 NoMainWin
 WindowWidth = 600
 WindowHeight = 550
 UpperLeftX = Int((DisplayWidth-WindowWidth)/2)
 UpperLeftY = Int((DisplayHeight-WindowHeight)/2)
 
 BUTTON  #g.calc, "draw", [draw], UL, WindowWidth-70, 50, 50, 25
 textbox #g.en, WindowWidth-70, 90, 50, 25                'entrée angle
 BUTTON  #g.new, "new", [new], UL, WindowWidth-70, 130, 50, 25
 Open "Révolution" For Graphics_nsb_nf As #g
   #g "TrapClose [quit]"
   #g "setfocus"
   dp = 0.9   ' ??
   pxAxe = 260   'coord. en x de l'axe
   pi = asn(1)*2 'pi= 3.1416
   an = 15  'angle de départ
   ny = 24  ' ??
   offset = 13  'écart qu'il y aura entre les points en vertical.

  [new]
    #g.en an     'dernier angle donné
    #g "down ; Fill darkgreen"
    #g "BackColor darkgreen ; Color white"
   ' #g "when leftButtonDown [coord]"
    #g "when leftButtonMove [coord]"  ' quand on laisse le doigt appuyé sur le click gauche.
  ' pas 'print' sinon on écrit dans la MainWin qui n'est pas active.
    aff= text(WindowWidth-120,108,"Angle")
    aff= text(150,WindowHeight-45,"Poser des points sur la hauteur")
    nty = int(WindowHeight/offset)
    redim r(ny) : redim h(36) : redim v(36) :redim yt(nty)
    nty = 1
    for i=20 to 460 step 20    'tracé de l'axe
        #g "place ";pxAxe;" ";i
        for t = 0 to 30
            if t>5 and t<15 then #g "goto ";pxAxe;" ";i+t
        next
    next i
 wait
 
 [coord]
    mx = MouseX
    my = MouseY
    cx= int(mx/10) : cy= int(my/ny)  ' résolution > 25 X 80 (a bista dé naz )
    n = int(my/offset)
    if n<0 then n=0
    if yt(n)=0 then
        #g "BackColor red ; Color red"
        #g "Place ";mx;" ";my;" ; CircleFilled 2"
        yt(n) = 1 : nty = nty + 1
        r(cy)=ny+1-cx         'stock rayons
        cy=cy+(cy<ny)
    end if
 wait
 
 [draw]
   ' #g "when leftButtonDown"
    #g "when leftButtonMove"
    #g.en "!contents? var$"   'saisie angle de vue
    an = val(var$)
    u = sin(an*pi/180)
    axe = cos(an*pi/180)
 
   'visu --------------------
     for w=1 to ny
        rt = 8*r(w)  '  8
        yr = pxAxe+(12-w)*16*axe
        gosub [calc]
     next w
   ' #g "when leftButtonDown [coord]"
    #g "when leftButtonMove [coord]"
  wait
 
 [calc]
    #g "BackColor green ; Color green"
    lt = 0
    for i =10 TO 360 step 10
       lt= lt + 1'i/10  '  10
       x=  pxAxe+(rt* sin(i*pi/180))
       y=  yr+rt*u*cos(i*pi/180)*0.9
       xp= pxAxe+(rt*sin((i+10)*pi/180))
       yp= yr+rt*u*cos((i+10)*pi/180)*0.9
       #g "set ";x;" ";y
       #g "goto ";xp;" ";yp
       if w>1 then #g "goto ";h(lt);" ";v(lt)
       h(lt)=xp
       v(lt)=yp
       call pause 2
    next i
    #g "flush"
 return
 
 sub pause tempo
    timer tempo, [temps]
    wait
    [temps]
    timer 0
 end sub
 
 [quit]
    Close #g
 END
 
  Function text(x,y,msg$)
     #g "Place ";x;" ";y;";|";msg$
  End Function
 


Ce que je ne parviens toujours pas à comprendre, c'est pourquoi le dernier tiers supérieur est toujours SUR l'axe ???

@+



Edité par cassiope01 Le 06/06/2012 à 07h25
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 05/06/2012 à 20h05

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
C'est un axe de symétrie.! ;) Quelle courbe si biscornue a-tu donc tracée pour vouloir que le dernier tiers soit ailleurs que sur l'axe ?? :heink :|
Trés bien ta modif, :top Je vois que tu a gardé la tempo. Figure toi que je n'arrive pas à faire fonctionner le déguggeur en "pas à pas" ( malgrés l'aide ) c'est pourquoi javais mis la tempo... A défaut de "pas à pas " j'avais mis en valse lente. Et finalement, c'est pas mal de voir la figure se construire, plutot qu'elle nous saute à la figure.
Bon je charge ton code, et j'essaie de comprendre ton soucis de tiers. :(
____________________
Roro

   
Le 05/06/2012 à 20h47

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
disons que suivant les points c'est pas forcément un tiers, plutôt 1/5 du haut de l'axe... le truc se cantonne juste à repeindre l'axe en vert ;)
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 06/06/2012 à 00h05

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Tu est sur pour: yr=pxaxe+(.......) ?

Ta modif est trés bien ,mais ça ce serait bien d'avoir les deux possibilités (continue, et point par point) pour les indécis et les méticuleux.



Edité par Roland Le 06/06/2012 à 00h30
____________________
Roro

   
Le 06/06/2012 à 07h38

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
modif cosmétiques :

Code VB :
' http://libertybasic.fr/forum/topic-133+cone-de-revolution.php#m1325

 NoMainWin
 WindowWidth = 600
 WindowHeight = 600
 UpperLeftX = Int((DisplayWidth-WindowWidth)/2)
 UpperLeftY = Int((DisplayHeight-WindowHeight)/2)
 
 BUTTON  #g.calc, "draw", [draw], UL, WindowWidth-70, 50, 50, 25
 textbox #g.en, WindowWidth-70, 90, 50, 25                'entrée angle
 BUTTON  #g.new, "new", [new], UL, WindowWidth-70, 130, 50, 25
 Open "Révolution" For Graphics_nsb_nf As #g
   #g "TrapClose [quit]"
   #g "setfocus"
   dp = 0.9   ' ??
   pxAxe = 260   'coord. en x de l'axe
   pyAxe = 230   'coord. en y de l'axe
   pi = asn(1)*2 'pi= 3.1416
   an = 15  'angle de départ
   ny = 24  ' ??
   offset = 8  'écart qu'il y aura entre les points en vertical.

  [new]
    #g.en an     'dernier angle donné
    #g "down ; Fill darkgreen"
    #g "BackColor darkgreen ; Color lightgray"
    #g "when leftButtonMove [coord]"  ' quand on laisse le doigt appuyé sur le click gauche.
    nty = int(WindowHeight/offset)
    redim r(ny) : redim h(36) : redim v(36) :redim yt(nty)
    nty = 1
    for i=20 to 460 step 20    'tracé de l'axe
        #g "place ";pxAxe;" ";i
        for t = 0 to 30
            if t>5 and t<15 then #g "goto ";pxAxe;" ";i+t
        next
    next i
    #g "BackColor darkgreen ; Color yellow"
  ' pas 'print' sinon on écrit dans la MainWin qui n'est pas active.
    aff= text(WindowWidth-120,108,"Angle")
    aff= text(150,WindowHeight-45,"Poser des points sur la hauteur")
    #g "BackColor darkgreen ; Color darkgreen"
    aff= text(WindowWidth-120,WindowHeight-45,space$(15))
 wait
 
 [coord]
    mx = MouseX
    my = MouseY
    cx= int(mx/10) : cy= int(my/ny)  ' résolution > 25 X 80 (a bista dé naz )
    n = int(my/offset)
    if n<0 then n=0
    if yt(n)=0 then
        #g "BackColor red ; Color red"
        #g "Place ";mx;" ";my;" ; CircleFilled 2"
        yt(n) = 1 : nty = nty + 1
        r(cy)=ny+1-cx         'stock rayons
        cy=cy+(cy<ny)
    end if
 wait
 
 [draw]
    #g "when leftButtonMove"
    #g.en "!contents? var$"   'saisie angle de vue
    an = val(var$)
    u = sin(an*pi/180)
    axe = cos(an*pi/180)
 
   'visu --------------------
     for w=1 to ny
        rt = 8*r(w)  '  8
        yr = pyAxe+(12-w)*16*axe
        gosub [calc]
     next w
    #g "when leftButtonMove [coord]"
    #g "BackColor darkgreen ; Color yellow"
    aff= text(WindowWidth-120,WindowHeight-45,"terminé...")
  wait
 
 [calc]
    #g "BackColor green ; Color green"
    lt = 0
    for i =10 TO 360 step 10
       lt= lt + 1'i/10  '  10
       x=  pxAxe+(rt* sin(i*pi/180))
       y=  yr+rt*u*cos(i*pi/180)*0.9
       xp= pxAxe+(rt*sin((i+10)*pi/180))
       yp= yr+rt*u*cos((i+10)*pi/180)*0.9
       #g "place ";x;" ";y
       #g "goto ";xp;" ";yp
       if w>1 then #g "goto ";h(lt);" ";v(lt)
       h(lt)=xp
       v(lt)=yp
       call pause 2
    next i
    #g "flush"
 return
 
 sub pause tempo
    timer tempo, [temps]
    wait
    [temps]
    timer 0
 end sub
 
 [quit]
    Close #g
 END
 
  Function text(x,y,msg$)
     #g "Place ";x;" ";y;";|";msg$
  End Function
 


Si tu résouds le pb de l'inversion, je pense que ce serait parfait ;)

@+



Edité par cassiope01 Le 06/06/2012 à 18h16
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 06/06/2012 à 07h44

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2471
Comme j'anticipe ta réponse qui va etre: Oui, pourquoi ?
Fais donc la manip suivante:
Ouvre deux éditeurs, (un à gauche, l'autre à droite hi hi)
dans celui de gauche, remplace: pxaxe de la ligne: yr=pxaxe+(.......; par: 150
dans celui de gauche:............ pareil.......... ......... ........ .......... >:250.
Trace une courbe dans chacun, commençant au bas du trait d'axe et finissant en haut du trait d'axe.
....Draw à gauche.....Draw à droite.......Etonnant....Non ?
C'est toujours étonnant de voir un signe "=" entre un "x" et un "y". ;)



Edité par Roland Le 06/06/2012 à 07h58
____________________
Roro

   
Général » Cone de Révolution Et non pas Connes de Révolutions  

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie