Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Calcul hyperfocale en liste
Julius123 Hors ligne Membre Points: 46 Défis: 0 Message

Calcul hyperfocale en liste

Posté le 03/05/2015 18:36

Salut, je suis en train (d'essayer) de faire sur ma Graph 75 un programme permettant de calculer l'hyperfocale par rapport à l'ouverture choisie par l'utilisateur, et d'afficher les hyperfocales sur l'étendue de focales choisie par l'utilisateur. Au fait, l'hyperfocale est la distance sur laquelle on doit faire la mise au point (je parle de photographie) afin d'avoir toute l'image nette à partir de la moitié de la distance hyperfocale. Celle-ci dépend de la taille du capteur, de l'ouverture et de la focale. Je vous invite à rechercher ce que c'est, si vous êtes curieux, bien évidemment
J'ai joint une capture d'écran de mon téléphone sur lequel j'ai recopié le code.
Le calcul qu'il faut connaître pour l'hyperfocale est le suivant :
Hyperfocale = focale * focale / (1000*0.02*ouverture)
Dans mon code, j'ai appelé l'ouverture D et la focale F.
Si quelqu'un pouvait m'aider à afficher en face des résultats les focales auxquels ceux-ci correspondent, je serais ravi
Merci d'avance pour votre aide, et d'avoir lu mon pavé

PS : La pièce jointe ne fonctionne pas, donc voilà le code :
0→A~Z
"HYPERFOCALE : QUELLE ETENDUE "?→E
"A "?→G
"OUVERTURE "?→D
For E→F To G
F*F/(1000*0.02*D)◢
Next



Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 03/05/2015 18:53 | #


Ce que tu peux faire c'est utilise Locate, qui écrit n'importe où dans l'écran :
Locate [i]x[/i],[i]y[/i],[i]"texte"[/i]
Locate [i]x[/i],[i]y[/i],[i]variable[/i]

Par contre tu ne peux pas utiliser le Disp (◢) parce que comme Locate ne fait pas descendre le curseur de ligne, le "-Disp-" écrase le Locate (à moins que ce dernier n'ait pas été fait en ligne 1, mais je pense que c'est mieux).

Du coup, pour le remplacer, tu peux utiliser une astuce utilisant Getkey pour attendre que l'utilisateur relâche toutes les touches puis appuie sur EXE :
While Getkey:WhileEnd
While Getkey-31:WhileEnd


Locate : [SHIFT][VARS](PRGM)[F6][F4](I/O)[F1](Locate)
Getket : [SHIFT][VARS](PRGM)[F6][F4](I/O)[F2](Getkey)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Julius123 Hors ligne Membre Points: 46 Défis: 0 Message

Citer : Posté le 03/05/2015 19:08 | #


J'avais oublié de préciser que j'avais essayé avec les locate, mais je n'ai pas réussi à mettre les locate et les résultats en même temps
Je ne comprends pas ton système de touches, parce que, en quelle manière cela affichera-t-il les focales correspondantes ?
En fait, j'aimerais que ce soit exactement la même chose que le programme "Table" de la calculatrice (celui pour les fonctions). Il est, je trouve, le meilleur exemple, parce que c'est un tableau, et si je veux une focale pas présente dans celui-ci, il me suffit de l'entrer et d'appuyer sur exe.
Merci pour ta réponse si rapide
Calculatrice : Graph 75
Ordi fonctionne sous Ubuntu
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 03/05/2015 20:00 | #


À ce moment là tu peux utiliser les matrices

0→A~Z
"HYPERFOCALE : QUELLE ETENDUE "?→E
"A "?→G
"OUVERTURE "?→D

{G-E, 2}→Mat A // On créé une matrice de G-E+1 lignes, 2 colonnes

For E→F To G
F→Mat A[E-F+1] // On rentre la focale dans la première colonne
F*F/(1000*0.02*D)→Mat A[E-F+1, 2] // Et dans la seconde l'hyperfocale associée
Next

Mat A◢ // On affiche la matrice


Ajouté le 03/05/2015 à 20:01 :
Ensuite tu n'as plus qu'à parcourir la matrice avec les touches fléchées et appuyer sur EXE pour quitter le programme
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24670 Défis: 170 Message

Citer : Posté le 03/05/2015 20:18 | #


Julius123 a écrit :
En fait, j'aimerais que ce soit exactement la même chose que le programme "Table" de la calculatrice (celui pour les fonctions). Il est, je trouve, le meilleur exemple, parce que c'est un tableau, et si je veux une focale pas présente dans celui-ci, il me suffit de l'entrer et d'appuyer sur exe.

Du coup, la solution de Dark Storm est de loin la plus appropriée. Je vais quand même répondre à titre de complétude.

Julius123 a écrit :
J'avais oublié de préciser que j'avais essayé avec les locate, mais je n'ai pas réussi à mettre les locate et les résultats en même temps

C'est un peu délicat car en règle générale, tout ce qui est affiché directement (entends par là en utilisant les guillemets classiques) efface toute la ligne et déplace le curseur virtuel vers la ligne suivante. Lorsque le curseur virtuel atteint le bas de l'écran, les sept lignes de texte sont remontées pour libérer de la place.
En Locate, c'est différent : afficher du texte ne déplace pas le curseur. Donc imaginons que tu affiches du texte en 1,1 après un ClrText (qui ramène le curseur virtuel sur la première ligne), si tu utilises un Disp, il va écraser toute la ligne sur laquelle se trouve le curseur (à savoir la première ligne) et donc le Locate avec !
Une solution est d'écrire sur une autre ligne, mais c'est un peu contraignant.

Tu aurais pu n'utiliser que des Locate, car on peut spécifier en troisième argument du texte ou une variable, indifféremment.

Julius123 a écrit :
Je ne comprends pas ton système de touches, parce que, en quelle manière cela affichera-t-il les focales correspondantes ?

La partie qui affiche le texte repose sur le Locate, le système de touches que j'ai proposé permet de réaliser le même effet de pause que le Disp sans afficher de message à l'écran.
La fonction Getkey renvoie 0 si aucune touche n'est pressé ou l'id de la première touche détectée sinon. En l'occurrence, l'id de la touche [EXE] est 31.
Donc la boucle suivante :
While Getkey:WhileEnd

va tourner tant que la condition Getkey est validée, ce qui signifie implicitement Getkey≠0. À savoir qu'elle permet de mettre le programme en pause jusqu'à ce que l'utilisateur relâche toutes les touches.
Ensuite :
While Getkey-31:WhileEnd

revient à dire Getkey≠31 puisque la condition implicite est Getkey-31≠0.
Donc cette double attend que l'utilisateur appuie sur [EXE].
Les deux boucles sont nécessaires, sinon l'utilisateur pourrait garder [EXE] pressé et enchaîner les étapes sans rien voir.


Ceci dit, si tu veux un tableau, il faut utiliser les matrices
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fabcvlr Hors ligne Membre Points: 2275 Défis: 41 Message

Citer : Posté le 03/05/2015 21:35 | #


Le - Disp- affiché à l'écran efface souvent les lignes de locate. Il faut insérer un "" avant la ligne qui comporte le locate
.
L'expérience des autres, c'est comme une chandelle que l'on tient allumée dans son dos par une nuit de tempête !
Julius123 Hors ligne Membre Points: 46 Défis: 0 Message

Citer : Posté le 03/05/2015 22:48 | #


Je vous remercie beaucoup de votre aide, et de vos superbes explications (vraiment).
Ton histoire de getkey, Lephenixnoir, ne m'est pas facile à comprendre, mais je me vais renseigner de ce pas
Et, Darkstorm, lorsque je lance le programme que tu m'as si gentiment préparé, la calculatrice annonce une erreur de syntaxe, en plaçant le curseur derrière le A du premier Mat A du programme
Calculatrice : Graph 75
Ordi fonctionne sous Ubuntu
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 03/05/2015 22:56 | #


Oups, au temps pour moi, il faut faire « {..}->Dim Mat A
Avec Dim : http://www.planet-casio.com/Fr/reference_basic_casio/commande_basic.php?fonc=68
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Julius123 Hors ligne Membre Points: 46 Défis: 0 Message

Citer : Posté le 03/05/2015 23:01 | #


Ah ! Merci bien
Je vais voir si cela fonctionne

Dark storm a écrit :

{G-E, 2}→Mat A // On créé une matrice de G-E+1 lignes, 2 colonnes



Dans le commentaire, tu parles d'une matrice de G-E+1 lignes, 2 colonnes, cependant il n'y a pas de +1 dans le code. Est-ce normal ?
Calculatrice : Graph 75
Ordi fonctionne sous Ubuntu
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 03/05/2015 23:20 | #


Non, en effet aussi, j'ai rajouté le +1 car les matrices commencent à 1. Tu peux le rajouter dans le code.

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Julius123 Hors ligne Membre Points: 46 Défis: 0 Message

Citer : Posté le 03/05/2015 23:56 | #


Maintenant, avec cette ligne ressemblant à ceci, il y a une erreur syntaxique entre le 1 et le ] :
F→MatA[E-F+1] (au fait, le -, c'est sur la calto le signe de soustraction, n'est-ce pas ?
Calculatrice : Graph 75
Ordi fonctionne sous Ubuntu
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 04/05/2015 00:35 | #


Oui. Il manque ça : [G-E+1,1] pour indiquer que c'est la première colonne.

Désolé pour toutes ces fautes, j'ai fait ce code assez rapidement
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Julius123 Hors ligne Membre Points: 46 Défis: 0 Message

Citer : Posté le 04/05/2015 10:08 | #


Ça ne fonctionne toujours pas
Avec ce code :
0→A~Z
"HYPERFOCALE : QUELLE ÉTENDUE "?→E
"A "?→G
"OUVERTURE "?→D
{G-E,2}→Dim Mat A
For E→F To G
F→Mat A[G-E+1,1] // Avant, c'était E-F+1, ce changement des lettres est-il normal ?
F*F/(1000*0.02*D)→Mat A[E-F+1,2]
Next
Mat A◢

Calculatrice : Graph 75
Ordi fonctionne sous Ubuntu

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 236 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd