Tracer de courbes pendant des calculs
Tracer de courbes pendant des calculs
Bonjour à tous,
Désolé de poser une question que vous jugerez probablement hyper basique (quand je vois les questions posées sur les accès aux ressources système et autres friandises de ce genre).
J'ai acheté ma licence PB en 2005 et je m'en sers régulièrement depuis pour des calculs scientifiques complexes, qui sont souvent itératifs et qui peuvent durer plus d'une heure dans certains cas. PB est facile à programmer pour ce genre de calculs et à debugger. Il est aussi très rapide en exécutuon. Le gros problème pour moi c'est l'affichage des résultats. Je me contente en général de sortir des fichiers texte que j'exploite ensuite directement ou avec Excel.
Quelqefois j'ai besoin de voir des courbes se tracer pendant que les calculs s'exécutent ou des figures se dessiner, et là c'est la galère. En PB version 4.00 j'avais fini par trouver des solutions satisfaisantes.
J'ai eu la mauvaise idée de passer en PB 4.3 Béta et je ne m'en sors plus. On ne peut rien faire sans déclarer des gadgets et sans ouvrir des images avant de dessiner le moindre trait et ces fenêtres sont difficiles à, gérer. C'est extrèmement puissant pour ceux qui font des jeux et qui manipulent du graphique de haut niveau, mais pour tracer des courbes simples les bonnes vieilles fonctions Plot, Line et autres Draw des bons vieux logiciels du passé style TurboBasic de Borland allaient très bien. Malheureusement ils ne tournent plus sous XP.
Encore une fois je suis désolé de vous ennuyer mais je vous remercie d'avance de m'indiquer des Tutos pour tracer des courbes pendant l'exécution de calculs faits par des boucles imbriquées.
Merci.
Désolé de poser une question que vous jugerez probablement hyper basique (quand je vois les questions posées sur les accès aux ressources système et autres friandises de ce genre).
J'ai acheté ma licence PB en 2005 et je m'en sers régulièrement depuis pour des calculs scientifiques complexes, qui sont souvent itératifs et qui peuvent durer plus d'une heure dans certains cas. PB est facile à programmer pour ce genre de calculs et à debugger. Il est aussi très rapide en exécutuon. Le gros problème pour moi c'est l'affichage des résultats. Je me contente en général de sortir des fichiers texte que j'exploite ensuite directement ou avec Excel.
Quelqefois j'ai besoin de voir des courbes se tracer pendant que les calculs s'exécutent ou des figures se dessiner, et là c'est la galère. En PB version 4.00 j'avais fini par trouver des solutions satisfaisantes.
J'ai eu la mauvaise idée de passer en PB 4.3 Béta et je ne m'en sors plus. On ne peut rien faire sans déclarer des gadgets et sans ouvrir des images avant de dessiner le moindre trait et ces fenêtres sont difficiles à, gérer. C'est extrèmement puissant pour ceux qui font des jeux et qui manipulent du graphique de haut niveau, mais pour tracer des courbes simples les bonnes vieilles fonctions Plot, Line et autres Draw des bons vieux logiciels du passé style TurboBasic de Borland allaient très bien. Malheureusement ils ne tournent plus sous XP.
Encore une fois je suis désolé de vous ennuyer mais je vous remercie d'avance de m'indiquer des Tutos pour tracer des courbes pendant l'exécution de calculs faits par des boucles imbriquées.
Merci.
Re: Tracer de courbes pendant des calculs
.....
Dernière modification par Backup le mar. 19/août/2014 12:37, modifié 1 fois.
bonjour
j'avais trouver ca aussi je sais plus où?
si ca peut t'aider?
au revoir
j'avais trouver ca aussi je sais plus où?
si ca peut t'aider?
au revoir
Code : Tout sélectionner
OpenWindow(0,0,0,800,600,"",$CA0001)
InitSprite()
OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)
*points=AllocateMemory(2*4*4)
PokeL(*points,100) ;start
PokeL(*points+4,100)
PokeL(*points+8,300) ;control
PokeL(*points+12,20)
PokeL(*points+16,500) ;control
PokeL(*points+20,580)
PokeL(*points+24,700) ;end
PokeL(*points+28,500)
hdc=StartDrawing(ScreenOutput())
FrontColor(#White)
PolyBezier_(hdc,*points,4)
StopDrawing()
Repeat
Until WaitWindowEvent()=16
Salut kernadec,
Géniale la fonction Polybezier.
Tu l'as trouvée ou ? J'en cherchais une dans PB mais n'en ai jamais trouvée...
J'ai essayé de la mettre dans un DrawingMode mais rien ne s'affiche : je ne dois pas mettre les bons paramètres à la place de ton hdc...
Tu vois de quoi ça peut venir ?
Merci de ton aide : avec PolyBezier, je veux faire des lasers de la mort qui se dirigent sur l'ennemi avec un bel effet de courbure....bref c'est essentiel !!!!
A bientôt
Géniale la fonction Polybezier.
Tu l'as trouvée ou ? J'en cherchais une dans PB mais n'en ai jamais trouvée...
J'ai essayé de la mettre dans un DrawingMode mais rien ne s'affiche : je ne dois pas mettre les bons paramètres à la place de ton hdc...

Tu vois de quoi ça peut venir ?
Merci de ton aide : avec PolyBezier, je veux faire des lasers de la mort qui se dirigent sur l'ennemi avec un bel effet de courbure....bref c'est essentiel !!!!
A bientôt
Code : Tout sélectionner
If StartDrawing(ScreenOutput())
DrawingMode(1)
*points=AllocateMemory(2*4*4)
PokeL(*points,100) ;start
PokeL(*points+4,100)
PokeL(*points+8,300) ;control
PokeL(*points+12,20)
PokeL(*points+16,500) ;control
PokeL(*points+20,580)
PokeL(*points+24,700) ;end
PokeL(*points+28,500)
;hdc=StartDrawing(ScreenOutput())
FrontColor(#White)
PolyBezier_(DrawingMode(1),*points,4) ou PolyBezier_(1,*points,4) ou PolyBezier_(ScreenOutput(),*points,4)
StopDrawing()
Only PureBasic makes it possible
la doc est là
http://msdn.microsoft.com/en-us/library ... S.85).aspx
les fonctions avec un underscore sont des fonctions de l'api , il faut se référer à la doc de l'api.
http://msdn.microsoft.com/en-us/library ... S.85).aspx
les fonctions avec un underscore sont des fonctions de l'api , il faut se référer à la doc de l'api.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Bonjour,
Primo, merci à tous d’avoir répondu à une question aussi basique, et aussi vite.
Secundo, je sais que PureBasic a des fonctionnalités graphiques extrêmement puissantes. Il suffit de regarder le jeu des commandes disponibles et de parcourir le forum. Je suis donc un fan de PureBasic même si je n’en utilise qu’un millionième et j’en parle beaucoup dans mon entourage. J’avais même prévu de faire à Noël une donation à Fantaisie SW pour encourager Fred dans son travail génial.
Par contre j’ai des difficultés avec les fenêtres graphiques, déjà parce que « je viens d’un autre siècle et d’un autre millénaire ». Je faisais déjà de la programmation en 1967, en Fortran. Je me suis remis à la programmation en 2005 pour réaliser les outils informatiques dont j’ai besoin dans mes bricolages en micro-mécanique et en horlogerie dont je suis passionné. Cela débouche sur de la conception et bientôt sur de la commande numérique.
Actuellement j’écris un programme pour définir le profil d’outils de taillage d’engrenage. C’est un tout petit programme par rapport à d’autres que j’ai déjà écrits. Il fait une centaine de ligne mais le dossier d’analyse fonctionnelle fait une quinzaine de pages assez denses.
Il s’agit de réaliser l’intersection informatique (en 2D) d’une crémaillère de référence (définie par la Norme) et d’un disque à tailler. Il en résulte un objet (vectoriel, pas bitmap, en coordonnées polaires) qui correspond à une dent de l’engrenage taillé et un autre objet qui correspond à l’outil qui servira à tailler cette dent. Ce programme est écrit et j’en suis à sa validation par rapport au dossier d’analyse. Voila pourquoi je veux visualiser la progression de l’íntersection.
Ensuite j’écrirai un programme qui à partir de la dent unique reconstituera les engrenages complets et les fera engrener pour vérifier leur fonctionnement, avant de les tailler physiquement
Vous m’avez demandé de dire quel était mon problème. Pour faire simple ce bout de programme a le squelette suivant :
SAISIE DES DONNEES : (en mode console) : nombre de dents, module, angle de pression, déport de denture.
CREATION DES OBJETS DE BASE : Crémaillère de référence et disque ébauche.
REPEAT (Boucle d’intersection des deux objets)
FOR (Boucle sur les vecteurs de la crémaillère)
FOR (Boucle sur les vecteurs du disque qui doit être taillé)
Intersection des objets 2D et calcul des vecteurs de l’objet taillé.
Visualisation des objets pendant l’intersection (c’est cette partie qui merde)
NEXT
NEXT
UNTIL
SORTIE DES FICHIERS TXT : des objets créés, afin de les reprendre ensuite dans d’autres programmes de traitement.
Tout est écrit et fonctionne mais avec des erreurs que j’ai détectées par des visualisations off-line.
Il doit y avoir des erreurs d’écriture dans les équations. Je debuggerais plus vite si je pouvais visualiser on-line. Je n’arrive pas à garder la fenêtre ouverte pendant l’exécution des boucles. Il faut pouvoir dessiner des bouts de lignes entre des phases de calcul.
@+
PS : ces fonctionnalités existent bien sûr dans les logiciels de CAO, mais je ne veux ni les acheter ni les pirater.
Primo, merci à tous d’avoir répondu à une question aussi basique, et aussi vite.
Secundo, je sais que PureBasic a des fonctionnalités graphiques extrêmement puissantes. Il suffit de regarder le jeu des commandes disponibles et de parcourir le forum. Je suis donc un fan de PureBasic même si je n’en utilise qu’un millionième et j’en parle beaucoup dans mon entourage. J’avais même prévu de faire à Noël une donation à Fantaisie SW pour encourager Fred dans son travail génial.
Par contre j’ai des difficultés avec les fenêtres graphiques, déjà parce que « je viens d’un autre siècle et d’un autre millénaire ». Je faisais déjà de la programmation en 1967, en Fortran. Je me suis remis à la programmation en 2005 pour réaliser les outils informatiques dont j’ai besoin dans mes bricolages en micro-mécanique et en horlogerie dont je suis passionné. Cela débouche sur de la conception et bientôt sur de la commande numérique.
Actuellement j’écris un programme pour définir le profil d’outils de taillage d’engrenage. C’est un tout petit programme par rapport à d’autres que j’ai déjà écrits. Il fait une centaine de ligne mais le dossier d’analyse fonctionnelle fait une quinzaine de pages assez denses.
Il s’agit de réaliser l’intersection informatique (en 2D) d’une crémaillère de référence (définie par la Norme) et d’un disque à tailler. Il en résulte un objet (vectoriel, pas bitmap, en coordonnées polaires) qui correspond à une dent de l’engrenage taillé et un autre objet qui correspond à l’outil qui servira à tailler cette dent. Ce programme est écrit et j’en suis à sa validation par rapport au dossier d’analyse. Voila pourquoi je veux visualiser la progression de l’íntersection.
Ensuite j’écrirai un programme qui à partir de la dent unique reconstituera les engrenages complets et les fera engrener pour vérifier leur fonctionnement, avant de les tailler physiquement
Vous m’avez demandé de dire quel était mon problème. Pour faire simple ce bout de programme a le squelette suivant :
SAISIE DES DONNEES : (en mode console) : nombre de dents, module, angle de pression, déport de denture.
CREATION DES OBJETS DE BASE : Crémaillère de référence et disque ébauche.
REPEAT (Boucle d’intersection des deux objets)
FOR (Boucle sur les vecteurs de la crémaillère)
FOR (Boucle sur les vecteurs du disque qui doit être taillé)
Intersection des objets 2D et calcul des vecteurs de l’objet taillé.
Visualisation des objets pendant l’intersection (c’est cette partie qui merde)
NEXT
NEXT
UNTIL
SORTIE DES FICHIERS TXT : des objets créés, afin de les reprendre ensuite dans d’autres programmes de traitement.
Tout est écrit et fonctionne mais avec des erreurs que j’ai détectées par des visualisations off-line.
Il doit y avoir des erreurs d’écriture dans les équations. Je debuggerais plus vite si je pouvais visualiser on-line. Je n’arrive pas à garder la fenêtre ouverte pendant l’exécution des boucles. Il faut pouvoir dessiner des bouts de lignes entre des phases de calcul.
@+
PS : ces fonctionnalités existent bien sûr dans les logiciels de CAO, mais je ne veux ni les acheter ni les pirater.
Bonjour Guellil,
Interressant la simulation d'engrenage.
J'ai fait un tour rapide sur la toile et j'ai trouvé ça :
http://www.mathcurve.com/courbes2d/engr ... nage.shtml
A bientôt
Interressant la simulation d'engrenage.
J'ai fait un tour rapide sur la toile et j'ai trouvé ça :
http://www.mathcurve.com/courbes2d/engr ... nage.shtml
A bientôt
Only PureBasic makes it possible
Ok Comtois, merci ça marche : je n'avais encore jamais testé les API sous PureBasic et je ne savais pas que cette fonction en était un...la doc est là
http://msdn.microsoft.com/en-us/library ... S.85).aspx
les fonctions avec un underscore sont des fonctions de l'api , il faut se référer à la doc de l'api.
Merci Dobro pour tes exemples !
ça élargit encore plus le champ du possible...
Bon, ce soir ma douce et belle épouse mange au resto avec ses copines, je couche les enfants avant 20h30 et soirée PureBasic !!!!
Only PureBasic makes it possible
bonjour
pour rendre a césar : l'auteur est " Derek "
j'ai retrouver ou j'avais obtenu ce code en effectuant une recherche PolyBezier_ sur le site anglais
mais il a d'autres exemples avec cette recherche PolyBezier_
http://www.purebasic.fr/english/viewtop ... polybezier
au revoir
pour rendre a césar : l'auteur est " Derek "
j'ai retrouver ou j'avais obtenu ce code en effectuant une recherche PolyBezier_ sur le site anglais
mais il a d'autres exemples avec cette recherche PolyBezier_
http://www.purebasic.fr/english/viewtop ... polybezier
au revoir
GUELLIL> C'est très intéressant tout ça! Je suis sûr à 100% que l'on peut résoudre ce problème. J'imagine que tu ne dois pas avoir très envie de montrer ton code, sans doute pour des raisons de confidentialité ou d'autres plus personnelles. Cependant, tu pourrais l'envoyer (en partie) à l'un d'entre nous, en message privé, afin que l'on jette un œil. Notre cher modérateur, moi-même ou d'autres pourrions alors, sans trop de risque pour toi, déterminer la cause exacte de ce qui ne fonctionne pas et te répondre précisément. Il y a de trop nombreuses sources d'erreur pour que nous puissions deviner d'une façon générale ce qui ne va pas. En plus, vu que tu travailles en vectoriel, nous pourrions te suggérer certaines choses, comme par exemple l'utilisation de GDI+ qui fait des miracles, ou d'autres astuces qui sont moins connues.
A part ça, figure-toi que je devrai tantôt travailler sur un programme écrit à l'origine en Fortran et tes compétences pourraient vraiment m'être utiles! D'autant que ça a été écrit par un mathématicien polonais
A part ça, figure-toi que je devrai tantôt travailler sur un programme écrit à l'origine en Fortran et tes compétences pourraient vraiment m'être utiles! D'autant que ça a été écrit par un mathématicien polonais

Ca y est. J'ai déplacé l'ouverture de la fenêtre en-dessous de la deuxième boucle For Next, juste au dessus du Until de la boucle repeat.
J'ai droit à un flash de la fenêtre pendant tous les cycles de le boucle Repeat (c'est naze et fatiguant pour les yeux mais cela m'a permis de trouver l'erreur). Une simple erreur bête de frappe qui avait modifié la coordonnée d'un segment de la crémaillère et cet "allien" venait massacrer le profil de le dent taillée.
Tout marche merveilleusement. Je vais voir comment je peux demander au programme d'enregistrer une image de la roue en cours de taille et une autre à la fin de la taille et je vous les posterai.
Je n'ai pas encore analysé les codes que vous avez postés, mais je suis sûr que j'y trouverai des instructions qui me permettront de progresser.
Je vous en remercie donc.
@+
J'ai droit à un flash de la fenêtre pendant tous les cycles de le boucle Repeat (c'est naze et fatiguant pour les yeux mais cela m'a permis de trouver l'erreur). Une simple erreur bête de frappe qui avait modifié la coordonnée d'un segment de la crémaillère et cet "allien" venait massacrer le profil de le dent taillée.
Tout marche merveilleusement. Je vais voir comment je peux demander au programme d'enregistrer une image de la roue en cours de taille et une autre à la fin de la taille et je vous les posterai.
Je n'ai pas encore analysé les codes que vous avez postés, mais je suis sûr que j'y trouverai des instructions qui me permettront de progresser.
Je vous en remercie donc.
@+
Pour afficher toutes sortes de courbes dans le style d'Excel, il y a aussi la possibilité d'utiliser RMCHART.GUELLIL a écrit :Je me contente en général de sortir des fichiers texte que j'exploite ensuite directement ou avec Excel.
Flype avait fait un wrapper : http://www.purebasic.fr/french/viewtopic.php?t=5075
