FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Calculatrice
par joeeee2017 Aujourd'hui à 18:49

» EPP_V01 éditeur pour Panoramic
par Minibug Hier à 21:03

» [RESOLU] Quelle ligne est sélectionnée dans SYNEDIT ?
par Jean Claude Hier à 21:02

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Hier à 15:58

» Planétarium virtuel.
par Pedro Alvarez Hier à 9:28

» Demande pour Jack concernant PanExpress
par Marc Mar 18 Sep 2018 - 23:56

» Petit coucou en passant !
par Minibug Dim 16 Sep 2018 - 15:03

» bug SEVERE fnc+sub : variables globales corrompus
par silverman Dim 16 Sep 2018 - 13:38

» Verrouiller un form en avant plan
par silverman Dim 16 Sep 2018 - 12:50

» Fin de l'aventure.
par Pedro Alvarez Sam 15 Sep 2018 - 18:16

» Demande d'explications Sur File_Write & File_writeln
par Jack Sam 15 Sep 2018 - 17:26

» MEMO avec des possibilités de commande
par Oscaribout Mer 12 Sep 2018 - 1:06

» La théorie du chaos
par jean_debord Mar 11 Sep 2018 - 9:30

» Orbites de l’ensemble de Mandelbrot
par Jean Claude Lun 10 Sep 2018 - 21:08

» Version instantanée V 0.9.29i2 du 4/09/2018
par silverman Mer 5 Sep 2018 - 10:15

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier

Partagez | 
 

 Roues dentées

Aller en bas 
AuteurMessage
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Roues dentées   Sam 7 Juil 2018 - 17:05

Encore une petite sub (je précise: toute simple et sans prétentions !):
Code:
DIM x%,y%,xc%,yc%,dout%,dint%,rout%,rint%,nde%,an%,t%
PICTURE 1: FULL_SPACE 1: 2D_TARGET_IS 1
xc% = 250: yc% = 200
dout% = 300: ' diamètre extérieur
dint% = 100: ' diamètre intérieur
nde% = 30: ' nombre de dents (ajustable par la sub)
Roue_dentee(xc%,yc%,dout%,dint%,nde%)
2D_FLOOD xc%,yc%,255,255,0
END

SUB Roue_dentee(xc%,yc%,dex%,din%,nde%)
  ' Dessin d'un roue dentée avec les paramètres courants (couleur, épaisseur etc.)
  ' Centrée en xc%,yc%, diamètres ext. dex% et int. din%, nombre de dents nbe%
  ' NB le nombre de dents peut être ajusté (en plus) par la sub pour un rebouclage
  '    régulier des dents.
  DIM_LOCAL x%,y%,rex%,rin%,an%,t%
  rex% = dex%/2: rin% = din%/2
  ' ajustage éventuel du nombre de dents pour rebouclage correct
  an% = 360/nde%: WHILE an%<>360/nde%: nde%=nde%+1: an%=360/nde%: END_WHILE
  DEGREES
  2D_POLY_FROM xc%+rex%,yc%
  FOR t% = an% TO 360 STEP an%
      x% = xc%+rin%*COS(t%-an%/2): y% = yc%-rin%*SIN(t%-an%/2)
      2D_POLY_TO x%,y%
      x% = xc%+rex%*COS(t%): y% = yc%-rex%*SIN(t%)
      2D_POLY_TO x%,y%
  NEXT t%
