π
<-

Quand Ndless rencontre Bézier ...

C, C++, ASM...

Quand Ndless rencontre Bézier ...

Message non lude matref » 22 Nov 2012, 19:34

Salut les gens !

Je sais pas vraiment pourquoi, mais j'ai eu l'idée de faire un programme permettant de contrôler l'affichage d'une courbe de Bézier. Pourquoi pas. :D

Image

La courbe de Bézier est tracée en fonction de 4 points de contrôle que vous pouvez déplacer en les sélectionnant avec [+] et [-] (le point de contrôle sélectionné devient alors visible et prend la forme d'un carré 3*3) puis en les mouvant avec les flèches.

Je pense que je pourrai tirer un jeu de ça ...
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Dernière édition par matref le 22 Nov 2012, 19:40, édité 1 fois.
Avatar de l’utilisateur
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 25%
 
Messages: 506
Inscription: 11 Déc 2011, 03:08
Localisation: France, Châteaurenard
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prépa MPSI

Re: Quand Ndless rencontre Bézier ...

Message non lude Adriweb » 22 Nov 2012, 19:36

Bravo, ca a l'air très bien fait :)

Le source est dispo bientôt ? C'est toujours intéressant ;)

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 79.9%
 
Messages: 14839
Images: 1131
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Quand Ndless rencontre Bézier ...

Message non lude matref » 22 Nov 2012, 19:45

Franchement, tu trouveras pas grand-chose dedans ... y'a 60 lignes à tout casser et c'est juste une courbe de Bézier avec un plotter fait à la va-vite :D

Code: Tout sélectionner
/* Bezier curves program
Uses the formula for the Bezier curve with 4 control points A to D :

x = Xa * (1 - t)^3 + Xb * 3 * t * (1 - t)^2 + Xc * 3 * t^2 * (1 - t) + Xd * t^3
x = Ya * (1 - t)^3 + Yb * 3 * t * (1 - t)^2 + Yc * 3 * t^2 * (1 - t) + Yd * t^3
*/

#include <os.h>
#include "utils.h"

int main(void) {
   
   char *scrbuf;
   double t = 0.0;
   
   int coord[2], current = 0, i = 0;
   
   double controlPoints[4][2] = {
      {64.0,120.0},
      {128.0,120.0},
      {192.0,120.0},
      {256.0,120.0}
   };
   
   lcd_ingray();
   
   scrbuf = malloc(SCREEN_BYTES_SIZE * sizeof(char));
   if(!scrbuf)
   {
      exit(0);
   }
   
   while (!isKeyPressed(KEY_NSPIRE_ESC))
   {
      clearBuf(scrbuf);
      for (t = -6.28; t < 6.28; t += 0.003)
      {
         coord[0] = controlPoints[0][0] * cube(1 - t) + controlPoints[1][0] * 3 * t * square(1 - t) + controlPoints[2][0] * 3 * square(t) * (1 - t)
               + controlPoints[3][0] * cube(t);
         coord[1] = controlPoints[0][1] * cube(1 - t) + controlPoints[1][1] * 3 * t * square(1 - t) + controlPoints[2][1] * 3 * square(t) * (1 - t)
               + controlPoints[3][1] * cube(t);
         if(coord[0] >= 0 && coord[0] < 320 && coord[1] >= 0 && coord[1] < 240) setPixelBuf(scrbuf, coord[0], coord[1], 0x00);
      }
      
      for(i = 0; i < 9; i++)
      {
         setPixelBuf(scrbuf, (i % 3) + controlPoints[current][0], (int)(i/3) + controlPoints[current][1], 0x00);
      }
      
      refresh(scrbuf);
      controlPoints[current][0] += isKeyPressed(KEY_NSPIRE_RIGHT);
      controlPoints[current][0] -= isKeyPressed(KEY_NSPIRE_LEFT);
      controlPoints[current][1] += isKeyPressed(KEY_NSPIRE_DOWN);
      controlPoints[current][1] -= isKeyPressed(KEY_NSPIRE_UP);
      
      current += current < 3 ? isKeyPressed(KEY_NSPIRE_PLUS) : 0;
      current -= current > 0 ? isKeyPressed(KEY_NSPIRE_MINUS) : 0;
   }
   
   free(scrbuf);
   return 0;
}


Dans util.h c'est les fonctions de base : setPixelBuf, clearBuf, square, cube, refresh.
Avatar de l’utilisateur
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 25%
 
Messages: 506
Inscription: 11 Déc 2011, 03:08
Localisation: France, Châteaurenard
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prépa MPSI

Re: Quand Ndless rencontre Bézier ...

Message non lude mdr1 » 01 Jan 2013, 20:23

C'est toujours sympa d'avoir des exécutables ndless même inutiles, vu que y en a pas souvent. ;)
Image ImageImage
Avatar de l’utilisateur
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 44%
 
Messages: 1083
Images: 12
Inscription: 28 Mar 2011, 00:00
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Je voyage toujours en première.


Retourner vers Native: Ndless, Linux, ...

Qui est en ligne

Utilisateurs parcourant ce forum: ClaudeBot [spider] et 4 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1576 utilisateurs:
>1539 invités
>31 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)