1

bonjour
pour faire des zooms j'utillise une homotétie de rapport k et ayant pour centre celui de l'image et cela pour chaques point de l'image d'origine.
Mais ca pose un pb du fait que le nb de point soint égal:
quand k>1 ca fais un nuage de point (on reconnais tout de meme l'image mais c'est comme si elle étais en pointillée)
quand k<1 ca fais un amas de pixels yen trop!

comment faire pour avoir un agrandissement et une réduction nette avec un nompre de points proportionel a la taille?

Sinon, j'ai un autre problème:
pour créer une miniature ou un agrandissement, j'affiche d'abord l'image d'iorigine a gauche et grace a une double boucle for, je récupère les coordonnées de chaques pts pour les afficher au fur et a mesure selon le rapport k a droite.
Je suis donc obigé d'afficher a la fois l'image d'origine qui me sert de matrice et l'image finale.
Comment faire pour afficher que l'image finale?
J'ai pensé a écrire les points dans un écran virtuel, mais ya un hic, si je change d'écran je ne peut pas récuperer avec GetPix les points de l'image d'origine sur l'écran réell...
Quoique je ne sais pas, étant débutant en C et ayant peu manié ce genre de chose, c ptet possible de jongler entre les 2 écrans! smile

Vous me conseillez koi?

Merco d'avance pour vos réponses smile

2

c koi une homotetie? triso

et toi apparemment tu prends un pixel de l'image que tu veux afficher et tu calcules sa position a l'ecran... c'est l'inverse qu'il faut faire.... tu prends un pixel de l'ecran et tu regarde ou il est dans ton image, comme ca t'as ni trous ni pixels en trop...
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

3

Ben ouais, en fait il faut faire comme dit sBibi :
Tu as une image (carrée pour simplifier) et un rapport de réduction/augmentation K pour élargir plus ou moins l'image (un seul pour simplifier, on aurait pu en prendre deux, un pour chaque dimension).
En fait, quand K>1, l'image est réduite et quand K<1 l'image est agrandie.
Tu dois te servir de K pour parcourir l'image : tu incrémentes de K à chaque cycle une variable I et tu regardes si le pixel correspondant à I est noir ou blanc :
On suppose que l'image est un sprite 16x16.
float I,K;
K=taille/taille_finale;
for(I=0;I<taille_finale;I+=K)
{
 if(image[ligne] & (0x8000>>(short)I))
  PutPixel(...);
}
Voilà, je n'ai pas testé, donc je ne peux pas te garantir que mon petit bout de code marche, mais le principe est là.

4

ah ok, donc il faut partir de l'image finale, c'est vrai que c'est mieux!
dsl mais je ne pige pas cette ligne

if(image[ligne] & (0x8000>>(short)I))

c'est quoi image[ligne]? et le (0x8000>>(short)I)?
je ne pige pas aussi ou mène ta boucle...
pour parcourir une image, j'utillise une double boucle for (lignes et colonnes)

tu peut m'expliquer ton code plizz?

Sinon, pour afficher l'image direct sans afficher l'anciene on fais comment?

5

lol...

Alors en admettant que "GetPixOnScreen" est une fonction GetPix qui marche sur un buffer au choix (par exemple le EXT_GETPIX de Extgraph), et que "image_depart" est un buffer sur lequel tu as affiché l'image de départ, tu peux faire ça :
(j'ai pas testé, y'a peut-être une petite erreur)

for(i=0; i<taille_X_voulue; i++)
for(j=0; j<taille_Y_voulue; j++)
 {
 if(GetPixOnScreen(image_depart,i*taille_X_image_depart/taille_X_voulue,j*taille_Y_image_depart/taille_Y_voulue)) SetPixOnScreen(LCD_MEM,i,j);
  }


A chaque pixel de la position d'arrivée tu recherche celui qui lui correspond sur l'image de départ.
Et pour afficher direct, bah là ça marche, puisque l'écran virtuel "image_depart" n'est pas visible.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

swal89 a écrit :
ah ok, donc il faut partir de l'image finale, c'est vrai que c'est mieux!
dsl mais je ne pige pas cette ligne

if(image[ligne] & (0x8000>>(short)I))

c'est quoi image[ligne]? et le (0x8000>>(short)I)?
je ne pige pas aussi ou mène ta boucle...
pour parcourir une image, j'utillise une double boucle for (lignes et colonnes)
tu peut m'expliquer ton code plizz?

Ben le image[ligne], c'est pour sélectionner la ligne voulue de l'image (en supposant que l'image est un sprite au format extgraph (ou tigcclib, si tu préfères).
Et le (0x8000>>(short)I) c'est léquivalent du getpix, sauf que tu ne teste pas sur un sprite affiché à l'écran, mais il peut être n'importe où en mémoire.

7

swal89 a écrit :
bonjour
pour faire des zooms j'utillise une homotétie de rapport k et ayant pour centre celui de l'image et cela pour chaques point de l'image d'origine.
Mais ca pose un pb du fait que le nb de point soint égal:
quand k>1 ca fais un nuage de point (on reconnais tout de meme l'image mais c'est comme si elle étais en pointillée)
quand k<1 ca fais un amas de pixels yen trop!
comment faire pour avoir un agrandissement et une réduction nette avec un nompre de points proportionel a la taille?

Ça a déjà dit, mais pour le dire en le vocabulaire correct: Tu utilises l'homothétie réciproque (qui existe si et seulement si le rapport de l'homothétie d'origine est différent de 0, sinon tu affiches un point et c'est bon smile).
Sinon, j'ai un autre problème:
pour créer une miniature ou un agrandissement, j'affiche d'abord l'image d'iorigine a gauche et grace a une double boucle for, je récupère les coordonnées de chaques pts pour les afficher au fur et a mesure selon le rapport k a droite.
Je suis donc obigé d'afficher a la fois l'image d'origine qui me sert de matrice et l'image finale.
Comment faire pour afficher que l'image finale? J'ai pensé a écrire les points dans un écran virtuel, mais ya un hic, si je change d'écran je ne peut pas récuperer avec GetPix les points de l'image d'origine sur l'écran réell...

http://tigcc.ticalc.org/doc/graph.html#PortSet
sBibi
a écrit : c koi une homotetie?

C'est le terme mathématique pour un zoom régulier.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

merci smile
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

9

ok, merci pour vos réponses...