Posté le 07/06/2017 22:39
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 202 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
Citer : Posté le 07/06/2017 22:44 | #
Tu as oublié d'initialiser ta variable a, ce qui est relativement dommage parce que ton cercle ne sera probablement pas complet, voire vide, voire mettra très longtemps à se dessiner. Sinon ça m'a l'air correct, vérifie que tu as bien inclus <math.h> dans ce fichier.
Par ailleurs, cet algorithme naïf ne sera pas toujours très satisfaisant, ou rapide. Si tu es curieux, jette un œil au (classique) algorithme de Bresenham pour quelque chose de plus optimisé.
Citer : Posté le 07/06/2017 22:53 | #
Ai-je besoin d'une bibliothèque particulière pour l'algorithme de Bresenham?
Merci beaucoup d'avoir répondu aussi vite!
Citer : Posté le 07/06/2017 22:55 | #
Il te suffit d'ajouter la ligne :
au début du fichier dans lequel la fonction cercle() est définie. Le SDK fournit une version de <math.h> compatible avec la machine ; tu ne devrais ni en utiliser un autre ni en écrire un toi-même.
L'algorithme de Bresenham n'a besoin que d'opérations arithmétiques basiques, tu peux l'implémenter sans même utiliser <math.h>.
Citer : Posté le 07/06/2017 23:01 | #
Je viens d'essayer le programme proposé dans le wikipedia mais il y a beaucoup trop d'erreur, rien que sur la première ligne de code, "public static List<Point>" qui me mets 4 erreurs pour chaque mots, soit "Undeclared name" ou "Illegal token" pour "static", je n'y comprends pas grands chose, un peu d'aide serait la bienvenue
Citer : Posté le 07/06/2017 23:05 | #
Ouh là, ce n'est pas si simple !
D'abord, on ne peut pas implémenter un algorithme avant de l'avoir compris. Il s'agit d'une méthode théorique : tu es supposé la lire et (grossièrement) comprendre son fonctionnement pour écrire toi-même un programme qui fasse ce qui est demandé.
En l'occurrence le code d'exemple sur la page Wikipédia est du C# (le dièse est important) : c'est un langage certes proche du C (et pas que dans le nom), mais ce n'est pas du C. Aucune chance que ça compile ! À la place, tu devrais écrire ta propre fonction en effectuant les bons calculs. En plus, cette fonction ne trace pas le cercle mais renvoie une liste des points à tracer pour obtenir le cercle... ce qui est assez différent.
Citer : Posté le 07/06/2017 23:14 | #
{
int x,y,p;
x=0;
y=r;
ML_pixel(x0+x,y0-y,ML_BLACK);
p=3-(2*r);
for(x=0;x<=y;x++)
{
if (p<0)
{
p=(p+(4*x)+6);
}
else
{
y=y-1;
p=p+((4*(x-y)+10));
}
ML_pixel(x0+x,y0-y,ML_BLACK);
ML_pixel(x0-x,y0-y,ML_BLACK);
ML_pixel(x0+x,y0+y,ML_BLACK);
ML_pixel(x0-x,y0+y,ML_BLACK);
ML_pixel(x0+y,y0-x,ML_BLACK);
ML_pixel(x0-y,y0-x,ML_BLACK);
ML_pixel(x0+y,y0+x,ML_BLACK);
ML_pixel(x0-y,y0+x,ML_BLACK);
}
}
Ça, ça marcherait mieux?
Nathan Belge Invité
Citer : Posté le 17/06/2017 17:28 | #
Sinon j'ai vu un code sur Wikipédia et il disait d'encoder "public static" mais je n'ai pas trouvé cette option. Y-a-t-il moyen de le faire sur une Casio Graph 35+?
Citer : Posté le 17/06/2017 18:09 | #
public n'est pas un mot-clé en C. Tu as vu un exemple de code sur un autre langage, et il y a très peu de chance que tu puisses en faire quoi que ce soit.
@Pokallan (désolé pour le vide de réponse '-' ), pourquoi ne pas avoir suivi les indications de l'algorithme ? Tu as implémenté, euh... autre chose, manifestement (pas les mêmes formules, pas la même boucle, etc).