Main Content

polyshape

2차원 다각형 형태

설명

polyshape 함수는 2차원 꼭짓점에서 다각형과 같은 형태를 만듭니다. 그러나 다각형과 달리 polyshape에는 불연속 영역과 구멍이 있을 수 있습니다. polyshape 객체의 속성은 꼭짓점, 솔리드 영역, 구멍을 설명합니다.

예를 들어, pgon = polyshape([0 0 1 1],[1 0 0 1])은 4개의 점 (0,1), (0,0), (1,0), (1,1)로 정의되는 안이 채워진 정사각형을 만듭니다.

>> pgon = polyshape([0 0 1 1],[1 0 0 1])
pgon = 

  polyshape with properties:

      Vertices: [4×2 double]
    NumRegions: 1
      NumHoles: 0
>> plot(pgon)

Plot of a square polyshape

생성

polyshape 객체를 만들 때 사용자가 입력하는 꼭짓점은 하나 이상의 다각형 경계를 정의해야 하는데 이때 다각형의 경계가 서로 교차하지 않고 큰 경계가 온전히 작은 경계를 품도록 해야 합니다. 그러지 않으면 polyshape 함수는 잘 정의된 다각형을 만들기 위해 필요에 따라 입력 꼭짓점을 자동으로 변경합니다.

정다각형을 만들려면 nsidedpoly 함수를 사용할 수도 있습니다. nsidedpoly를 사용하면 중심점, 다각형의 변 길이와 같은 파라미터를 선택적으로 지정할 수 있습니다.

설명

pgon = polyshape()는 빈 polyshape 객체를 만듭니다.

예제

pgon = polyshape(x,y)는 x 좌표의 벡터와 여기에 대응하는 y 좌표의 벡터로 정의되는 2차원 꼭짓점에서 polyshape를 만듭니다. xy는 요소를 3개 이상 가진 같은 길이의 벡터여야 합니다.

예제

pgon = polyshape(P)는 N×2 행렬 P로 정의되는 2차원 꼭짓점으로부터 polyshape를 만듭니다. 여기서 N은 꼭짓점의 개수입니다. P의 첫 번째 열은 x 좌표를 정의하고 두 번째 열은 y 좌표를 정의합니다.

예제

pgon = polyshape(X,Y)XY가 x 좌표와 y 좌표에 대한 벡터로 구성된 1×M 셀형 배열일 때 M개의 경계를 가진 다각형을 만듭니다. X의 각 벡터는 이에 대응하는 Y의 벡터와 길이가 같아야 하지만 꼭짓점의 개수는 경계마다 다를 수 있습니다.

예제

pgon = polyshape(___,Name,Value)는 위에 열거된 구문에 polyshape 객체를 만들기 위한 추가 파라미터를 지정합니다.

입력 인수

모두 확장

다각형 꼭짓점의 x 좌표로, 벡터로 지정됩니다. 각 경계 사이에 NaN을 배치하여 한 번에 여러 경계의 좌표를 표현할 수 있습니다. 예를 들어, pgon = polyshape([0 0 1 NaN 1 5 5],[1 0 0 NaN 5 5 1])은 속이 채워진 2개의 삼각형으로 이루어진 polyshape를 만듭니다.

double형이 아닌 숫자형 입력 좌표는 자동으로 double형으로 변환됩니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

다각형 꼭짓점의 y 좌표로, 벡터로 지정됩니다. 각 경계 사이에 NaN을 배치하여 한 번에 여러 경계의 좌표를 표현할 수 있습니다. 예를 들어, pgon = polyshape([0 0 1 NaN 1 5 5],[1 0 0 NaN 5 5 1])은 속이 채워진 2개의 삼각형으로 이루어진 polyshape를 만듭니다.

double형이 아닌 숫자형 입력 좌표는 자동으로 double형으로 변환됩니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

다각형의 2차원 꼭짓점으로, 2열 행렬로 지정됩니다. P의 첫 번째 열은 꼭짓점의 x 좌표를 포함하고 두 번째 열은 y 좌표를 포함합니다. P는 최소 3갱의 행을 가져야 합니다.

각 경계 사이에 NaN을 배치하여 한 번에 여러 경계의 좌표를 표현할 수 있습니다. 예를 들어, pgon = polyshape([1 0; 0 0; 0 1; NaN NaN; 1 5; 5 5; 5 1])은 속이 채워진 2개의 삼각형으로 이루어진 polyshape를 만듭니다.

