Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| TRIGONOMETRIE CIRCULAIRE | |
|
+8JL35 Nardo26 sergeauze pascal10000 Jean Claude Jicehel Minibug papydall 12 participants | |
Auteur | Message |
---|
sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Mar 7 Juil 2015 - 14:06 | |
| Les outils sont là; je n'ai plus qu'a m'en servir et sortir mon application. Si j'y parviendrais c'est que j'aurais tout compris | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Mar 7 Juil 2015 - 14:11 | |
| Tu parviendras! Avec un peu (beaucoup) de persévérance tu parviendras! Et puis, tout le monde est là pour t'épauler. Heu! c'est au sens figuré car moi, mes épaules sont assez fragiles. | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Mar 7 Juil 2015 - 20:26 | |
| bonjour a tous je prends en cour de route et j'espère ne pas être hors sujet @ sergeauze tu ne donne pas beaucoup d'indication sur l'usage de la rotation de ton image cela dit et si cela peut t'être utile, j'ai déjà réalisé la rotation d'une image suivant les trois axes de rotation en utilisant les capacités de Panoramic 3D. il suffit de faire un cube et de lui appliquer l'image ! après, rotation , zoom... tout est ouvert. | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Mar 7 Juil 2015 - 20:27 | |
| bonjour a tous je prends en cour de route et j'espère ne pas être hors sujet @ sergeauze tu ne donne pas beaucoup d'indication sur l'usage de la rotation de ton image cela dit et si cela peut t'être utile, j'ai déjà réalisé la rotation d'une image suivant les trois axes de rotation en utilisant les capacités de Panoramic 3D. il suffit de faire un cube et de lui appliquer l'image ! après, rotation , zoom... tout est ouvert. | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Mer 8 Juil 2015 - 12:43 | |
| Salut le but c'est de travailler en 2d je veux me familiariser avec les coordonnées polaires , la trigo, les coordonnées cartésiennes Le prétexte : balayage d'une photo pour la manipuler en rotation autour d'un coin; autour de son centre Pour l’instant je tâtonne et met en pratique la doc fournie par papydall Ce qui est intéressant c'est que de mes erreurs peuvent naitre des choses improbables | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Mer 8 Juil 2015 - 18:51 | |
| Salut veux tu décaler pixel par pixel? il me semble que tu vas trouver le temps long n'hésite pas a demander nous sommes là | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Ven 10 Juil 2015 - 15:32 | |
| salut pas tant que ça! Voila mon essai charger une photo d'un des membres par exemple et la passer au tourniqué - Code:
-
rem xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx rem x Essai SERGEAUZE x rem x x rem x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dim x,y, L,H,R,angle,Rayon, pi,angleplus ,a, vv,rot rot= 50 :' angle de rotation en degres au choix pi = 4* ATN(1)
picture 1 width 1,100 height 1,100 angleplus=0/(180/pi)
color 0,150,50,50 width 0,1000 height 0,500 2d_pen_width 2 wait 20 file_load 1,"C:\Users\babou\Desktop\221-94.jpg" rayon= sqr ((power(100,2 ))+ power(100,2) ) 2d_circle 500,160,rayon for vv= 1 to 10 for y= 1 to 99 step 2 for x=1 to 99 step 2 display 2d_pen_color color_pixel_red(1,x,y),color_pixel_green(1,x,y),color_pixel_blue(1,x,y) 2d_fill_color color_pixel_red(1,x,y),color_pixel_green(1,x,y),color_pixel_blue(1,x,y) if scancode =27 then end ' calcul du rayon rayon =sqr ((power(x,2 )+ power(y,2) ) ) ' calcul de l'angle du rayon angle=atn (y/x) : ' ok ' angle= asin (y/rayon ):'180/pi 0k ? ' angle= ' acos(x/rayon ) :' 0k 2d_circle ( rayon*cos(angle+angleplus))+500,(rayon*sin(angle+angleplus))+ 160,2 ' 2d_point ( rayon*cos(angle+angleplus))+500,(rayon*sin(angle+angleplus))+ 160 next x next y angleplus= angleplus +(rot/(180/pi)) :' angle de depart de la rotation next vv ' end | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Ven 10 Juil 2015 - 17:22 | |
| Salut Sergeauze. Ton essai est réussi, bravo ! Tu as su comment calculer le rayon et l’angle en fonction des coordonnées x et y et l’image a bien tourné. Au début du code, tu déclares - Code:
-
rot= 50 :' angle de rotation en degres au choix Puis - Code:
-
for vv= 1 to 10 Cette ligne sera exécutée 10 fois quelque soit l’angle de rotation choisi au départ. Pour l’esthétique, on doit exécuter la boucle un nombre de fois en rapport avec l’angle de rotation choisi. - Code:
-
for vv = 0 to 360/rot J’ai choisis que la variable VV commence à 0 pour ajouter une fois au nombre de la boucle car le quotient 360/rot peut être non entier. Il est peut-être aussi intéressant d’ajouter tout juste après la commande CLS. J’ai choisi ta photo. Transformée en .jpg, - Code:
-
rem xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx rem x Essai SERGEAUZE x rem x x rem x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dim x,y, L,H,R,angle,Rayon, pi,angleplus ,a, vv,rot rot = 20 :' angle de rotation en degres au choix pi = 4* ATN(1) : angleplus = 0/(180/pi) picture 1 : width 1,100 : height 1,100 color 0,150,50,50 : width 0,1000 : height 0,500 : 2d_pen_width 2 : wait 20 file_load 1,"C:\Users\acer\Desktop\Sergeause.jpg" rayon = sqr((power(100,2))+ power(100,2)): 2d_circle 500,160,rayon
for vv = 0 to 360/rot ' cls for y = 1 to 99 step 2 for x = 1 to 99 step 2 display 2d_pen_color color_pixel_red(1,x,y),color_pixel_green(1,x,y),color_pixel_blue(1,x,y) 2d_fill_color color_pixel_red(1,x,y),color_pixel_green(1,x,y),color_pixel_blue(1,x,y) if scancode = 27 then end rayon = sqr((power(x,2)+ power(y,2))) : ' calcul du rayon angle = atn(y/x) : ' calcul de l'angle du rayon 2d_circle (rayon*cos(angle+angleplus))+500,(rayon*sin(angle+angleplus))+ 160,2 next x next y angleplus = angleplus + (rot/(180/pi)) :' angle de depart de la rotation next vv
end rem ============================================================================
- Spoiler:
| |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Ven 10 Juil 2015 - 18:11 | |
| | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Ven 10 Juil 2015 - 22:55 | |
| Toutes les fonctions trigonométriques directes SIN(a), COS(a) et TAN(a) doivent avoir a en radians.Toutes les fonctions trigonométriques réciproques ASIN(x), ACOS(x) et ATN(x) retournent une valeur en radians.Si tu n’es pas à l’aise avec les radians et que tu veux utiliser les degrés, tu dois convertir les degrés en radians. Le facteur multiplicatif est P = PI/180. Tu déclares au début du programme P = PI/180 et à chaque fois où tu utilises des angles en degrés, tu les multiplies par le facteur P. - Code:
-
rem xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx rem x Essai SERGEAUZE x rem x x rem x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dim x,y, L,H,R,angle,Rayon, pi,angleplus ,a, vv,rot,rotrad,p rot = 90 :' angle de rotation en degres au choix pi = 4* ATN(1) p = pi/180 : ' facteur de transformation de dégrés en radians rotrad = rot*p : ' angle de rotation en radians picture 1 : width 1,100 : height 1,100 color 0,150,50,50 : width 0,1000 : height 0,500 : 2d_pen_width 2 : wait 20 file_load 1,"C:\Users\acer\Desktop\Sergeause.jpg" rayon = sqr((power(100,2))+ power(100,2)): 2d_circle 500,160,rayon
for vv = 0 to 360/rot ' cls for y = 1 to 99 step 2 for x = 1 to 99 step 2 display 2d_pen_color color_pixel_red(1,x,y),color_pixel_green(1,x,y),color_pixel_blue(1,x,y) 2d_fill_color color_pixel_red(1,x,y),color_pixel_green(1,x,y),color_pixel_blue(1,x,y) if scancode = 27 then end rayon = sqr((power(x,2)+ power(y,2))) : ' calcul du rayon angle = atn(y/x) : ' angle est en radians 2d_circle (rayon*cos(angle+angleplus))+500,(rayon*sin(angle+angleplus))+ 160,2 next x next y angleplus = angleplus + rotrad next vv
end rem ============================================================================
Dernière édition par papydall le Sam 11 Juil 2015 - 4:06, édité 3 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Ven 10 Juil 2015 - 23:30 | |
| @sergeauze, c'est peut-être ce que tu cherches, la rotation d'une image d'un angle quelconque autour de son centre (ici une rotation de 60°): - Code:
-
DIM f$,rot%,t1$,wi%,hi%,w2% f$ = "Z:\Goldgate.jpg": ' image de 320x240 rot% = 60 :' angle de rotation en degrés
WIDTH 0,800: HEIGHT 0,500 wi% = 320: hi% = 240 PICTURE 1: WIDTH 1,wi%: HEIGHT 1,hi% w2% = INT(SQR(wi%*wi%+hi%*hi%)): ' diagonale (dimensions maxi du résultat) PICTURE 2: LEFT 2,WIDTH(1): WIDTH 2,w2%: HEIGHT 2,w2%: color 2,200,255,255 ALPHA 3: TOP 3,TOP(1)+HEIGHT(1): FONT_BOLD 3 FILE_LOAD 1,f$ t1$=TIME$: CAPTION 3,"Rotation de "+STR$(rot%)+"°, début: "+t1$ ImgRotate(1,2,rot%) CAPTION 3,"Rotation de "+STR$(rot%)+"°, Début: "+t1$+" Fin: "+TIME$ END
SUB ImgRotate(p1%,p2%,rot%) ' Pivoter l'image du picture p1% d'un angle de rot% degrés, dans le picture p2% DIM_LOCAL ra,wi%,hi%,xc%,yc%,w2%,xc1%,yc1%,x%,y%,x1%,y1% wi% = WIDTH(p1%): hi% = HEIGHT(p1%) ra = rot%*4*ATN(1)/180: ' angle de rotation, en radians xc% = wi%/2: yc% = hi%/2: ' pivot de rotation (centre de l'image) w2% = INT(SQR(wi%*wi%+hi%*hi%)): ' diagonale (dimensions maxi du résultat) xc1% = w2%/2: yc1% = xc1%: ' centre du résultat 2D_TARGET_IS p2% FOR y% = 0 TO hi%-1 FOR x% = 0 TO wi%-1 x1% = COS(ra)*(x%-xc%)-SIN(ra)*(y%-yc%)+xc1% y1% = SIN(ra)*(x%-xc%)+COS(ra)*(y%-yc%)+yc1% 2D_PEN_COLOR COLOR_PIXEL_RED(p1%,x%,y%),COLOR_PIXEL_GREEN(p1%,x%,y%),COLOR_PIXEL_BLUE(p1%,x%,y%) ' 2D_POINT x1%,y1% 2D_CIRCLE x1%,y1%,1 NEXT x% display NEXT y% END_SUB Dans l'exemple ci-dessus, la rotation prend 30 secondes pour une image de 640x480 pixels. On remarque l'apparition d'artefacts bizarres (des pixels blancs), inévitables sans doute, dans le cas de rotations quelconques, différentes de 90, 180 ou 270°. Je remarque également que le display de la fin (exécuté à chaque ligne de pixels) ne change absolument rien à la durée du processus. NB: Intéressant: si je remplace le 2D_POINT qui dessine chaque pixel résultant par un 2D_CIRCLE de rayon 1, ça fait disparaître les artefacts et il n'y a plus de pixels blancs ! et ça n'allonge pas le temps de traitement (si, apparemment environ 10%). J'ai remplacé dans le code ci-dessus. Je ne pense pas qu'on y perde en définition, et le résultat est incomparablement meilleur. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Sam 11 Juil 2015 - 0:00 | |
| Bravo, c'est très chouette. J'ai modifié un tout petit peu pour faciliter le paramétrage et avoir moins de déformations mai du coup c'est aussi un peu moins rapide - Code:
-
rem xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx rem x Essai SERGEAUZE x rem x x rem x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dim x,y, L,H,R,angle,Rayon, pi,angleplus, vv,rot,rotrad,p,CentreX, CentreY rot = 30 :' angle de rotation en degres au choix pi = 4* ATN(1) p = pi/180 : ' facteur de transformation de dégrés en radians rotrad = rot*p : ' angle de rotation en radians L=100 : H = 100 : CentreX = 500 : CentreY = 160 picture 1 : width 1,L : height 1,H color 0,150,50,50 : width 0,2*CentreX : height 0,2.5 * CentreY: 2d_pen_width 1 file_load 1,"papydall.jpg" rayon = sqr((power(L,2))+ power(H,2)): 2d_circle CentreX,CentreY,rayon
for vv = 0 to 360/rot ' cls for y = 1 to H for x = 1 to L display 2d_pen_color color_pixel_red(1,x,y),color_pixel_green(1,x,y),color_pixel_blue(1,x,y) if scancode = 27 then end rayon = sqr((power(x,2)+ power(y,2))) : ' calcul du rayon angle = atn(y/x) : ' angle est en radians 2d_circle (rayon*cos(angle+angleplus))+CentreX,(rayon*sin(angle+angleplus))+ CentreY,2 next x next y angleplus = angleplus + rotrad next vv
end rem ============================================================================ | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Sam 11 Juil 2015 - 0:00 | |
| Merci à vous deux vous me mâchez le travail Pour accélérer le processus ? on peut réduire la taille de l’image N e prendre en compte qu'un pixel sur 2 et utiliser des cercles pour chaque pixel Quand à l’utilité ? la rotation à 360 degrés ! pour la 2d j'ai croisé vos réponses !! 6 secondes pour une image de 90 pixels d par 90 !!
Dernière édition par sergeauze le Sam 11 Juil 2015 - 0:12, édité 1 fois | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Sam 11 Juil 2015 - 0:07 | |
| C'est sûr que si on réduit la taille de l'image on réduit proportionnellement le temps de traitement ! mais ce n'est pas toujours possible, ça dépend de ce qu'on veut comme résultat. Quant à la rotation de 360°... autant ne rien faire ? Et remarque: le cercle de rayon 1 a un diamètre de 2 (eh oui), donc ça suffit pour boucher les trous. | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Sam 11 Juil 2015 - 0:16 | |
| Je voulais dire un degré a la fois le travail étant fait je n'ai plus qu' à chercher un autre sujet merci | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Sam 11 Juil 2015 - 0:33 | |
| - JL35 a écrit:
- Et remarque: le cercle de rayon 1 a un diamètre de 2 (eh oui)
Monsieur de Lapalisse ne pouvait pas dire mieux ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Sam 11 Juil 2015 - 11:01 | |
| Tu peux rigoler mon ami papydall, mais est-ce que en l'occurence, concernant des pixels, c'est aussi évident que ça en a l'air ? Comment fait le système pour tracer un cercle de rayon 1 ? est-ce qu'il trace deux pixels côte à côte ? ou bien un pixel central et un pixel de chaque côté, ce qui ferait un rayon de 1 et un diamètre de 3 (et un total de 5 pixels dessinés) ? Tiens il faut que je fasse un petit programme de zoom pour vérifier ça... NB: vérification faite, le pseudo-cercle fait bien 2 pixels de diamètre. Il y a deux pixels colorés: le pixel centre, et celui immédiatement dessous. Et je remarque à cette occasion que le comptage des pixels ne commence pas à zéro, comme c'est l'usage, mais à 1 ? Si la largeur du picture est de 100, les abscisses vont de 1 à 100 (et non de 0 à 99 comme on pourrait s'y attendre, ça trompe...) - Code:
-
DIM p,r,c,x,y,pp(10,10),rr,gg,bb
PICTURE 500: WIDTH 500,50: HEIGHT 500,50 p = 1 y = 0 FOR r = 0 TO 9 x = 60 FOR c = 0 TO 9 PICTURE p: TOP p,y: LEFT p,x: WIDTH p,10: HEIGHT p,10: COLOR p,190,190,0 pp(r,c) = p p = p + 1 x = x+15 NEXT c y = y+15 NEXT r 2D_TARGET_IS 500 2D_CIRCLE 5,5,1 FOR y = 0 TO 9 FOR x = 0 TO 9 p = pp(y,x) rr=COLOR_PIXEL_RED(500,x,y): IF rr=0 THEN COLOR p,0,0,0 NEXT x NEXT y END | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Sam 11 Juil 2015 - 13:01 | |
| Je confirme JL35, un rayon de 1 Px ne dessine pas un cercle. Ça confirme que le comptage des pixels ne commence pas à zéro. Voir code ci-dessous. - Code:
-
color 0,0,0,0 2d_pen_color 255,255,255 dim x,y,r x=100 : y=100 ' choisir une des 3 lignes ci-dessous ' r=0 r=1 ' r=2 2d_circle x,y,r end - JL35 a écrit:
- Et je remarque à cette occasion que le comptage des pixels ne commence pas à zéro, comme c'est l'usage, mais à 1 ?
Si la largeur du picture est de 100, les abscisses vont de 1 à 100 (et non de 0 à 99 comme on pourrait s'y attendre, ça trompe...) Wouais, mais là c'est des Pixels éléphants, donc ça se voit, mais pour un pixel normal ça passe... A+ | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Sam 11 Juil 2015 - 16:26 | |
| salut à tous de jl 35 "c'est peut-être ce que tu cherches, la rotation d'une image d'un angle quelconque autour de son centre (ici une rotation de 60°)" OUI c'est bien ça" A l’époque j'avais zappé le code Aujourd'hui j'allais réinventer le fil à couper le beurre ! je vais étudier ton code avec attention et le mettre dans mes préférées | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Sam 11 Juil 2015 - 16:51 | |
| Bonjour sergeauze, Avec le même code on peut faire pivoter l'image autour de n'importe quel point, mais à part le centre je ne vois pas trop l'intérêt. Et puis c'est valable pour une image, imagine avec une photo le temps que ça prend (des minutes), alors c'est impensable dans un jeu par exemple, ou alors pour une figure de quelques pixels. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Sam 11 Juil 2015 - 18:40 | |
| Tu peux l'imaginer dans un jeu si tu fais du pré calcul pendant que le programme affiche autre chose et tu utilise après les images pré calculées mais on est d'accord c'est qu'en même beaucoup plus simple de faire autrement | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Dim 12 Juil 2015 - 0:24 | |
| Pourtant ..... Pour les rotations d'images j'utilise un logiciel PhotoFiltre 7 ou une suite bureautique C'est instantané alors qu'avec panoramic pour un format de 120 par 120 pixel s ij faut entre 7 et 10 secondes en 2d La 3d est plus efficace Comment expliquer ces performances qui diffèrent
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Dim 12 Juil 2015 - 8:35 | |
| Cela dépend des moyens techniques mis en oeuvre. Il y a des API pus puissants que d'autres. La pire des méthodes (en termes de performance, j'entends) est la méthode pixel par pixel en Panoramic pur. Tu peux essayer les fonctions de rotation d'image (90°, 180°, -90°) de KGF.dll, pour avoir une comparaison. Mais je n'ai pas fait la rotation par un angle quelconque, à cause de la perte potentielle d'information. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Dim 12 Juil 2015 - 14:25 | |
| Il est bien évident qu'il y a des moyens beaucoup plus rapides et rationnels avec des ressources externes, là le défi était de le faire en pur Panoramic. C'est juste un exercice de style, mais c'est hors de prix en temps. | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE Dim 12 Juil 2015 - 15:11 | |
| Un détail très important, panoramic est très lent: (de 0 à 1048575=1048576 données, soit l'équivalent d'un bout d'écran de 1024*1024 pixels) - Code:
-
dim x,y,result,start_time,end_time,final_time,max_test dll_on "kernel32"
max_test=10
' dim tmp1,tmp2,tmp3 dim rt,vt,bt,rtt,vtt,btt ' print "Test(s) en cours..." for x=1 to max_test ' get_time() : start_time=result for y=0 to 1048575 rem next y get_time() : end_time=result ' print end_time-start_time final_time=final_time+(end_time-start_time) next x cls print print final_time/max_test
END sub get_time() ' mesure en milliseconde, le temps écoulé depuis l'allumage du PC result=dll_call0("GetTickCount") end_sub
résultat, 2325 ms pour compter de 0 à 1048575 Le même code en darkbasic classic(également en langage interprété) résultat, 78.1 ms pour compter de 0 à 1048575 et pour le fun, en darkbasic pro(langage compilé) résultat, 1.5 ms pour compter de 0 à 1048575 Panoramic n'a pas été conçu pour être rapide, et ne peut donc pas traiter de grosse masse de données en temps raisonnable. Dans certains cas, il est important d'optimiser ses sources au maximum si l'on veut une vitesse d'exécution optimale. | |
| | | Contenu sponsorisé
| Sujet: Re: TRIGONOMETRIE CIRCULAIRE | |
| |
| | | | TRIGONOMETRIE CIRCULAIRE | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |