패치 속성

패치 속성 (Patch Properties)

패치(patch)는 다각형 면을 채워 그리는 그래픽 객체예요. 면의 색과 투명도, 꼭짓점 좌표, 조명, 마커, 마우스 상호작용까지 패치 객체가 갖는 모든 속성을 이 문서에서 정리해요.

출처: 문서

본문

patch 객체(see patch)의 속성은 콜백 실행(Callback Execution), 색과 투명도(Color and Transparency), 좌표 데이터(Coordinate Data), 생성/삭제(Creation/Deletion), 표시(Display), 범례 옵션(Legend Options), 조명(Lighting), 마커 외형(Marker Appearance), 마우스 상호작용(Mouse Interaction), 객체 식별(Object Identification), 윤곽선 외형(Outline Appearance), 부모/자식(Parent/Children) 범주로 나뉘어요.

콜백 실행 (Callback Execution)

busyaction: "cancel" | {"queue"}

다른 객체의 실행 중인 콜백을 방해할 수 없을 때, 이 객체의 콜백 속성 실행을 Octave가 어떻게 처리할지 정의해요. 현재 실행 중인 콜백 객체의 interruptible 속성이 "off"로 설정된 경우에만 관련돼요. 방해하려는 콜백 객체의 busyaction 속성이 그 콜백을 대기열에 넣을지("queue"(기본)) 버릴지("cancel")를 나타내요. Callbacks 섹션 참고.

interruptible: "off" | {"on"}

이 객체의 콜백 함수가 다른 콜백에 의해 방해받을 수 있는지 지정해요. 기본적으로 interruptible"on"이고, drawnow, figure, waitfor, getframe, pause 함수를 사용하는 콜백은 결국 방해받게 돼요. Callbacks 섹션 참고.

색과 투명도 (Color and Transparency)

alphadatamapping: "direct" | "none" | {"scaled"}

패치 객체에는 아직 투명도가 구현되지 않았어요. alphadatamapping은 사용되지 않아요.

cdata: 스칼라 | 행렬 | 배열, 기본 [](0x0)

패치 객체의 색을 x/y/z 좌표 데이터에 상대적으로 정의하는 데이터예요. 패치 색은 현재 컬러맵의 인덱스나 RGB 삼중항으로 정의할 수 있는데, RGB 색은 세 번째 차원을 따라 정의돼요. 이 색들은 패치 전체, 개별 면, 개별 꼭짓점에 대해 각각 정의될 수 있고, "cdata"의 모양에 따라 결정돼요.

  • "cdata"가 현재 컬러맵의 스칼라 인덱스나 1×1×3 RGB 삼중항이면, 모든 면과 테두리의 색을 정의해요.
  • 패치 객체에 N개의 면이 있고 "cdata"가 1×N 컬러맵 인덱스 벡터나 1×N×3 RGB 배열이면, 각 면의 색을 정의해요.
  • 패치 객체에 N개의 면과 면당 M개의 꼭짓점이 있고 cdata가 M×N 컬러맵 인덱스 행렬이나 M×N×3 RGB 배열이면, 각 꼭짓점의 색을 정의해요. ("cdata"의 모양은 "xdata", "ydata", "zdata"와 일치해야 해요.)

cdatamapping: "direct" | {"scaled"}

"cdata"("facevertexcdata") 속성의 데이터를 현재 컬러맵에 매핑하는 방법을 설정해요. "Direct" 매핑은 "cdata"("facevertexcdata") 값을 현재 컬러맵의 인덱스로 사용해 색을 선택해요. "Scaled" 매핑은 그 값들을 "clim" axes 속성에 지정된 범위로 스케일해요.

facealpha: 스칼라 | "flat" | "interp", 기본 1

패치 객체 면의 투명도 수준이에요. 현재는 double 값만 지원돼요. 값 0은 완전 투명, 값 1은 투명도 없는 단색 면을 뜻해요. 속성을 "flat"이나 "interp"로 설정하면 면이 렌더링되지 않아요. 게다가 면이 뒤에서 앞으로 정렬되지 않아서, 겹친 반투명 면을 렌더링할 때 예상치 못한 결과가 나올 수 있어요.

facecolor: {colorspec} | "none" | "flat" | "interp", 기본 [0 0 0]

패치 객체 면의 색이에요. 유효한 색 지정 또는 "none", "flat", "interp" 중 하나로 지정해요. "flat""interp""cdata""facevertexcdata" 속성에 저장된 색 값 데이터를 사용해 각 면에 단일 색을 설정하거나 면의 꼭짓점 사이에서 보간된 색을 설정해요. colorspec 참고.

facelighting: {"flat"} | "gouraud" | "none" | "phong"

"none"이 아닌 값으로 설정하면 객체의 면을 빛과 그림자 효과로 그려요. 지원되는 값은 "none"(조명 효과 없음), "flat"(면마다 매끄럽지 않은 모습), "gouraud"(꼭짓점 사이 조명 효과의 선형 보간)예요. "phong"은 더 이상 권장되지 않으며 "gouraud"와 같은 효과를 내요.

facevertexalphadata: 기본 [](0x0)

패치 객체에는 면-꼭짓점 투명도 제어가 아직 구현되지 않았어요. facevertexalphadata는 사용되지 않아요.

facevertexcdata: 스칼라 | 행렬, 기본 [](0x0)

패치 객체의 색을 면-꼭짓점 데이터에 상대적으로 정의하는 데이터예요. 패치 색은 현재 컬러맵의 인덱스나 RGB 삼중항으로 정의할 수 있는데, RGB 색은 "facevertexcdata"의 행에 정의돼요. 이들은 패치 전체, 개별 면, 개별 꼭짓점에 대해 각각 정의되며 "facevertexcdata"의 모양에 따라 결정돼요.

  • facevertexcdata가 현재 컬러맵의 스칼라 인덱스나 1×3 RGB 삼중항이면 모든 면과 테두리의 색을 정의해요.
  • 패치 객체에 N개의 면이 있고 facevertexcdata가 N×1 인덱스 열 벡터나 N×3 RGB 행렬이면 N개 면 각각의 색을 정의해요.
  • 패치 객체에 M개의 꼭짓점이 있고 facevertexcdata가 M×1 인덱스 열 벡터나 M×3 RGB 행렬이면 각 꼭짓점의 색을 정의해요.

좌표 데이터 (Coordinate Data)

faces: 벡터 | 행렬, 기본 [1 2 3]

패치 면의 연결 목록으로, M×N 행렬로 저장돼요. 각 M개 면은 최대 N개 꼭짓점으로 된 행으로 정의되고, 각 원소는 vertices 속성에 저장된 꼭짓점의 행 인덱스를 담아요. N보다 꼭짓점이 적은 면은 빈 행 원소를 NaN 값으로 채워요.

vertices: 벡터 | 행렬, 기본 3×2 double

패치 꼭짓점 목록으로, N×3 행렬로 저장돼요. 각 행은 꼭짓점의 x, y, z 좌표를 담고, faces 속성과 함께 패치 구조를 정의하는 데 써요.

xdata, ydata, zdata: 벡터 | 행렬, 기본 각각 [0; 1; 0], [1; 1; 0], [](0x0)

패치 꼭짓점의 x, y, z 좌표예요.

생성/삭제 (Creation/Deletion)

beingdeleted: {"off"} | "on"

함수가 객체 삭제를 시작했음을 나타내는 속성이에요. beingdeleted는 객체가 더 이상 존재하지 않을 때까지 true로 설정돼요.

createfcn: 문자열 | 함수 핸들, 기본 [](0x0)

패치가 생성된 직후 실행되는 콜백 함수예요. root 객체의 기본 속성으로 설정해요. 예: set (groot, "defaultpatchcreatefcn", 'disp ("patch created!")'). 그래픽스 리스너 함수 작성 방법은 Callbacks 섹션 참고.

deletefcn: 문자열 | 함수 핸들, 기본 [](0x0)

패치가 삭제되기 직전에 실행되는 콜백 함수예요. 리스너 함수 작성 방법은 Callbacks 섹션 참고.

표시 (Display)

clipping: "off" | {"on"}

clipping"on"이면 패치가 부모 axes 한계 안에서 잘려요.

visible: "off" | {"on"}

visible"off"면 패치가 화면에 렌더링되지 않아요.

범례 옵션 (Legend Options)

displayname: 기본 ""

이 패치에 해당하는 범례 항목의 텍스트예요.

조명 (Lighting)

ambientstrength: 스칼라, 기본 0.3000

주변광(ambient light)의 세기예요. 0.0~1.0 사이 값.

backfacelighting: "lit" | {"reverselit"} | "unlit"

"lit": 법선을 그대로 조명에 사용해요. "reverselit": 법선을 항상 시점(view point) 쪽으로 향하게 해요. "unlit": 시점에서 멀어지는 법선을 가진 면은 조명을 받지 않아요.

diffusestrength: 스칼라, 기본 0.6000

난반사(diffuse reflection)의 세기예요. 0.0(난반사 없음)~1.0(완전 난반사) 사이 값.

facenormals: 기본 [](0x0)

edgelighting이나 facelighting 속성이 "flat"으로 설정되면 면 법선이 테두리나 면의 조명에 사용돼요. facenormals를 설정하면 facenormalsmode 속성도 "manual"로 강제 설정돼요.

facenormalsmode: {"auto"} | "manual"

이 속성이 "auto"면, edgelighting이나 facelighting 속성이 "flat"이고 같은 axes에 light 객체가 하나 이상 보이게 존재할 때 facenormals가 자동 계산돼요.

specularcolorreflectance: 스칼라, 기본 1

정반사 색(specular color)에 대한 반사도예요. 0.0(밑면 색)~1.0(광원 색) 사이 값.

specularexponent: 스칼라, 기본 10

정반사의 지수예요. 값이 낮을수록 반사가 더 넓게 퍼져요.

specularstrength: 스칼라, 기본 0.9000

정반사의 세기예요. 0.0(정반사 없음)~1.0(완전 정반사) 사이 값.

vertexnormals: 기본 [](0x0)

edgelighting이나 facelighting 속성이 "gouraud"로 설정되면 꼭짓점 법선이 테두리나 면의 조명에 사용돼요. vertexnormals를 설정하면 vertexnormalsmode 속성도 "manual"로 강제 설정돼요.

vertexnormalsmode: {"auto"} | "manual"

이 속성이 "auto"면, edgelighting이나 facelighting 속성이 "gouraud"이고 같은 axes에 light 객체가 하나 이상 보이게 존재할 때 vertexnormals가 자동 계산돼요.

마커 외형 (Marker Appearance)

marker: "*" | "+" | "." | "<" | ">" | "^" | "_" | "d" | "diamond" | "h" | "hexagram" | {"none"} | "o" | "p" | "pentagram" | "s" | "square" | "v" | "x" | "|"

line marker 속성 참고.

markeredgecolor: {"auto"} | "flat" | "none"

line markeredgecolor 속성 참고.

markerfacecolor: "auto" | "flat" | {"none"}

line markerfacecolor 속성 참고.

markersize: 스칼라, 기본 6

line markersize 속성 참고.

마우스 상호작용 (Mouse Interaction)

buttondownfcn: 문자열 | 함수 핸들, 기본 [](0x0)

리스너 함수 작성 방법은 Callbacks 섹션 참고.

contextmenu: 그래픽스 핸들, 기본 [](0x0)

현재 이 패치 객체와 연결된 uicontextmenu 객체의 그래픽스 핸들이에요.

hittest: "off" | {"on"}

패치가 마우스 이벤트를 처리할지, 아니면 객체의 조상으로 전달할지 지정해요. 활성화되면 객체가 마우스 클릭에 반응할 수 있어요. "buttondownfcn"을 평가하고, uicontextmenu를 표시하고, 결국 root "currentobject"가 될 수 있어요. 이 속성은 객체가 마우스 클릭을 받을 수 있을 때만 관련되며, 이는 "pickableparts" 속성으로 결정돼요. pickableparts 속성 참고.

pickableparts: "all" | "none" | {"visible"}

패치가 마우스 클릭을 받을지 지정해요. 기본적으로 pickableparts"visible"이고, 패치의 보이는 부분만(또는 그 자식만) 마우스 클릭에 반응할 수 있어요. "all"이면 보이는 부분과 보이지 않는 부분(또는 자식) 모두 반응할 수 있어요. "none"이면 객체에 대한 마우스 클릭을 무시하고 그 아래에 있는 객체에 전달해요. 객체가 마우스 클릭을 받도록 설정되면 "hittest" 속성이 클릭 처리 방식을 결정해요. hittest 속성 참고.

selected: {"off"} | "on"

이 패치가 선택되었는지 나타내는 속성이에요.

selectionhighlight: "off" | {"on"}

selectionhighlight"on"이면 패치의 선택 상태를 시각적으로 강조해요.

객체 식별 (Object Identification)

tag: 문자열, 기본 ""

그래픽 객체에 붙이는 사용자 정의 문자열이에요.

type (읽기 전용): 문자열

그래픽 객체의 클래스 이름이에요. type은 항상 "patch"예요.

userdata: 모든 Octave 데이터, 기본 [](0x0)

그래픽 객체와 연결할 사용자 정의 데이터예요.

윤곽선 외형 (Outline Appearance)

edgealpha: 스칼라 | 행렬, 기본 1

패치 객체에는 아직 투명도가 구현되지 않았어요. edgealpha는 사용되지 않아요.

edgecolor: colorspec | "none" | "flat" | "interp", 기본 [0 0 0]

패치 객체 테두리의 색이에요. 유효한 색 지정 또는 "none", "flat", "interp" 중 하나로 지정해요. "flat""interp""cdata"에 저장된 색 값 데이터를 사용해 각 테두리에 단일 색을 설정하거나 테두리 꼭짓점 사이에서 보간된 색을 설정해요. colorspec 참고.

edgelighting: "flat" | "gouraud" | {"none"} | "phong"

"none"이 아닌 값으로 설정하면 객체의 테두리를 빛과 그림자 효과로 그려요. 지원 값은 "none"(조명 효과 없음), "flat"(면마다 매끄럽지 않은 모습), "gouraud"(꼭짓점 사이 조명 효과의 선형 보간)예요. "phong"은 더 이상 권장되지 않으며 "gouraud"와 같은 효과를 내요.

linestyle: {"-"} | "--" | "-." | ":" | "none"

Line Styles 참고.

linewidth: 스칼라, 기본 0.5000

line linewidth 속성 참고.

부모/자식 (Parent/Children)

children (읽기 전용): 그래픽스 핸들 벡터, 기본 [](0x0)

패치 객체에는 아직 자식 객체가 구현되지 않았어요. children은 사용되지 않아요.

handlevisibility: "callback" | "off" | {"on"}

handlevisibility"off"면 패치의 핸들이 부모의 "children" 속성에 보이지 않아요.

parent: 그래픽스 핸들

부모 그래픽 객체의 핸들이에요.

더 알아보기

  • 패치 객체를 만드는 patch 함수를 함께 살펴보세요.
  • 색·선 스타일(colorspec, Line Styles)과 조명(light) 함수, Callbacks 섹션도 이어서 확인해 보세요.