1

rebonjour ^^
cette fois le problème concerne les fonctions gl_cos et gl_sin de genlib

le code suivant ne marche pas sous GTC :
#include <tigcclib.h>
#include <gen.h>

void _main()
{
   const char cos[256] gl_cos;
   const char sin[256] gl_sin;
}


Edit : bon finalement ça donne
#include <tigcclib.h>
#include <gen.h>

void _main()
{
   const char cos[256],gl_cos;
   const char sin[256],gl_sin;
}


ça compile mais après je ne sais pas comment utiliser tout ça ?

d'après la doc de genlib:

Theses tables are precomputed sinus / cosines tables. gl_sin[i] = 128 * sin(2*PI*i/256) gl_cos[i] = 128 * cos(2*PI*i/256) It means that a complete lap is an angle of 256. It is quite different from degrees (360°) or radian (2*PI). But in computer science, it is the best choice.

If you want to calculate B = A * sin(i), you will do in C:

B = (A * gl_sin[i]) >> 7


mais b c'est un char ?
programmeur sur TI ^^

mon blog sur les TI => clic

mon (p'tit) fofo sur les TI => clic

2

Je crois que le vrai problème est le C.
genlib défine des tables directements visibles et utilisables par toi.

Ton programme n'a pas à les définir, mais à les utiliser.
A et B sont des int.
int f (int A, int i)
{
 int B;
 B = (A * gl_sin[i]) >> 7 
 return B;
}

3

#define USE_KERNEL

#include <gen.h>
#include <stdio.h>

int f(int a,int i)
{
  int b;
  b=(a*gl_sin[i])>>7;
  return b;
}

void _main()
{
  int sin=f(10,90);
  printf_xy(0,0,"10*sin(90)=%i",sin);
  ngetchx();
}


pourquoi le programme retourne 7 ?
normalement sin(90)=1 donc 10*sin(90)=10 ?

c'est cette phrase qui me pose problème,

Theses tables are precomputed sinus / cosines tables. gl_sin[i] = 128 * sin(2*PI*i/256) gl_cos[i] = 128 * cos(2*PI*i/256)


=>i est en ?
programmeur sur TI ^^

mon blog sur les TI => clic

mon (p'tit) fofo sur les TI => clic

4

L'unité angulaire est totalement arbitraire. Il existe les radians (un tour complet vaut 2*PI), les degrés (un tour complet vaut 360 degrée), les gradiants (200), et l'unité par genlib (256).

Un tour complet vaut 256, un quart de tour 64.

L'avantage est que l'on peut corriger l'angle rapidement pour qu'il soit entre 0 et 255 avec un simple masque :
 angle = angle & 255;


Au lieu d'utiliser des if.

5