새로운 언어를 개발하다보면 수도 없는 삽질을 하게 되지만, 언어 문제가 아니라 관련된 툴킷의 문제가 있을줄은 사실 상상도 못했었다.
덕택에 어지간히 삽질을 거듭했고, 겨우 문제를 해결했다.
현재 테스트 중인 프로그램은 Clojure에서 Double Buffering 을 통해 그래픽을 출력하는 부분이다. 솔직히 이게 뭐가 어려울까 내심 방심했다가 한 건했다.
자바에서 Shape을 출력할 때, 방향을 돌려서 출력하는 루틴이 있길래, 이것을 테스트하려고했다.
(defn drawShip [g d]
(let [shape (Polygon. (int-array [-6 -3 0 3 6 0])
(int-array [6 7 7 7 6 -1])
6)
trans_identity (AffineTransform. ) ]
(doto g
(.setTransform trans_identity)
(.translate 20 20)
(.rotate (Math/toRadians d))
(.setColor Color/ORANGE)
(.fill shape))))
Clojure 소스코드에서 Polygon을 만든다음, 적당히 각도를 돌려서 출력하는 부분이다.
setTransform을 해서, translate, rotate를 걸었는데 이 부분이 문제가 될줄은 전혀 상상도 못했던 것..
(defn clear [g]
(let [trans_identity (AffineTransform. ) ]
(doto g
(.setTransform trans_identity)
(.translate 0 0)
(.rotate (Math/toRadians 0))
(.setColor Color/BLACK)
(.fillRect 0 0 639 479))))
더블 버퍼링을 하려고 메모리 공간을 지우는 부분.. 꽤 양이 많지? 솔직히 clearRect만 호출하면 될줄 알았더만.. 그게 아니었다.
이전에도 말했던 것처럼 Shape을 출력하면서 각도를 돌려가며 출력했더니 clear 루틴에까지 그게 그대로 영향을 주었던 것..
결국 이전에 했던 세팅을 싹 지우고 돌려서야 겨우겨우 성공했다.
해결하고 나니.. 아 이랬구나 하는 생각을 했지.. 실제로 AffineTransform에 관련된 내용을 어디 주의깊게 읽기나할까.. 디자이너가 없어서 그냥 벡터 그래픽으로 그리다보니 우째 이런것도 겪게된다. 나름대로 액땜한걸까?

덕택에 어지간히 삽질을 거듭했고, 겨우 문제를 해결했다.
현재 테스트 중인 프로그램은 Clojure에서 Double Buffering 을 통해 그래픽을 출력하는 부분이다. 솔직히 이게 뭐가 어려울까 내심 방심했다가 한 건했다.
자바에서 Shape을 출력할 때, 방향을 돌려서 출력하는 루틴이 있길래, 이것을 테스트하려고했다.
(defn drawShip [g d]
(let [shape (Polygon. (int-array [-6 -3 0 3 6 0])
(int-array [6 7 7 7 6 -1])
6)
trans_identity (AffineTransform. ) ]
(doto g
(.setTransform trans_identity)
(.translate 20 20)
(.rotate (Math/toRadians d))
(.setColor Color/ORANGE)
(.fill shape))))
Clojure 소스코드에서 Polygon을 만든다음, 적당히 각도를 돌려서 출력하는 부분이다.
setTransform을 해서, translate, rotate를 걸었는데 이 부분이 문제가 될줄은 전혀 상상도 못했던 것..
(defn clear [g]
(let [trans_identity (AffineTransform. ) ]
(doto g
(.setTransform trans_identity)
(.translate 0 0)
(.rotate (Math/toRadians 0))
(.setColor Color/BLACK)
(.fillRect 0 0 639 479))))
더블 버퍼링을 하려고 메모리 공간을 지우는 부분.. 꽤 양이 많지? 솔직히 clearRect만 호출하면 될줄 알았더만.. 그게 아니었다.
이전에도 말했던 것처럼 Shape을 출력하면서 각도를 돌려가며 출력했더니 clear 루틴에까지 그게 그대로 영향을 주었던 것..
결국 이전에 했던 세팅을 싹 지우고 돌려서야 겨우겨우 성공했다.
해결하고 나니.. 아 이랬구나 하는 생각을 했지.. 실제로 AffineTransform에 관련된 내용을 어디 주의깊게 읽기나할까.. 디자이너가 없어서 그냥 벡터 그래픽으로 그리다보니 우째 이런것도 겪게된다. 나름대로 액땜한걸까?
