Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

polyshape

설명

polyshape 함수는 2차원 꼭짓점으로 정의되는 다각형을 만들고 다각형의 꼭짓점, 채워진 영역, 구멍을 설명하는 속성을 갖는 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)

생성

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

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 작은따옴표(' ') 안에 표시해야 합니다. Name1,Value1,Name2,Value2와 같이 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 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
rmholesRemove holes in polyshape
rmsliversRemove polyshape boundary outliers
rotatepolyshape 회전
scaleScale polyshape
simplifySimplify polyshape boundaries
sortboundariesSort polyshape boundaries
sortregionsSort polyshape regions
translateTranslate polyshape
boundaryVertex coordinates of polyshape boundary
holesConvert polyshape hole boundaries to array of polyshape objects
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
plotPlot polyshape
regionsAccess polyshape regions
areaArea of polyshape
boundingboxBounding box of polyshape
centroidpolyshape의 중심
convhullConvex hull of polyshape
perimeterPerimeter of polyshape
triangulationTriangulate polyshape
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. The axes 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. The axes 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. The axes 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. The axes contains an object of type polygon.

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

참고 항목

|

R2017b에 개발됨