double형이 아닌 숫자형 입력 좌표는 자동으로 double형으로 변환됩니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

M개 경계의 x 좌표로, 벡터로 구성된 셀형 배열로 지정됩니다. 각 벡터의 길이는 다를 수 있으나 대응하는 y 벡터와는 길이가 같아야 합니다.

double형이 아닌 숫자형 입력 좌표는 자동으로 double형으로 변환됩니다.

데이터형: cell

M개 경계의 y 좌표로, 벡터로 구성된 셀형 배열로 지정됩니다. 각 벡터의 길이는 다를 수 있으나 대응하는 y 벡터와는 길이가 같아야 합니다.

double형이 아닌 숫자형 입력 좌표는 자동으로 double형으로 변환됩니다.

데이터형: cell

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: pgon = polyshape(P,'SolidBoundaryOrientation','ccw')

경계 방향으로, 'SolidBoundaryOrientation'과 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'auto' — 경계 중첩에 기반하여 경계 유형을 자동으로 결정합니다.

  • 'cw' — 시계 방향 꼭짓점 방향을 채워진 경계로 취급합니다.

  • 'ccw' — 반시계 방향 꼭짓점 방향을 채워진 경계로 취급합니다.

이 파라미터는 통상적으로 다각형 데이터가 다른 소프트웨어에 의해 특정 규칙을 사용하여 생성된 경우 일관성을 유지하기 위한 용도로 지정됩니다.

꼭짓점 수정 여부로, 'Simplify'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • true — 입력 꼭짓점이 교차 지점 또는 올바르지 않은 중첩을 생성하는 경우 잘 정의된 다각형을 생성하도록 다각형 꼭짓점을 변경합니다.

  • false — 교차 지점 또는 올바르지 않은 중첩 여부와과 상관없이 입력 꼭짓점을 변경하지 않습니다. 잘못 정의된 다각형으로 계산하면 부정확하거나 예기치 않은 결과가 나올 수 있습니다.

데이터형: logical

동일직선상의 꼭짓점으로, 'KeepCollinearPoints'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • falsepolyshape를 만들 때 다각형이 경계를 정의하는 데 필요한 가장 적은 수의 꼭짓점을 갖도록 동일직선상의 점을 제거합니다.

  • truepolyshape를 만들 때 모든 동일직선상의 점을 꼭짓점으로 유지합니다.

addboundary 또는 simplify 객체 함수를 사용하는 경우 polyshape를 만든 후에 'KeepCollinearPoints'의 값은 자동으로 이월됩니다.

데이터형: logical

속성

모두 확장

다각형의 2차원 꼭짓점으로, 2열 행렬로 지정됩니다. 꼭짓점 행렬은 다각형의 각 경계의 꼭짓점을 포함합니다. NaN 값은 각 경계의 꼭짓점 집합을 구분합니다.

데이터형: double

읽기 전용 속성입니다.

다각형을 이루는 영역 개수로, 정수 스칼라로 지정됩니다. 영역은 외부 경계 내의 부분으로, 완전하게 외부 경계 내부에 있는 구멍 경계를 포함할 수 있습니다.

데이터형: double

읽기 전용 속성입니다.

다각형에 있는 구멍 수로, 정수 스칼라로 지정됩니다.

데이터형: double

객체 함수

모두 확장

addboundaryAdd polyshape boundary
polybufferCreate buffer around points, lines, or polyshape objects
rmboundaryRemove polyshape boundary
rmholespolyshape에서 구멍 제거
rmsliversRemove polyshape boundary outliers
rotatepolyshape 회전
scalepolyshape 스케일링
simplifypolyshape 경계 단순화하기
sortboundariesSort polyshape boundaries
sortregionsSort polyshape regions
translatepolyshape 평행 이동
boundarypolyshape 경계의 꼭짓점 좌표
holespolyshape 구멍 경계를 polyshape 객체로 구성된 배열로 변환
isholeDetermine if polyshape boundary is a hole
isinteriorQuery points inside polyshape
issimplifiedDetermine if polyshape is well-defined
nearestvertexQuery nearest polyshape vertex
numboundariesNumber of polyshape boundaries
numsidesNumber of polyshape sides
overlapsDetermine whether polyshape objects overlap
plotpolyshape 플로팅하기
regionspolyshape 영역 액세스
areapolyshape의 면적
boundingboxpolyshape의 경계 상자
centroidpolyshape의 중심
convhullpolyshape의 볼록 껍질
perimeterpolyshape의 둘레
triangulationpolyshape 삼각분할
turningdistCompute turning distance between polyshape objects
intersectIntersection of polyshape objects
subtractDifference of two polyshape objects
unionUnion of polyshape objects
xorExclusive OR of two polyshape objects

