본문 바로가기
Computer/Graphics

asdffffev

by DogBull 2010. 1. 12.

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