Curvature Based Silhouette Rendering
1. Line Strip, 각 Point들의 Angle 얻기그림 1 LineStrip and Angles
그림1에서 는,
라고 할 경우,
두 벡터 가 이루는 각은,
이다.
코드는,
그림1를 위 코드의 return 값을 Degree로 변경하여 출력한 결과이다.
2. Line Strip에 접하는 원
그림 2 LineStrip and Circle
그림2의 Line Strip은 3개의 Angle이 생기고 따라서 3개의 접하는 원을 얻을 수 있다.
그림 3 원의 접선
와
를 알고 있으므로 원의 반지름은,
이다.
원의 좌표에 대한 두 가지의 경우는 다음과 같다.
그림 4 CCW and CW
Line Strip L이 L(A, B, C, D)로 구성되어 있을 경우,
원O는 CW에 의해 생성되지만, 원P는 CCW에 의해 생성된다.
따라서 Line Strip에 포함된 3개의 점(그림 4의 경우, ABC 와 BCD)이 CCW로 감기는지, CW로 감기는지 알아야 한다. 이는 외적을 통해 알 수 있다. 라고 하자,
과
의 외적을 구한다고 할 경우, 두 벡터 모두 2차원 평면상의 점이므로 (x, y, 0)의 형태로 표현된다.
따라서, 외적은로 표현할 수 있다.
여기서, C.z의 값이 0보다 작으면 CW, 0보다 크면 CCW라고 판단할 수 있다.과 수직이고, 원의 중심을 향하는 벡터
는
으로 나타낼 수 있다.
이제 원의 좌표는 이다.
3. Curvature Based Stroke Thickness
그림 5 Curvature Based Stroke Thickness
그림 5의 검은색 라인(중앙선)이 Input로 사용된 Line Strip이고, 붉은색 라인(중앙선을 중심으로 양쪽에 있는선)이 Thickness를 나타내는 Line이다.
그림 6 Curvature(x축) and Thickness(y축)
Curvature에 따른 Thickness는 위의 수식을 기본으로 한다. S. Saito et al., Curvature-based Stroke Rendering, Visual Comput (2008)
그림 7 min max 적용
'Computer > Graphics' 카테고리의 다른 글
Dijkstra (0) | 2010.01.29 |
---|---|
곡률기반라인생성 (0) | 2010.01.14 |
NPR Line Drawing (0) | 2010.01.10 |
ID3DXRenderToSurface, IDirect3DSurface9 (0) | 2009.04.17 |
수묵화렌더링 (0) | 2008.12.13 |