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 |
|
|
| Logiciel de dessin (esquissage) en 8 lignes seulement!! | |
| | |
Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Mer 15 Fév 2012 - 23:41 | |
| Moi de même, bonne nuit ! | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| | | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Jeu 16 Fév 2012 - 0:00 | |
| une dernière chose JL35 sans abuser de ta gentillesse, le point A c'est xa,ya et le point B c'est xb,yb et le point F c'est xd,yd? | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Jeu 16 Fév 2012 - 3:34 | |
| baaaa... non ! Je dirais à 1ere vue : le point F c'est xf,yf | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Jeu 16 Fév 2012 - 10:10 | |
| Bonjour JL35 J'ai essayé de mettre en pratique ce que tu as fait, mais alors là, je m'embrouille complètement. Rien ne marche. Je ne sais plus à quelles coordonnées correspondent tel ou tel point! Et ça m'énerve, car je crois que je vais laisser tomber ce problème. Bon, je me calme, et j'ai refais un petit shéma, et je vais tacher de bien reposer mon problème: Les points D (xd,yd) et F (xf,yf) sont connus; la hauteur du rectangle HA est connue. Sachant que la longueur du rectangle est la différence entre les points D et F et que F a un angle "k" par rapport au point D, il faut calculer les coordonnées des 4 points entourés soit A, B, C et E, la longueur du rectangle et son angle d'inclinaison. Je te remercie d'avance , et je comprendrais si tu laisses tomber, car j'abuse de ta gentillesse là! Bon faut que j'aille en course, je verrais cet après-midi et si j'y arrive pas je laisse tout choir! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Jeu 16 Fév 2012 - 10:38 | |
| Je crois que tu peux trouver en simplifiant un peu en nommant M, le milieu de HA dont tu peux connaitre les coordonnées. Après, tu as le triangle rectangle ADM, tu connais les coordonnées de D et de M, tu n'as plus qu'à trouver celle de A, en connaisa=sant les angles et les longueur AD et DM, ca devient un problème simple. Il faut faire pareil pour les 3 autres coins ... Enfin, c'est la première idée qu'il me vient par la tête et un problème peut m'échapper, mais bon, je ne suis pas un matheux ... | |
| | | lodchjo
Nombre de messages : 162 Age : 53 Localisation : Anvers Date d'inscription : 26/12/2011
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Jeu 16 Fév 2012 - 11:25 | |
| Je pense que le plus simple c'est de le faire pivoter sur le point A, non? Sinon, plus logique serait de la faite pivoter sur le point toute au milieu du rectangle, comme ça, son point central restera surplace, mais je crois que sa complique le math bcp. (J'ai pas encore essayé.) Pour le faire tourner, j'ai vu qu'on a déjà ce qu'il faut. J'imagine que ce serait peut-etre pas mal d'utiliser les touches 'G' & 'D' (key_down_code) pour le faire tourner a Gauche, resp. a Droite. (Dommage que le 'D' se trouve a Gauche de la touche 'G' ) C'est pour cela que j'ai utilisé les touches flêche gauche et flêche droite pour le faire pivoter. - Code:
-
dim x0,y0,xb,yb,xc,yc,xd,yd,lg,ha,a,pi label trn pi = 4*atn(1) picture 1: full_space 1 x0= 300: y0= 220 lg = 200: ha = 100 2d_target_is 1 on_key_down 0,trn xb = x0 + lg*COS(a): yb = y0 - lg*SIN(a) xd = x0 + ha*SIN(a): yd = y0 + ha*COS(a) xc = xd + lg*COS(a): yc = yd - lg*SIN(a) 2D_LINE x0,y0,xb,yb: 2d_poly_to xc,yc: 2d_poly_to xd,yd: 2d_poly_to x0,y0 ' rotation de a radians autour du point x0,y0 end trn: 2d_clear if key_down_code = 37 then a=a+3.14/360 if key_down_code = 39 then a=a-3.14/360 xb = x0 + lg*COS(a): yb = y0 - lg*SIN(a) xd = x0 + ha*SIN(a): yd = y0 + ha*COS(a) xc = xd + lg*COS(a): yc = yd - lg*SIN(a) 2D_LINE x0,y0,xb,yb: 2d_poly_to xc,yc: 2d_poly_to xd,yd: 2d_poly_to x0,y0 return
J'espère que ça aide? | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Jeu 16 Fév 2012 - 13:51 | |
| Ben justement la rotation autour du point A c'est facile, mais il veut tourner autour du point D...
@bignono j'arrive seulement maintenant, mais rassure-toi, il n'y a pas d'abus ni de problème... (enfin si, un petit à résoudre !) Si je regarde ton dernier schéma, on tourne bien autour du point D, c'est ça ? sinon on est bien d'accord pour les dénominations des coordonnées xa, ya etc. Minute, je reprends tout, c'est un peu mélangé. | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Jeu 16 Fév 2012 - 14:00 | |
| bonjour JL35, Oui, il faut prendre l'axe de rotation D, il me faut la longueur du rectangle et l'angle en degré de son inclinaison avec les coordonnées des 4 points A,B,C,E! merci d'avance! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Jeu 16 Fév 2012 - 14:31 | |
| Bonjour bignono Voilà ce que ça donne, sauf erreur (c'est théorique). J'ai repris les lettres de ton dernier schéma: - Code:
-
' Constantes: ' ha = hauteur du rectangle (base de départ) ' xd, yd: coordonnées du point D: point de rotation du rectangle, fixe ' xf, yf: coordonnées du point F d'arrivée: centre du côté opposé pi = 4 * ATN(1) ' ----------------- ' Demi hauteur (pour simplifier les formules): dh = ha/2
' Longueur finale du rectangle: lg = SQR(POWER(xf-xd, 2) + POWER(yd-yf, 2))
' Angle de rotation k: k = ATN((yd-yf)/(xf-xd)) ad = k * 180/pi: ' angle en degrés
' Nouvelles coordonnées des sommets du rectangle xa = xd - dh * SIN(k): ' point A ya = yd - dh * COS(k) xe = xd + dh * SIN(k): ' point E ye = yd + dh * COS(k) xc = xe + lg * COS(k): ' point C yc = ye - lg * SIN(k) xb = xa + lg * COS(k): ' point B yb = ya - lg * SIN(k) dis-moi ce que tu en penses PS Ci-dessous, petite vérification pratique: - Code:
-
DIM xa,ya,xb,yb,xc,yc,xd,yd,xe,ye,xf,yf DIM pi,ha,dh,lg,k,ad
PICTURE 1: full_space 1 xd = 100: yd = 200: ha = 150: xf = 400: yf = 150
' Constantes: ' ha = hauteur du rectangle (base de départ) ' xd, yd: coordonnées du point D: point de rotation du rectangle, fixe ' xf, yf: coordonnées du point F d'arrivée: centre du côté opposé pi = 4 * ATN(1) ' ----------------- ' Demi hauteur (pour simplifier les formules): dh = ha/2 ' Longueur finale du rectangle: lg = SQR(POWER(xf-xd, 2) + POWER(yd-yf, 2))
' Angle de rotation k: k = ATN((yd-yf)/(xf-xd)) ad = k * 180/pi: ' angle en degrés
' Nouvelles coordonnées des sommets du rectangle xa = xd - dh * SIN(k): ' point A ya = yd - dh * COS(k) xe = xd + dh * SIN(k): ' point E ye = yd + dh * COS(k) xc = xe + lg * COS(k): ' point C yc = ye - lg * SIN(k) xb = xa + lg * COS(k): ' point B yb = ya - lg * SIN(k)
2D_TARGET_IS 1: PRINT_TARGET_IS 1: FONT_BOLD 1 2D_LINE xd,yd,xf,yf: ' ligne milieu 2D_LINE xa,ya,xe,ye: 2D_POLY_TO xc,yc: 2D_POLY_TO xb,yb: 2D_POLY_TO xa,ya PRINT_LOCATE xa,ya-15: PRINT "A" PRINT_LOCATE xb,yb-15: PRINT "B" PRINT_LOCATE xe,ye+5: PRINT "E" PRINT_LOCATE xc,yc+5: PRINT "C" PRINT_LOCATE xd-10,yd-5: PRINT "D" PRINT_LOCATE xf+5,yf-5: PRINT "F" PRINT_LOCATE xe,ye+30: PRINT "Longueur du rectangle= " + STR$(INT(lg))+" pixels." PRINT_LOCATE xe,ye+46: PRINT "Angle de rotation= " + STR$(INT(ad*100)/100) + " degrés." END | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Jeu 16 Fév 2012 - 15:36 | |
| Ah ben voilà ce qu'il me fallait! Merci bien JL35. Bon le seul petit sousi maintenant c'est quand xf est égal à xd il y a erreur, mais ça avec un test on peut l'éviter et quand xf est inférieur à xd. Merci encore, je me débrouille avec ça maintenant. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Jeu 16 Fév 2012 - 15:44 | |
| Pas de quoi bignono, évidemment il doit y avoir des cas particuliers à tester, c'est l'expérience qui te les mettra en évidence ! bon courage à toi ! | |
| | | Invité Invité
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 13:44 | |
| Bonjour: 8 lignes, c'est quand même beaucoup pour un logiciel de dessin, surtout 8 lignes qui deviennent 23. Le voici en 3 lignes: - Spoiler:
- Code:
-
dim x0,y0,xb,yb,xc,yc,xd,yd,lg,ha,a,pi :label trn :pi = 4*atn(1):picture 1: full_space 1:x0= 300: y0= 220 :lg = 200: ha = 100:2d_target_is 1:on_key_down 0,trn : xb = x0 + lg*COS(a): yb = y0 - lg*SIN(a): xd = x0 + ha*SIN(a): yd = y0 + ha*COS(a): xc = xd + lg*COS(a): yc = yd - lg*SIN(a): 2D_LINE x0,y0,xb,yb: 2d_poly_to xc,yc: 2d_poly_to xd,yd: 2d_poly_to x0,y0 :end:trn: 2d_clear: if key_down_code = 37 then a=a+3.14/360 :else: if key_down_code = 39 then a=a-3.14/360 xb = x0 + lg*COS(a): yb = y0 - lg*SIN(a): xd = x0 + ha*SIN(a): yd = y0 + ha*COS(a): xc = xd + lg*COS(a): yc = yd - lg*SIN(a) : 2D_LINE x0,y0,xb,yb: 2d_poly_to xc,yc: 2d_poly_to xd,yd: 2d_poly_to x0,y0:return |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 14:23 | |
| Tu aurais pu essayer en 1 ligne ? comme ça, après, le record sera difficile à battre ! | |
| | | Invité Invité
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 15:28 | |
| Une ligne, tu exagères! Déjà qu'il y a un END, et une étiquette. Comme vous le voyiez, le 'End' ne bloque pas la ligne. J'y ai mis une étiquette à côté. Une étiquette peut être mis à la suite d'une instruction, mais ne supporte rien d'autre. Y compris un commentaire. Quant aux testes misent sur la même ligne, ce n'est valable que si les ceux-ci ne sont pas à vérifier l'un après l'autre. Dans le cas présent cela marche. Maintenant j'ai repris je crois l'ancien dernier code. peut-être vu qu'il n'y a pas d'événement, et seulement l'affichage d'un rectangle, peut-être qu'une seule ligne suffit. On bannit le END qui je pense ne sert pas. |
| | | Invité Invité
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 15:38 | |
| Deux lignes! Qui dit mieux? - Code:
-
xd = x0 + ha*SIN(a): yd = y0 + ha*COS(a): xc = xd + lg*COS(a): yc = yd - lg*SIN(a): 2D_LINE x0,y0,xb,yb: 2d_poly_to xc,yc: 2d_poly_to xd,yd: 2d_poly_to x0,y0 : 2d_clear: if key_down_code = 37 then a=a+3.14/360 :else: if key_down_code = 39 then a=a-3.14/360 xb = x0 + lg*COS(a): yb = y0 - lg*SIN(a): xd = x0 + ha*SIN(a): yd = y0 + ha*COS(a): xc = xd + lg*COS(a): yc = yd - lg*SIN(a) : 2D_LINE x0,y0,xb,yb: 2d_poly_to xc,yc: 2d_poly_to xd,yd: 2d_poly_to x0,y0
Ce n'est pas mon code, mais une reprise de ce qui est publié. |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 16:11 | |
| J'aime bien les défis!! En 1 ligne seulement! - Code:
-
dim xd,yd,xf,yf:picture 1:width 1,500:height 1,500:while scancode<>27:repeat:xd=mouse_x_position(1):yd=mouse_y_position(1):until (mouse_left_down(1)=1 and mouse_left_up(1)=0):while mouse_left_up(1)=0:xf=mouse_x_position(1):yf=mouse_y_position(1):2d_line xd,yd,xf,yf:xd=xf:yd=yf:end_while:end_while:terminate pour sortir du programme, appuyez sur esc et cliquez sur le dessin! Panoramiquement votre. | |
| | | Invité Invité
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 16:29 | |
| Bravo! Devant tant d'entousiasme, finalement je m'incline! - Code:
-
end Le plus cours! une seule instruction! C'est simplement pour dire que ne je ne suis plus dans la course |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 17:01 | |
| Bravo bignono, je disais ça pour plaisanter, mais tu l'as fait ! Chapeau, je m'incline ! A propos, j'ai toujours des problèmes avec le test des boutons de la souris. Dans ton programme, à la ligne 1 ( ), pourquoi faire: - Code:
-
until (mouse_left_down(1)=1 and mouse_left_up(1)=0) et non pas seulement: - Code:
-
until mouse_left_down(1)=1 il me semble que le 2ème test est superflu, si le bouton est bas, il n'est pas haut ? | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 17:20 | |
| Oui c'est superflu, tu peux le retirer. C'est parce que cette partie de code est extraite du programme sur lequel je travaille en ce moment, et dans mon programme le double test n'est pas superflu, il est obligé sinon il faut que je recommence 2 fois la même opération pour avoir accès à la fonction désirée. Voili voilu! A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 17:29 | |
| C'est vrai que le comportement de ce test est parfois un peu bizarre... En fait, dans ton petit programme, c'est curieux, mais le 2d_target n'est pas sur 1, et en fait on dessine partout sur le form 0, même en dehors des dimensions du picture, et le mouse_position(1) donne la position même si la souris est en dehors du picture (pour le voir il faut donner une couleur au Form 0, pour que le picture se différencie bien). Par contre, si on met 2d_target_is 1, alors ça se met à clignoter de manière insupportable pendant le dessin. En fait, à mon avis, dans ton programme rien n'est dessiné sur le picture 1, le dessin se fait sur le Form 0 | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 17:46 | |
| Oui je vois! regarde mes 2 programmes suivants en 1 ligne: Le premier avec 2d_target_is 1 provoque le scintillement!! Le second sans 2d_target_is 1 et basé uniquement sur le form 0 pas de scintillements! Après enlève dans le premier programme le 2d_target_is 1 et compare!!! - Code:
-
dim xd,yd,xf,yf:color 0,200,20,150:picture 1:width 1,500:height 1,500:2d_target_is 1:while scancode<>27:repeat:xd=mouse_x_position(1):yd=mouse_y_position(1):until (mouse_left_down(1)=1 and mouse_left_up(1)=0):while mouse_left_up(1)=0:xf=mouse_x_position(1):yf=mouse_y_position(1):2d_line xd,yd,xf,yf:xd=xf:yd=yf:end_while:end_while:terminate - Code:
-
dim xd,yd,xf,yf:color 0,200,200,150:while scancode<>27:repeat:xd=mouse_x_position(0):yd=mouse_y_position(0):until (mouse_left_down(0)=1 and mouse_left_up(0)=0):while mouse_left_up(0)=0:xf=mouse_x_position(0):yf=mouse_y_position(0):2d_line xd,yd,xf,yf:xd=xf:yd=yf:end_while:end_while:terminate Tu as parfaitement compris le fonctionnement de ce programme, mais c'est le résultat qui compte, n'est-ce pas? Il faut souvent contourner les problèmes pour avoir des solutions! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 17:56 | |
| - Citation :
- Il faut souvent contourner les problèmes pour avoir des solutions!
va dire ça à exdragono... mais je suis bien d'accord avec toi qu'il faut souvent bricoler pour avoir le résultat, sinon ça ne serait pas amusant. D'ailleurs si on rajoute le test de savoir si la souris a bougé ou non, ça scintille déjà beaucoup moins. Mais bon, en une ligne... Tu as vu qu'on peut maintenant copier un picture dans le clipboard (clipboard_copy n), c'est bien pratique pour récupérer le résultat dans un autre logiciel. | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 18:14 | |
| Oui mais contourner les problèmes, parfois il y a une limite! Donc faut pas trop en vouloir à exdragon. Regarde mon post sur "Problème de règle". Je pense qu'il est quasiment impossible d'arriver au résultat que je veux, même en bricolant dans l'état actuel de panoramic. Et comme Jack l'a déjà dit, il travaille à son rythme pendant ses loisirs pour développer Panoramic. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! Dim 19 Fév 2012 - 18:35 | |
| C'est bien évident qu'on ne peut pas tout faire ! ce serait trop beau. | |
| | | Contenu sponsorisé
| Sujet: Re: Logiciel de dessin (esquissage) en 8 lignes seulement!! | |
| |
| | | | Logiciel de dessin (esquissage) en 8 lignes seulement!! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |