월요일 아침이네요.. 모두들 힘냅시다 ^^
코딩중에 막히는 부분이 있어 이렇게 질문 드립니다.
(setq hLine (vl-sort hLine ‘(lambda (a b) (< (car a) (car b)))))
hLine 에 ((133600.0 43141.6) (133575.0 43141.6) (133600.0 43157.6) ……….)
이런 식으로 좌표가 변수에 저장되어 있습니다.
위의 sort 함수로 x좌표 크기순이나 y좌표 크기순 따로는 정렬할수 있겠는데
x좌표를 기준1로 먼저 정렬하고 y좌표를 기준2로 해서 같이 정렬하고 싶은데 잘 안되네요 ..
vl-sort 함수로 불가능 하다면 다른 방법이 어떤게 있을까요 ??
고수님들의 도움이 필요 합니다.
공유
먼저 x좌표로 정렬한 값은 그대로 유지되면서 y좌표 값으로 정렬됩니다. 그래서 상하좌우 정렬이 됩니다.
허나 미세한 값이라도 다르면 정렬된다는 점에 유의하세요.
그리고 y좌표가 큰 순으로 정렬했습니다.
뭐하남 님 방법으로 하면 x좌표로 정렬 한 값이 다시 y기준으로 섞이지 않나요 ??
x좌표 가 작은 순으로 정렬하고 정렬된 리스트를 다시 y좌표 가 작은 순으로 정렬 하신거 같은데 아닌가요..??
리스트속 좌표가 몇백개씩 되니 .. 태은님 방법으로는 좀 힘들것 같네요 ..ㅠㅠ
그래도 성심성의껏 생각해서 댓글 달아 주셔서 감사합니다 ^^
여러 단계를 거치면 오히려 속도가 저하되는 문제가 있어보입니다.
일반적인 상하좌우 소트 :
(setq sortX (vl-sort hLine (function (lambda (a b) (< (car a) (car b))))))
(setq sortY (vl-sort sortX (function (lambda (a b) (> (cadr a) (cadr b))))))
1. 좌표리스트에서 y값만 추출 (list 100 300 200)