π
<-

Quand Ndless rencontre Bézier ...

C, C++, ASM...

Quand Ndless rencontre Bézier ...

Unread postby 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 ...
You do not have the required permissions to view the files attached to this post.
Last edited by matref on 22 Nov 2012, 19:40, edited 1 time in total.
User avatar
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 25%
 
Posts: 506
Joined: 11 Dec 2011, 03:08
Location: France, Châteaurenard
Gender: Male
Calculator(s):
MyCalcs profile
Class: Prépa MPSI

Re: Quand Ndless rencontre Bézier ...

Unread postby 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
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.7%
 
Posts: 14820
Images: 1131
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Quand Ndless rencontre Bézier ...

Unread postby 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: Select all
/* 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.
User avatar
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 25%
 
Posts: 506
Joined: 11 Dec 2011, 03:08
Location: France, Châteaurenard
Gender: Male
Calculator(s):
MyCalcs profile
Class: Prépa MPSI

Re: Quand Ndless rencontre Bézier ...

Unread postby 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
User avatar
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 44%
 
Posts: 1083
Images: 12
Joined: 28 Mar 2011, 00:00
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Je voyage toujours en première.


Return to Native: Ndless, Linux, ...

Who is online

Users browsing this forum: ClaudeBot [spider] and 4 guests

-
Search
-
Social TI-Planet
-
Featured topics
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
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1494 utilisateurs:
>1480 invités
>8 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)