|
Publicité ' | ||||||||||||||||||||||||
|
|
#41 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Citation:
U un simple calcul de produit vectoriel est donc suffisant (et bien plus simple/robuste). Je modifie le code en conséquence.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
00
|
|
|
#42 |
|
Invité de passage
![]() Inscription : janvier 2010 Messages : 1 ![]() |
Ce code pour le calcul des diagrammes de voronoi existe-t-il en c# ?
|
|
|
00
|
|
|
#43 |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Ce code en particulier ? Non. En tous cas, je ne l'ai pas porté en C#.
![]() Mais ca ne doit pas être bien compliqué à faire car il n'y a rien de spécifique a Java, et les 2 langages se ressemblent beaucoup.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
00
|
|
|
#44 |
|
Futur Membre du Club
![]() Mickey St Inscription : décembre 2009 Messages : 44 ![]() |
Bonjour,
Tout d'abord, merci pour cette implémentation très utile, super travail. ![]() Ensuite, pour ma part, en utilisant exactement ton code source, j'obtiens ceci en attaché (tous les points en voronoi sont reliés entre eux aussi). Je vais jeter un oeil sur tes boucles mais c'était juste pour savoir si j'étais le seul à obtenir ceci? Cordialement. |
|
|
00
|
|
|
#45 | |||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Citation:
C'est dans la méthode "computeVoronoi" Code java :
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||
|
00
|
|
|
#46 |
|
Futur Membre du Club
![]() Mickey St Inscription : décembre 2009 Messages : 44 ![]() |
Super ça marche nickel maintenant
Merci pour ce super travail ![]() Michael. |
|
|
00
|
|
|
#47 | ||||||||
|
Futur Membre du Club
![]() Mickey St Inscription : décembre 2009 Messages : 44 ![]() |
Bonsoir,
J'ai une petite question qui me chiffonne depuis plusieurs heures. J'ai intégré ton implémentation sur imagej en utilisant les centroides de mes régions d'intérêts (obtenus par analyse de particule) et cela marche très bien (je dois juste écrire en plus une classe Point qui prenne des coordonnées en double et non en int): Code java :
En revanche, dès que je pose une condition avant l'insertion de mes points (centroides) alors pour des raisons qui m'échappent, beaucoup de mes points sont remplacés par un "null" lors de la construction de Delaunay (alors que lorsque je fais un simple print de ces points, ils sont bien là et sont donc sensés être retenus): Code java :
Et voila un exemple de ce que j'obtiens (en termes de points) : Avant la construction du Delaunay : Code java :
Après la construction du Delaunay: Code java :
ce qui bien sûr me donne une erreur NullPointerException. Est-ce que quelqu'un pourrait m'expliquer ce bug svp? Une dernière question. Est-ce que cette implémentation renvoit la longueur des segments svp, je ne le vois nulle part? Merci bien à l'avance. |
||||||||
|
|
00
|
|
|
#48 | ||||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Citation:
Code java :
Donc, lorsque tu parcours le tableau ( for(Point p : points) ) tu tombes sur des cases vides, c'est à dire p=null Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||||
|
00
|
|
|
#49 | ||
|
Futur Membre du Club
![]() Mickey St Inscription : décembre 2009 Messages : 44 ![]() |
Bonjour pseudocode et merci pour ta réponse.
Citation:
Citation:
|
||
|
|
00
|
|
|
#50 | ||||
|
Futur Membre du Club
![]() Mickey St Inscription : décembre 2009 Messages : 44 ![]() |
Voila un exemple plus concret. Ma condition est d'afficher des points dont la région correspondante a une circularité < 0.5:
Voici ce que j'obtiens par un simple print : Code java :
Et voici ce que j'obtiens dans le tableau des points : Code java :
On voit que le dernier point x=672, y=13 avec circularity =0.97 est remplacé par "null" alors que sa circularité est bien < à 0.5. Et cela me fait ça sur plus d'une vingtaine de points et je ne comprends vraiment pas pourquoi puisque le test par print les affiche bien. |
||||
|
|
00
|
|
|
#51 |
|
Futur Membre du Club
![]() Mickey St Inscription : décembre 2009 Messages : 44 ![]() |
Ah c'est bon j'ai réglé le problème. En effet, tu avais raison. Les points 'null' correspondant aux 'mauvais points' s'intercalaient entre mes points 'candidats' et comme j'avais une exception NullPointer, je n'ai pas pu voir que les points remplissant la condition avaient bien été pris en compte puisque le programme s'arrêtait là. Je fais un petit check lors de la construction du delaunay et voronoi pour voir si le point est non nul et c'est bon, tout rentre dans l'ordre
|
|
|
00
|
|
|
#52 | ||||||
|
Futur Membre du Club
![]() Mickey St Inscription : décembre 2009 Messages : 44 ![]() |
Bonjour,
J'ai une autre question svp. Est-ce que les polygones pour les doubles existent en java ainsi que les méthodes fillRect(double, double, double, double)? J'ai remplacé tous les Point en Point2D.double et les int en double (pour plus de précisions). En revanche, pour les polygones et rectangle, c'est plus compliqué car je n'ai pas trouvé leur "équivalence en double" (comme dans Graphics2D avec Line2D). Avant de faire la méthode, je voulais juste m'assurer si elles existaient ou pas. Par ailleurs, j'ai dû remplacer la méthode long det33 par double det33. Est-ce que cela n'aura pas trop d'incidence? Merci d'avance. QuadEdge.java Code java :
Delaunay.java Code java :
L'appel: Code java :
|
||||||
|
|
00
|
|
|
#53 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Pour utiliser des représentions double, il faut passer par les classes "Shape" du package java.awt.geom
Rectangle2D.Double pour le rectangle Path2D.Double pour le polygone Le remplissage se fait alors avec Graphics2D.fill(Shape) Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
00
|
|
|
#54 | ||||
|
Futur Membre du Club
![]() Mickey St Inscription : décembre 2009 Messages : 44 ![]() |
Bonjour et merci pour ta réponse.
Alors j'ai utilisé les méthodes ci-dessus. Mais seuls les points sont dessinés. Le voronoi et le delaunay ne se dessinent pas. Je crois que cela vient de l'initialisation du polygone, je ne dois pas bien utiliser le Path2D.Double. Je vais faire encore quelques tests et posterai dès que je trouve. Code java :
EDIT: ** modifications ** Alors voici ce que j'ai fait : Code java :
Mais en revanche, il y a toujours 2 points qui ne sont jamais reliés. Je vous joins un screenshot de ce que j'obtiens. Je continue à rechercher l'erreur possible. |
||||
|
|
00
|
|
|
#55 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
En java, un Path2D n'est pas fermé par nature. Pour fermer le Path2D, il faut tracer une ligne jusqu'au premier point, ce qui se fait simplement en appelant la méthode closePath().
Code java :
Pour le fun, une triangulation de la spirale d'or.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#56 | ||
|
Futur Membre du Club
![]() Mickey St Inscription : décembre 2009 Messages : 44 ![]() |
ahh bien vu pseudocode. L'algo en double marche nickel maintenant
![]() Juste une dernière question stp. Est-ce qu'il y a un moyen plus simple que ça pour avoir les distance des segments de delaunay entre les points : Code :
ce qui m'obligerait à créer une HashMap pour chaque coordonnée pour avoir toutes les distances correspondantes? PS: joli joli la spirale d'or |
||
|
|
00
|
|
|
#57 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Citation:
![]() Cela dit tu peux récupérer la liste des segments directement par la méthode computeEdges(), plutot que de passer par computeTriangles(). Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#58 |
|
Futur Membre du Club
![]() Mickey St Inscription : décembre 2009 Messages : 44 ![]() |
Merci bien pour ta réponse.
|
|
|
00
|
|
|
#59 | ||
|
Membre habitué
![]() Développeur informatique Inscription : octobre 2002 Messages : 281 ![]() |
Bonjour,
Désolé de ressortir ce post assez vieux mais j'essaie de le convertir en C# ce qui ne devrait pas poser de problème et pourtant, j'ai un souci dans la méthode locate Code :
Pouvez vous m'aider |
||
|
|
00
|
|
|
#60 |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 815 ![]() |
Hum... c'est curieux. Ca voudrait dire que le point n'est dans aucun des triangles déjà construits.
Donc: - soit il y a une erreur lors de l'update de la taille de la bounding-box - soit les quadEdge sont construits avec une mauvaise orientation - soit il y a une erreur lors du calcul de "isAtRightOf()" Regarde s'il n'y a pas un dépassement de capacité dans "isAtRightOf()" ou "inCircle()".
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
00
|
Copyright © 2000-2013 - www.developpez.com