# ProfileExtractCornerPoint3D

The ProfileExtractCornerPoint3D function allows you to extract corner points from a profile.

The ProfileExtractCornerPoint3D function requires an existing Profile3D structure as input. You can use the function to extract convex corner points, concave corner points, or both. The function extracts all corner points of the input profile that fit the defined criteria as individual Point3D structures.

3D Point Cloud with ProfileExtractCorner3D | Profile View

The ProfileExtractCornerPoint3D function also allows you to define an external ProfileFixture3D input, which ensures that the function extracts the same profile feature for each acquisition. The ProfileExtractCornerPoint3D function can use the profile fixture to align the Region of Interest in the profile, and produce consistent results regardless of positioning inconsistencies in the acquisition.

The ProfileExtractCornerPoint3D function produces a Point3D structure for each extracted corner point, that you can use as input for other functions.

## ProfileExtractCornerPoint3D Inputs

The ProfileExtractCornerPoint3D function has the following syntax:

ProfileExtractCornerPoint3D(Profile3D, ProfileFixture3D, ExternalProfileFixture3D, ProfileRegion, CornerType, MinCornerAngle, MaxCornerAngle, SegmentLength, SegmentSeparation, SortKey, SortOrder, Show)

See the table for a description of the available parameters.

Parameter | Description
External Profile | Specifies the Profile3D structure to use.
Profile Fixture | Specifies the coordinates defining the profile fixture. It is offset from the profile origin in the following format with the following arguments: {Xp, Zp, Angle}
X | Offset on the X-axis from the profile origin.
Z | Offset on the Z-axis from the profile origin.
Angle | Specifies the in-plane rotation in degrees around the Y-axis of the profile origin. The value range is 0 to 180.
Note: This parameter is only available if you set External Profile Fixture to 0.
External Profile Fixture | Specifies a reference to a ProfileFixture3D structure defined in another cell. The function uses the ProfileFixture3D cell as the profile fixture of the function. Set to 0 (OFF) to use the internal profile fixture of the function instead.
Profile Region | Specifies the dimensions, offset and angle for the Profile Region of the function. The Profile Region is offset from the profile origin or the external fixture in the following format with the following arguments: {SizeXp, SizeZp, Xp, Zp, Angle}
SizeXp | The size of the Profile Region along the profile X-axis.
SizeZp | The size of the Profile Region along the profile Z-axis.
Xp | Offset on the X-axis from the profile origin.
Zp | Offset on the Z-axis from the profile origin.
Angle | Specifies the in-plane rotation in degrees around the profile Z-axis. The value range is 0 to 180.
Corner Type | Specifies the corner type to be extracted: Convex (0) - extracts only convex corner points. Concave (1) - extracts only concave corner points. Any (2) - extracts both convex and concave corner points.
Minimum Corner Angle | Specifies the minimum angle in degrees for the function to identify a corner point. The value range is 0 to 180.
Maximum Corner Angle | Specifies the maximum angle in degrees for the function to identify a corner point. The value range is 0 to 180.
Segment Length | Specifies the length of the line segments that define the angle in a corner point. Default is 1.
Segment Separation | Specifies the amount of separation allowed between the line segments that define the angle in a corner point. Default is 0.
Sort Key | Specifies the way that the function indexes the extracted corner points and sorts the output table: None (0) Point Xp (2) - sorts the corners by coordinate value on the Xp-axis. Point Zp (3) - sorts the corners by coordinate value on the Zp-axis. Corner Angle (4) - sorts the corners by angle. Tangent Angle (5) - sorts the corners by the angle between the tangent line of the corner and the Xp-axis.
Sort Order | Specifies the order in which the function indexes the extracted corner points and sorts the output table: Descending (0) Ascending (1)
Show | Selects the type of graphics to overlay on the image.
0 = hide all (default) | All graphics are hidden, except when the cell containing the function is highlighted in the spreadsheet.
1 = result graphics only | The result graphics of the function are displayed at all times.
2 = input and result graphics | The region of interest, the input data and the results are displayed at all times.

## ProfileExtractCornerPoint3D Outputs

Returns | A ProfileCorners3D data structure, or #ERR if any of the input parameters are invalid.
Results | When initially inserted into a cell, the following functions are automatically inserted into the spreadsheet to create a result table:
| Num Found | Index | Corner | X | Y | Z | ...
❒ProfileCorners3D | GetNFound(ProfileCorners3D) | 0 | GetCorner(ProfileCorners3D,0) | GetX(ProfileCorners3D,0) | GetY(ProfileCorners3D,0) | GetZ(ProfileCorners3D,0) | ...
|  | 1 | GetCorner(ProfileCorners3D,1) | GetX(ProfileCorners3D,1) | GetY(ProfileCorners3D,1) | GetZ(ProfileCorners3D,1) | ...
|  | ... | ... | ... | ... | ... | ...
|  | N-1 | GetCorner(ProfileCorners3D,N-1) | GetX(ProfileCorners3D,N-1) | GetY(ProfileCorners3D,N-1) | GetZ(ProfileCorners3D,N-1) | ...
... | Corner Angle | Corner Type | Tangent Angle | Corner Segment 0 | Corner Segment 1
... | GetCornerAngle(ProfileCorners3D,0) | GetCornerType(ProfileCorners3D,0) | GetTangentAngle(ProfileCorners3D,0) | GetCornerSegment0(ProfileCorners3D,0) | GetCornerSegment1(ProfileCorners3D,0)
... | GetCornerAngle(ProfileCorners3D,1) | GetCornerType(ProfileCorners3D,1) | GetTangentAngle(ProfileCorners3D,1) | GetCornerSegment0(ProfileCorners3D,1) | GetCornerSegment1(ProfileCorners3D,1)
... | ... | ... | ... | ... | ...
... | GetCornerAngle(ProfileCorners3D,N-1) | GetCornerType(ProfileCorners3D,N-1) | GetTangentAngle(ProfileCorners3D,N-1) | GetCornerSegment0(ProfileCorners3D,N-1) | GetCornerSegment1(ProfileCorners3D,N-1)

## ProfileExtractCornerPoint3D Vision Data Access functions

The following ProfileCorners3D Vision Data Access functions are automatically inserted into the spreadsheet to create the result table:

Function | Description
GetNFound(ProfileCorners3D) | Returns the number of corners that the corner extraction function found in the profile.
GetCorner(ProfileCorners3D, index) | Returns a Point3D structure for the corner with the specified index in the corner extraction function.
GetX(ProfileCorners3D, index) | Returns the X coordinate in the 3D point cloud for the corner with the specified index in the corner extraction function.
GetY(ProfileCorners3D, index) | Returns the Y coordinate in the 3D point cloud for the corner with the specified index in the corner extraction function.
GetZ(ProfileCorners3D, index) | Returns the Z coordinate in the 3D point cloud for the corner with the specified index in the corner extraction function.
GetCornerAngle(ProfileCorners3D, index) | Returns the angle of the corner with the specified index in the corner extraction function.
GetCornerType(ProfileCorners3D, index) | Returns the type (convex or concave) of the corner with the specified index in the corner extraction function.
GetTangentAngle(ProfileCorners3D, index) | Returns the tangent angle of the corner with the specified index in the corner extraction function.
GetCornerSegment0(ProfileCorners3D, index) | Returns a Line3D structure for the first line segment used by the corner extraction function for defining the corner with the specified index.
GetCornerSegment1(ProfileCorners3D, index) | Returns a Line3D structure for the second line segment used by the corner extraction function for defining the corner with the specified index.