1. 경계선의 공유 벡터(점)에 대한 중복제거(렌더링에 대한) 이전모습.
보다시피 한번에 하나의 존을 통으로 그려내려고 해서 공유점 보간이 중첩되서 일어남+캣멀롬 보간은 점의 순서가 중요하기 때문에 앞뒤로 로컬점(존에 종속된)이 존재하면 보간이 엉망으로 됨.(원인 분석)
따라서 처음에는 공유점들만 먼저 렌더링 하고 이후에 기존작업을 하면 되지 않을까?
했지만 이렇게하면 공유점-로컬점에 대한 연결성이 없어져버린다. + 공유점으로만 이뤄진 구역에 대한 예외처리 등.
더 복잡해진다.
그래서 그냥 중복제거를 하는 식으로 기존 코드+ 영역기록(문자열)+ 중복제거 및 체크
의 구조로 진행했다.
흔히 백준 들어가서 treeset이나 hashset같은 알고리즘 문제들의 브론즈나 실버 문제쯤 들어가면 보이는 수준의 활용이었다.
그리고 결과물이다.
현재 직선 렌더러로 그려서 로컬점들에 대해서도 곡선이 아닌걸 볼 수 있다.
이걸 이제.. 공유점에 대해서만 직선+ 로컬점은 곡선보간이 일어나도록 코드를 변경해서 다시 작성한다면
목표하는 것을 많이 따라간 것 같다.
(추가)
결과물이다. 외곽은 곡선보간이 잘 일어났고 경계선은 직선이다.
이걸 하기위해서 일단 보간을 일어날 점 p1,p2를 두고 캣멀롬을 쓰기위한 보충점 2개를 앞뒤로 끌어온다.(예외처리 달아서)
그리고 이걸 보간하면서 subdivision이란 변수를 사용해서 캣멀롬이 작동하는 방식이 점1~점2 를 subdivision 의 점 수 만큼 점을 찍어서 보간하는거임.(수학시간에 도형 내선 그리듯)
그래서 우리가 필요한건 p1~p2의 보간이니까 p0,p1,p2,p3에 대해 1개구역만 추출해주는 함수를 만들고
이를 뽑아내서 여기에만 "공유점인지 아닌지 체크해서" 곡선보간을 넣었음.
결과는 잘 작동한다. 넘 기분 좋은것
댓글 2