굴곡 규칙 정의

Flash Player 10 이상, Adobe AIR 1.5 이상

향상된 드로잉 API에서는 패스의 방향을 나타내는 패스 "굴곡"이라는 개념도 도입되었습니다. 패스의 굴곡은 양수(시계 방향)이거나 음수(반시계 방향)입니다. data 매개 변수의 벡터에서 제공하는 좌표를 렌더러에서 해석하는 순서에 따라 굴곡이 결정됩니다.

양수 및 음수 굴곡
양수 및 음수 굴곡
A.
그리기 방향을 나타내는 화살표

B.
양수 방향(시계 방향)

C.
음수 방향(반시계 방향)

또한 Graphics.drawPath() 메서드에는 "굴곡"이라는 세 번째 선택적 매개 변수가 있습니다.

drawPath(commands:Vector.<int>, data:Vector.<Number>, winding:String = "evenOdd"):void

이 컨텍스트에서 세 번째 매개 변수는 교차하는 패스에 대한 굴곡 또는 채우기 규칙을 지정하는 문자열이나 상수입니다. 상수 값은 GraphicsPathWinding 클래스에 GraphicsPathWinding.EVEN_ODD 또는 GraphicsPathWinding.NON_ZERO로 정의되어 있습니다. 패스가 교차할 때는 굴곡 규칙이 중요합니다.

짝수-홀수 규칙은 표준 굴곡 규칙으로서 이전 드로잉 API에서 사용되었습니다. 짝수-홀수 규칙은 Graphics.drawPath() 메서드에 대한 기본 규칙이기도 합니다. 짝수-홀수 굴곡 규칙을 사용하면 교차하는 패스가 열린 채우기와 닫힌 채우기 사이에서 교대로 반복됩니다. 채우기 교차 영역이 같은 두 사각형을 그리면 교차 영역이 채워집니다. 일반적으로 인접 영역은 둘 중 하나만 채워집니다.

반대로 0이 아닌 규칙은 굴곡(드로잉 방향)에 따라 교차하는 패스에 정의된 영역을 채울지 여부를 결정합니다. 반대 방향의 굴곡 패스가 교차할 때 정의된 영역은 짝수-홀수 굴곡의 경우와 같이 채워지지 않습니다. 패스의 굴곡이 같은 경우에는 채워지지 않은 영역이 채워집니다.

교차하는 영역에 대한 굴곡 규칙
교차하는 영역에 대한 굴곡 규칙
A.
짝수-홀수 굴곡 규칙

B.
0이 아닌 굴곡 규칙

굴곡 규칙 이름

굴곡 규칙 이름은 이러한 채우기가 관리되는 방식을 정의하는 보다 구체적인 규칙을 나타냅니다. 양수 방향 굴곡 패스에는 값 +1이 지정되고 음수 방향 굴곡 패스에는 값 -1이 지정됩니다. 모양의 막힌 영역 내에 있는 점에서부터 시작하여 무한정으로 확장하여 선을 그립니다. 선이 패스와 교차하는 횟수와 이러한 패스의 결합된 값을 통해 채우기가 결정됩니다. 짝수-홀수 굴곡의 경우에는 선이 패스와 교차하는 횟수가 사용됩니다. 이 횟수가 홀수이면 영역이 채워지고 짝수이면 영역이 채워지지 않습니다. 0이 아닌 굴곡의 경우 패스에 지정된 값이 사용됩니다. 패스의 결합된 값이 0이 아니면 영역이 채워지고 0이면 영역이 채워지지 않습니다.

굴곡 규칙 개수 및 채우기
굴곡 규칙 개수 및 채우기
A.
짝수-홀수 굴곡 규칙

B.
0이 아닌 굴곡 규칙

굴곡 규칙 사용

이러한 채우기 규칙은 복잡하지만 일부 경우에 필요할 수 있습니다. 예를 들어 별 모양을 그린다고 가정합니다. 표준 짝수-홀수 규칙을 사용할 경우 해당 모양에는 각기 다른 10개의 선이 필요합니다. 0이 아닌 굴곡 규칙을 사용할 경우 이 10개의 선은 다섯 개로 줄어듭니다. 다음은 다섯 개의 선과 0이 아닌 굴곡 규칙으로 별을 그리기 위한 ActionScript입니다.

graphics.beginFill(0x60A0FF); 
graphics.drawPath( Vector.<int>([1,2,2,2,2]),  Vector.<Number>([66,10, 23,127, 122,50, 10,49, 109,127]),   GraphicsPathWinding.NON_ZERO);

다음은 별 모양입니다.

서로 다른 굴곡을 사용한 별 모양
서로 다른 굴곡 규칙을 사용한 별 모양
A.
짝수-홀수 굴곡, 10개의 선

B.
짝수-홀수 굴곡, 5개의 선

C.
0이 아닌 굴곡, 5개의 선

또한 이미지가 3차원 객체에서 텍스처로 사용되거나 애니메이션되고 겹칠 때는 굴곡 규칙이 더욱 중요해집니다.