1. 경계선의 공유 벡터(점)에 대한 중복제거(렌더링에 대한) 이전모습.

28aad531abc236a14e81d2b628f1736b8d115aa9


보다시피 한번에 하나의 존을 통으로 그려내려고 해서 공유점 보간이 중첩되서 일어남+캣멀롬 보간은 점의 순서가 중요하기 때문에 앞뒤로 로컬점(존에 종속된)이 존재하면 보간이 엉망으로 됨.(원인 분석)

따라서 처음에는 공유점들만 먼저 렌더링 하고 이후에 기존작업을 하면 되지 않을까?

했지만 이렇게하면 공유점-로컬점에 대한 연결성이 없어져버린다. + 공유점으로만 이뤄진 구역에 대한 예외처리 등.

더 복잡해진다.

그래서 그냥 중복제거를 하는 식으로 기존 코드+ 영역기록(문자열)+ 중복제거 및 체크

의 구조로 진행했다.

흔히 백준 들어가서 treeset이나 hashset같은 알고리즘 문제들의 브론즈나 실버 문제쯤 들어가면 보이는 수준의 활용이었다.


3ab8c232abc236a14e81d2b628f172640c8fd206

그리고 결과물이다.

현재 직선 렌더러로 그려서 로컬점들에 대해서도 곡선이 아닌걸 볼 수 있다.

이걸 이제.. 공유점에 대해서만 직선+ 로컬점은 곡선보간이 일어나도록 코드를 변경해서 다시 작성한다면 


28a5d12bf5de3de864afd19528d527035a5f6df627

목표하는 것을 많이 따라간 것 같다. 


(추가)


3fb8c377b49c28a8699fe8b115ef046bedca57bfe4


결과물이다. 외곽은 곡선보간이 잘 일어났고 경계선은 직선이다. 

이걸 하기위해서 일단 보간을 일어날 점 p1,p2를 두고 캣멀롬을 쓰기위한 보충점 2개를 앞뒤로 끌어온다.(예외처리 달아서)

그리고 이걸 보간하면서 subdivision이란 변수를 사용해서 캣멀롬이 작동하는 방식이 점1~점2 를 subdivision 의 점 수 만큼 점을 찍어서 보간하는거임.(수학시간에 도형 내선 그리듯)

그래서 우리가 필요한건 p1~p2의 보간이니까 p0,p1,p2,p3에 대해 1개구역만 추출해주는 함수를 만들고

이를 뽑아내서 여기에만 "공유점인지 아닌지 체크해서" 곡선보간을 넣었음.

결과는 잘 작동한다. 넘 기분 좋은것