END_SUB
On peut évidemment tester tous les paramètres: couleur, épaisseur, dimensions.
Mon idée de départ c'était des engrenages qui tournent imbriqués l'un dans l'autre, mais j'en reste au B A BA
(même si je me doute bien que vous-mêmes n'en resterez pas babas !)
L'exemple ci-dessus:

Une petite variante (justement concernant les engrenages): on ajoute en paramètre l'angle de départ de la 1ère dent,
pour un emboîtage correct avec un autre engrenage éventuel:
Code:
DIM x%,y%,xc%,yc%,dout%,dint%,rout%,rint%,nde%,an%,t%
DIM da%
PICTURE 1: FULL_SPACE 1: 2D_TARGET_IS 1
2D_PEN_WIDTH 2
xc% = 250: yc% = 200
dout% = 300: ' diamètre extérieur
dint% = 260: ' diamètre intérieur
nde% = 30: ' nombre de dents (ajustable par la sub)
da% = 0: ' angle de départ
Roue_dentee(xc%,yc%,dout%,dint%,nde%,da%)
2D_CIRCLE xc%,yc%,20
xc% = 435
dout% = 100
dint% = 60
nde% = 10
da% = 20: ' angle de départ
Roue_dentee(xc%,yc%,dout%,dint%,nde%,da%)
2D_CIRCLE xc%,yc%,10
END

SUB Roue_dentee(xc%,yc%,dex%,din%,nde%,da%)
  ' Dessin d'un roue dentée avec les paramètres courants (couleur, épaisseur etc.)
  ' Centrée en xc%,yc%, diamètres ext. dex% et int. din%, nombre de dents nbe%
  ' da% = angle de départ (decgrés) de la 1ère dent, à l'extrême droite.
  ' si da% = 0: la dent est horizontale.
  ' NB le nombre de dents peut être ajusté (en plus) par la sub pour un rebouclage
  '    régulier des dents.
  DIM_LOCAL x%,y%,rex%,rin%,an%,t%
  rex% = dex%/2: rin% = din%/2
  ' ajustage éventuel du nombre de dents pour rebouclage correct
  an% = 360/nde%: WHILE an%<>360/nde%: nde%=nde%+1: an%=360/nde%: END_WHILE
  DEGREES
  x% = xc%+rex%*COS(da%): y% = yc%-rex%*SIN(da%): ' pointe de la dent de départ
  2D_POLY_FROM x%,y%
  FOR t% = an%+da% TO 360+da% STEP an%
      x% = xc%+rin%*COS(t%-an%/2): y% = yc%-rin%*SIN(t%-an%/2)
      2D_POLY_TO x%,y%
      x% = xc%+rex%*COS(t%): y% = yc%-rex%*SIN(t%)
      2D_POLY_TO x%,y%
  NEXT t%
END_SUB
C'est peut-être un peu grossier, mais ça peut être une idée de départ.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5990
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Roues dentées   Dim 8 Juil 2018 - 2:38

JL35 a écrit:
C'est peut-être un peu grossier, mais ça peut être une idée de départ.


C’est aussi un peu grossier, mais ça peut être une idée d’arrivée. scratch






Code:

rem ============================================================================
rem                   Roue dentée
rem ============================================================================
dim xc,yc,r
picture 10 : full_space 10 : 2d_target_is 10
xc = width_client(10) / 2 : yc = height_client(10) / 2 : r = 150

Roue_Dentee(xc,yc,r)
end
rem ============================================================================
SUB Roue_Dentee(xc,yc,r)
    dim_local a,p
    degrees
    p = 360/r*10
    2d_pen_width 20 : 2d_circle xc,yc,r
    for a = 0 to 360 step p
        2d_arc xc,yc,r+16,a,a-p/3
    next a
'    2d_flood xc,yc,250,150,50
END_SUB
rem ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Roues dentées   Dim 8 Juil 2018 - 11:05

Pas mal et bien plus succinct comme code (et résultat plus esthétique), mais pas tout à fait le même usage (tu ne choisis pas le nombre de dents).

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc

avatar

Nombre de messages : 865
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: Re: Roues dentées   Dim 8 Juil 2018 - 11:22

Bonjour à tous !

Une autre idée de roue dentée :
Source extrait de mon programme inachevé >> ICI <<



Code:
DIM t,n,p,a,r,y,y1,x,x1,z,o

p=4
n=10
a=1
r=3
z=26
o=150

    FOR t=1 to 360 STEP 0.1
        y=((POWER(SIN(t*n),p)*a+r)/(SQR(POWER(TAN(t),2)+1)))
        x=tan(t)*y
        y1=(y*-1)
        x1=(x*-1)
           2D_POINT z*x+o,z*y+o
           2D_POINT z*x1+o,z*y1+o
    NEXT t
END  

Bonne journée ensoleillée à tous !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Roues dentées   Dim 8 Juil 2018 - 11:36

Ah ouais, pas mal, ça ressemble plus à un engrenage que les miennes, avec les lignes arrondies.
Bravo Marc, tu as bien mérité ton farniente au soleil ce dimanche ! (enfin, j'anticipe un peu...)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc

avatar

Nombre de messages : 865
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: Re: Roues dentées   Dim 8 Juil 2018 - 11:52

Merci !

Quelques précisions :

p= puissance du sinus
n=nombre de dents/2
a=hauteur des dents
r=rayon
z=zoom
o=offset de dessin x et y, que l'on peut séparer par deux valeurs distinctes x et y.

Pour plus de précision, on peut utiliser des nombres à virgule pour affiner le dessin.

Quant à faire tourner tout ça, avec les dents qui s’emboîtent, à mon idée, l'idéal en Panoramic aurait été le moteur 3D avec la fonction 3D_PLANE (voir >>ICI<<) qui permet une vitesse variable et fluidité parfaite... MAIS il manque une couleur de transparence comme en 2D pour pouvoir le faire. Crying or Very sad

Bonne continuation !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5990
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Roues dentées   Dim 8 Juil 2018 - 13:50

Bon, j’apporte ma scie circulaire.
Ça pourrait servir  pour tronçonner vos roues dentées.


Code:

rem ============================================================================
rem          Scie circulaire
rem ============================================================================

picture 10 : full_space 10 : 2d_target_is 10

2d_pen_width 5 : Scie_Circulaire(250,200,150)
' 2d_pen_width 2 : Scie_Circulaire(50,100,30)
' 2d_pen_width 3 : Scie_Circulaire(500,300,50)
end
rem ============================================================================
' xc,yc : centre de la scie circulaire
' r : rayon de le scie circulaire
SUB Scie_Circulaire(xc,yc,r)
    dim_local x,y,rho,t
    degrees
    2d_poly_from xc+r,yc
    for t = 0 to 360
        rho = 1/cos(t-30*int(t/30)) :  ' changer le 30 par 20 pour voir ...
        x = xc + r * rho * cos(t) : y = yc - r * rho * sin(t)
        2d_poly_to x,y
    next t        
END_SUB



Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Roues dentées   Lun 9 Juil 2018 - 17:56

Alors là papydall, je suis scié !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5642
Age : 64
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Roues dentées   Lun 9 Juil 2018 - 18:39

lol! lol! lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jean_debord

avatar

Nombre de messages : 822
Age : 64
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: Roues dentées   Mar 10 Juil 2018 - 9:14

Marc a écrit:

Pour plus de précision, on peut utiliser des nombres à virgule pour affiner le dessin.

Des nombres à virgule pour exprimer les coordonnées des points ? Cela peut se faire avec FLTK ou OpenGL.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
Marc

avatar

Nombre de messages : 865
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: Re: Roues dentées   Mar 10 Juil 2018 - 10:05

Jean_debord a écrit:
Des nombres à virgule pour exprimer les coordonnées des points ? Cela peut se faire avec FLTK ou OpenGL.

Non Jean, bien sûr ce n'est pas pour les coordonnées des points mais pour les variables internes aux formules de calcul de la forme : p,a,r et z.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jean_debord

avatar

Nombre de messages : 822
Age : 64
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: Roues dentées   Mar 10 Juil 2018 - 11:30

OK Smile

Avec OpenGL on définit les coordonnées des points sous forme de nombres réels, ce qui permet d'appliquer diverses transformations (rotations etc.) en évitant au maximum les erreurs d'arrondi. Ce n'est qu'à la fin, au moment d'afficher le graphique, que les coordonnées sont traduites en nombres de pixels. Cela permet des graphiques plus précis.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
mindstorm

avatar

Nombre de messages : 559
Age : 49
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: Roues dentées   Jeu 19 Juil 2018 - 19:25

Bonsoir a tous
@ jean
Est il possible d'utiliser Open GL avec panoramic?
Je n'ai rien vue passer!
merci
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jean_debord

avatar

Nombre de messages : 822
Age : 64
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: Roues dentées   Sam 21 Juil 2018 - 10:40

Je n'ai rien vu passer non plus, et je ne crois pas que ce soit possible en Panoramic "pur". Il faudrait sans doute faire une DLL avec FreeBASIC ou Delphi.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
Contenu sponsorisé




MessageSujet: Re: Roues dentées   

Revenir en haut Aller en bas
 
Roues dentées
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Faire tourner des roues dentées avec xpresso
» Image défilante
» Arrêt en gare suivant type de train
» comment améliorer les contacts
» GetUrl ? [RESOLU]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: