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