Invité spartacuss Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 BONJOUR salut tout le monde j'ai une liste (cord) qui lui aussi contient des listes et ces listes contiens des cordonnes et je veux calculer la distance entre chaque point et touts les autres points ,voila un exemple de de la liste que j'ai :(((0.0 115.0) (30.0 115.0) (30.0 30.0) (115.0 30.0) (115.0 0.0) (0.0 0.0) (0.0 115.0)) ((3281.0 115.0) (3311.0 115.0) (3311.0 0.0) (3196.0 0.0) (3196.0 30.0) (3281.0 30.0) (3281.0 115.0)) ((905.5 519.5) (928.911 517.194) (951.422 510.366) (972.168 499.276) (990.353 484.353) (1005.28 466.168) (1016.37 445.422) (1023.19 422.911) (1025.5 399.5) (1023.19 376.089) (1016.37 353.578) (1005.28 ......................... j'ai fait le programme suivant mais ça marche pas comme prévue , quelqu'un peut m'aider SVP (setq r 0 j 0 k 0 q 0 dist1 nil dist2 nil dist3 nil dist4 nil a (length cord) b (length (nth r cord)) c (length (nth (1+ r) cord)) ) (while (< r a) (setq e (- a (1+ r))) (setq q r) (while (< q e) (while (< j b) ;(setq dist1 nil) (while (< k c) (setq dist (distance (nth j (nth r cord)) (nth k (nth (1+ q) cord)))) (setq k (1+ k)) (setq dist1 (append dist1 (list dist))) ) (setq dist2 (append dist2 (list dist1))) (setq j (1+ j)) ) (setq dist3 (append dist3 (list dist2))) (setq q (1+ q)) ) (setq dist4 (append dist4 (list dist3))) (setq r (1+ r)) ) (princ dist2)]
(gile) Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 Salut, Pourrais tu plutôt donner un exemple simple d'une liste entrée (courte mais significative) et du type de liste que tu veux en sortie.Parce que là, pour moi, c'est complètement incompréhensible. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité spartacuss Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 RE la liste que j'ai donner c'est la liste d'entres mais voila un autre exemple :(((10.0 20.0)(54.8 87.2)(47.25 58.02)(1251.21 58.12))((10.2 45.3)(87.35 48.35) (487.254 789.21)(2415.25 20.02))....................................................)je veux calculer la distance entre chaque point et touts les autres points par exemple entre le point P1: (10.0 20.0) et touts les points des autres listes ,sauf les points de la liste qui contient le point P1 merci pour ta réponse
Invité spartacuss Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 RE2 type de liste que je veux en sortie :((3281.0 3311.0 3313.0 3198.07 3197.13 3282.1 3281.0) (210.21 587.21 6587.02) ............)
Invité spartacuss Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 plus claire voila j'ai un liste (cord) cette liste contient des listes list(i) et list(i) contient des cordonnes :cord :(list1 list2 list3 list4 list5 ............list® .........................list(n))list1:(p1 p2 p3 p4 p5 .............pj..........................pm)list2:(q1 q2 q3 q4 .............qj.......................qz)list3:(s1 s2 s3 s4 s5 sj ........................sx).....je veux calculer le différentes distance exemple : distance entre p1 etq1,p1 et q2,p1 et q3 ,p1et qJ ..................p1 et S1 ,p1 ets2 , p1 et s3 .............. même chose pour p2 ....à pm ,puis la distance entre q1et s1 , q1 et s2 q1 et s3 .......................... et je continue jusqu’à le calcule de toutes les distances et les distances pour chaque point les mettent dans une listes :((distance11 distance12 .............................)(distance 21 distance22 distance23 .........................ou distance11 est la distance entre p1 et q1
(gile) Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 Désolé, mais je ne vois toujours pas bien la corrélation entre ta liste en entrée et ta liste en sortie... Je pense qui si tu ne peux pas exprimer clairement ce que tu veux faire en français, tu auras du mal à l'écrire en LISP. Par exemple, avec cette liste, quelle doit être la liste retournée :'( ((0.0 0.0) (12.0 0.0) (5.0 8.0)) ((254.0 126.0) (321.0 154.0) (295.0 99.0)) ((584.0 12.0) (536.0 21.0) (547.0 10.0)) ) Les sous listes de points ont-elle toutes la même longueur ?Le nombre de sous listes est-il défini ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité spartacuss Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 re le nombre de sous liste oui est définie ,mais la longueur des liste n'est pas le même pour ton exmple : ((la distance entre : (0.0 0.0) et (254.0 126.0) , la distance entre (0.0 0.0) et (321.0 154.0) ,(0.0 0.0) et (295.0 99.0))(la distance entre (12.0 0.0) et (254.0 126.0) , (12.0 0.0) et (321.0 154.0) , (12.0 0.0) et (295.0 99.0))( la distance entre :(254.0 126.0) et (584.0 12.0), (584.0 12.0) et (536.0 21.0) ainsi de suite jusqu'à la distance entre (295.0 99.0) et (547.0 10.0)))
(gile) Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 Essaye ça (je vois mal comment faire sans fonctions récursives) : (defun foo (lst / bar) (defun bar (lst1 lst2) (if lst1 (append (mapcar '(lambda (l) (mapcar '(lambda (p) (distance (car lst1) p)) l) ) lst2 ) (bar (cdr lst1) lst2) ) ) ) (if (cdr lst) (append (bar (car lst) (cdr lst)) (foo (cdr lst))) ) ) Mais si c'est en rapport avec ce sujet, je vois mal comment tu vas traiter le résultat. De plus les distances entre les sommets ne reflète pas les distances entre les polylignes... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité spartacuss Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 re oui c vrai c'est pour le même sujet je pense que si je calcule la distance entre les sommets des lwpolylignes je peut arriver au calcule de la distance entre les lwpolylignes :( mais je c’est pas que c'est juste ou non , si vous avez une autre aidés je serrai reconnaissant , et merci beaucoup pour le temps que vous avez consacré a ce sujet cordialement
Invité spartacuss Posté(e) le 31 mai 2011 Posté(e) le 31 mai 2011 re voila un bloc de mon dessin sur le quelle je travaille : http://img219.imageshack.us/img219/8813/exeple.png cordialement
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant