패치 속성
패치 속성 (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 섹션도 이어서 확인해 보세요.