예제

모두 축소

점 4개로 이루어진 다각형을 만들고 플로팅한 다음 면적, 둘레, 중심의 좌표를 구합니다.

pgon = polyshape([0 0 1 3], [0 3 3 0]);
plot(pgon)

Figure contains an axes object. The axes object contains an object of type polygon.

A = area(pgon)
A = 6
P = perimeter(pgon)
P = 10.6056
[Cx Cy] = centroid(pgon)
Cx = 1.0833
Cy = 1.2500

경계가 교차하는 다각형을 분석합니다.

경계에 자기교차가 일어나는 다각형을 만듭니다. 기본적으로 polyshape 함수는 잘 정의된 다각형을 만들기 위해 경계를 2개의 구분되는 경계로 분할합니다.

P = [0 0; 1 1; 1 0; 0 1; 0 0];
pgon = polyshape(P)
Warning: Polyshape has duplicate vertices, intersections, or other inconsistencies that may produce inaccurate or unexpected results. Input data has been modified to create a well-defined polyshape.
pgon = 
  polyshape with properties:

      Vertices: [7x2 double]
    NumRegions: 2
      NumHoles: 0

다각형을 플로팅하고 면적을 구합니다.

plot(pgon)

Figure contains an axes object. The axes object contains an object of type polygon.

A = area(pgon)
A = 0.5000

원래 입력 꼭짓점을 단순화하지 않으면 다각형을 이루는 2개의 삼각형 영역은 서로를 상쇄할 수 있습니다.

pgon2 = polyshape(P,'Simplify',false)
pgon2 = 
  polyshape with properties:

      Vertices: [4x2 double]
    NumRegions: 1
      NumHoles: 0

A2 = area(pgon2)
A2 = 0

경계 안에 경계를 품은 다각형을 분석합니다.

큰 경계 안에 작은 경계를 온전히 품은 다각형을 만듭니다. polyshape는 가장 바깥쪽에 있는 경계를 채워진 영역의 외부 경계로 정의합니다. 여기서 안쪽으로 들어갔을 때 마주치는 다음 경계가 구멍의 시작을 정의합니다.

t = 0.05:0.5:2*pi;
x1 = cos(t);
y1 = sin(t);
x2 = 0.5*cos(t);
y2 = 0.5*sin(t);
pgon = polyshape({x1,x2},{y1,y2})
pgon = 
  polyshape with properties:

      Vertices: [27x2 double]
    NumRegions: 1
      NumHoles: 1

plot(pgon)

Figure contains an axes object. The axes object contains an object of type polygon.

addboundary 함수를 사용하여 pgon에 세 번째 경계이자 바깥쪽 경계를 추가하는 두 번째 다각형을 만듭니다.

x3 = 2*cos(t);
y3 = 2*sin(t);
pgon2 = addboundary(pgon,x3,y3)
pgon2 = 
  polyshape with properties:

      Vertices: [41x2 double]
    NumRegions: 2
      NumHoles: 1

plot(pgon2)

Figure contains an axes object. The axes object contains an object of type polygon.

세 번째이자 바깥쪽 경계를 추가하려면 polyshape가 새로운 중첩 패턴을 기준으로 채워진 영역의 경계와 구멍 경계를 재구성해야 합니다. 이번에도 polyshape는 채워진 영역이 시작됨을 알리는 가장 바깥쪽에 있는 경계에서 시작하여 중첩된 경계가 많아지는 만큼 안쪽으로 들어가면 구멍과 채워진 영역 사이를 오가게 됩니다. 새로운 다각형은 2개의 채워진 영역과 1개의 구멍을 가집니다.

확장 기능

스레드 기반 환경
MATLAB®의 backgroundPool을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool을 사용해 코드 실행 속도를 높일 수 있습니다.

버전 내역

R2017b에 개발됨

참고 항목

|