Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Langages » Autres Langages » décomposition function GDI ellipse

diemaker form
ProgBoarder
Citer Windows XP Firefox 2 - Posté le 05/09/2008 à 18:29
Bonjour à tous,

Pour tracer une ellipse sur un canvas il y a la fonction :


DECLARE FUNCTION Ellipse Lib "gdi32" Alias "Ellipse" (hdc As Long,X1 As Long,Y1 As Long,X2 As Long,Y2 As Long) As Long


qui trace une ellipse en prenant le format du rectangle X1,Y1 et X2,Y2

Comment pouvoir décomposer l'ellipse créée en segment d'arcs et pouvoir récupérer les coordonnées X et Y début, X et Y fin, X et Y centre de chaque segment d'arc créés ?

Je sais, encore un mouton à 5 pattes, .....

Merci.

DMF

:D

PS : J'ai trouvé ça mais je ne comprend pas tout
[url] http://files.codes-sources.com/fichier.aspx?id=39236&f=Calcul.bas

Edité par diemaker form ( 08/09/2008 17:58:10 )
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
Francesco
Modérateur
RemonterCiter Linux Firefox 2 - Posté le 05/09/2008 à 19:35
Bon, a priori, cela doit être du Visual Basic. C'est tout de même une chose important à signaler !!

Ensuite, je ne comprends pas ta décomposition. Une ellipse est une ellipse, et non un morceau d'ellipse. Je ne comprend donc pas comment tu peux avoir des segments.

Et je ne suis pas sur que 3 points suffisent pour définir complètement un segment d'ellipse...
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
neamar
Modérateur
RemonterCiter Linux Firefox 3 - Posté le 05/09/2008 à 20:21
Je confirme, c'est bien du Visual basic avec un appel à l'API Windows.
Cependant, elle ne fait que tracer, et ne renvoie pas d'informations pour l'ellipse.
Pour ce que tu veux, je pense qu'un peu de maths ne fera pas de mal !
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.

http://neamar.fr
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 07/09/2008 à 09:08
Bonjour,

en effet il s'agit de l'api windows, désolé, je ne l'avais pas précisé !
ce que je souhaite faire :
créer une ellipse avec l'api, et en récupérer tous les segment d'arc pour le mettre dans un fichier du type "cad" pour pouvoir ensuite l'ouvrir dans un autre logiciel de dessin vectoriel.
3 points suffisent pour tracer un arc de cercle avec l'api "arc"

Amicalement,

DMF
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
neamar
Modérateur
RemonterCiter Linux Firefox 3 - Posté le 07/09/2008 à 09:46
En théorie, tu ne peux pas récupérer l'ellipse depuis la fonction :

CitationIf the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.


(comme d'habitude avec l'api Win d'ailleurs...)
...Tu as donc trois solutions :
-1 Récupérer chaque pixel de ton HDC via GetPixel de GDI32, récupérer si il est allumé et stocker tout ca dans un joli tableau....c'est moche, pas optimisé, et en plus, ce n'est pas exactement ce que tu veux

-2 Utiliser la formule mathématique d'une ellipse pour te trouver les points de contrôle désirés...(solution, à mon avis la plus facile : <10 lignes de code...)

-3 Te renseigner sur les courbes de Bézier, qui utilisent aussi les points de controle (et qui sont aussi utilisées par ton logiciel de rendu vectoriel...)

Bon courage !
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.

http://neamar.fr
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 07/09/2008 à 09:53
Bonjour Neamar,

-2 Utiliser la formule mathématique d'une ellipse pour te trouver les points de contrôle désirés...(solution, à mon avis la plus facile : <10 lignes de code...)

Cette soluton est surement la réponse à mon problème,
il y a-t-il une formule simple ?
sur le web ont trouve de tout, mais il faut être un supermatheux pour comprendre et surtout l'interpréter dans un prog !

Merci pour tes recherches,

DMF
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
Francesco
Modérateur
RemonterCiter Linux Firefox 3 - Posté le 07/09/2008 à 10:42

Citation3 points suffisent pour tracer un arc de cercle avec l'api "arc"


Je suis d'accord pour un arc de cercle. Mais est tu bien sur que cela reste vrai pour un arc d'ellipse ? J'avoue ne pas en être si sur, personnellement....

[edit]
Exemple bidon montrant que 3 points ne suffisent pas pour un arc d'ellipse :

[/edit]

Edité par Francesco ( 07/09/2008 11:21:50 )
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 07/09/2008 à 11:19
Bonjour Francesco,

Voilà ce que je veux dire :

il faut récupérer les coordonnées des 3 points (encerclés sur le dessin)
de chaque arc constituant l'ellipse.

DMF


Edité par diemaker form ( 08/09/2008 18:06:04 )
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr
neamar
Modérateur
RemonterCiter Linux Firefox 3 - Posté le 07/09/2008 à 11:20
Renseignements pris, il semblerait que le dessin d'ellipse fasse partie des fonctions de base des outils de dessin vectoriel. Donc avant de te plonger dans les maths, regarde si tu n'as pas tout simplement une fonction Ellipse dans ton logiciel !
Sinon, je peux te donner l'équation d'une ellipse, ou une forule pour la tracer point par points.
Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.

http://neamar.fr
Francesco
Modérateur
RemonterCiter Linux Firefox 3 - Posté le 07/09/2008 à 11:27
Je comprend très bien ce que tu veux dire Diemaker Form, mais comme te le montre mon exemple, avec 3 points, tu as au moins 2 ellipses, donc au moins 2 segments différents définis par ces 3 points.

Donc, impossible de créer un arc d'ellipse avec seulement 3 points (il faut une contrainte supplémentaire).

Par contre, si tu créé une ellipse et que tu l'as décomposé en segments comme sur ton schéma, alors oui, tu peux connaître les coordonnées de tes segments.
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
diemaker form
ProgBoarder
RemonterCiter Windows XP Firefox 2 - Posté le 07/09/2008 à 11:29
Bonjour,
j'utilise bien la fonction ellipse pour dessiner, mais pour enregistrer en un format genre dxf ou eps, il me faut la décomposition de l'ellipse en 4 fois 4 arcs avec les coordonnées des 3 points servant au traçage de chaque arc
Je sais pas si j'ai été compréhensible ?

Merci à vous,
DMF
Formes de Découpe, Outils Coupants pour l'imprimerie sur http://www.diemakerform.fr

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2010 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,052 s - Crédits - Stats
1 connecté