工控编程吧
标题:
halcon 几何相交函数介绍
[打印本页]
作者:
qq263946146
时间:
2019-5-29 00:29
标题:
halcon 几何相交函数介绍
1.intersection_circle_contour_xld(Contour : : CircleRow, CircleColumn, CircleRadius, CircleStartPhi, CircleEndPhi, CirclePointOrder : Row, Column)
intersection_circle_contour_xld计算圆或圆弧与XLD轮廓(
Contour
)的交点。
圆由它的中心(CircleRow,CircleColumn)和半径
CircleRadius确
定。
圆弧起点CircleStartPhi,终点CircleEndPhi,方向
CirclePointOrder。
如果将CirclePointOrder设置为“正”,则逆时针定义圆弧。
如果将CirclePointOrder设置为“负”,则按顺时针方向定义圆弧。
交点(如果有的话)在(Row, Column)中返回。
例程:
gen_contour_polygon_xld (Contour, [0,300], [0,300])
RowC:=200
ColC:=200
Radius:=30
StartPhi:=0
EndPhi:=rad(270)
PointOrder:='positive'
intersection_circle_contour_xld (Contour, RowC, ColC, Radius, StartPhi, EndPhi, PointOrder, Row, Column)
2.intersection_circles( : : Circle1Row, Circle1Column, Circle1Radius, Circle1StartPhi,
Circle1EndPhi, Circle1PointOrder, Circle2Row, Circle2Column, Circle2Radius, Circle2StartPhi,
Circle2EndPhi, Circle2PointOrder : Row, Column, IsOverlapping)
intersection_circles计算两个圆或圆弧的交点。
这些点(如果有的话)在(Row, Column)中返回。
圆分别由圆心(Circle1Row,Circle1Column)和(Circle2Row,Circle2Column)以及半径(radii Circle1Radius, Circle2Radius)定义。
此外,圆弧起点为(Circle1StartPhi,Circle2StartPhi),终点(Circle1EndPhi,Circle2EndPhi),方向(Circle1PointOrder,Circle2PointOrder)
如果将Circle1PointOrder设置为“正”,则逆时针定义圆弧。
如果将Circle1PointOrder设置为“负”,则按顺时针方向定义圆弧。
Circle2PointOrder和
Circle1PointOrder一样。
如果两个圆或圆弧都有一个公共部分isoverlap返回值1,否则返回0。
在这种情况下,公式弧的端点在( Row, Column)中返回。
例程:
RowC:=200
ColC:=200
Radius:=30
StartPhi:=0
EndPhi:=rad(270)
PointOrder:='positive'
intersection_circles (RowC, ColC, Radius, StartPhi,EndPhi, PointOrder,\
RowC+10, ColC+10, Radius, StartPhi,EndPhi, PointOrder, Row, Column, IsOverlapping)
3.intersection_contours_xld(Contour1, Contour2 : : IntersectionType : Row, Column, IsOverlapping)
intersection_contours_xld计算XLD Contour1和XLD Contour2的交点,如果有交点,则在(Row, Column)中返回。
IntersectionType中的值定义了计算交叉点的方法。
通过设置IntersectionType = 'self',只返回两个轮廓内的self交集,
即、Contour1和XLD Contour2中的交叉口。
对于IntersectionType = 'mutual',只考虑两个轮廓线之间的交点。
默认值是IntersectionType = 'all'。
在这种情况下,self和mutual计算结果都在 Row, Column中返回。
如果轮廓线的重叠
部分超过一个点,isoverlap返回值1,否则返回0。
不管IntersectionType中的设置是什么,isoverlap都是针对self和mutual进行设置的。
在mutual的情况下,相互段的端点在(Row, Column)中返回。
例程:
gen_contour_polygon_xld (Contour, [0,300], [0,300])
gen_contour_polygon_xld (Contour1, [0,300], [300,0])
intersection_contours_xld (Contour, Contour1, 'all', Row1, Column1, IsOverlapping1)
gen_cross_contour_xld (Cross, Row1, Column1, 6, 0.785398)
4.intersection_line_circle( : : LineRow1, LineColumn1, LineRow2, LineColumn2,
CircleRow, CircleColumn, CircleRadius, CircleStartPhi, CircleEndPhi, CirclePointOrder : Row, Column)
intersection_line_circle计算直线与圆或圆弧的交点。
直线由点(LineRow1,LineColumn1)和(LineRow2,LineColumn2)定义。
圆由它的中心(CircleRow,CircleColumn)和半径
CircleRadius
决定。
此外,圆弧起点为CircleStartPhi,终点CircleEndPhi,方向CirclePointOrder。
如果将CirclePointOrder设置为“正”,则逆时针定义圆弧。
如果将CirclePointOrder设置为“负”,则按顺时针方向定义圆弧。
交点(如果有的话)在(Row, Column)中返回。
例程:
Row:=0
Col:=0
Row2:=300
Col2:=300
RowC:=200
ColC:=200
Radius:=30
StartPhi:=0
EndPhi:=rad(270)
PointOrder:='positive'
intersection_line_circle (Row, Col, Row2, Col2, RowC, ColC, Radius, StartPhi, EndPhi, PointOrder, Row1, Column)
5.intersection_line_contour_xld(Contour : : LineRow1, LineColumn1, LineRow2, LineColumn2 : Row, Column, IsOverlapping)
intersection_line_contour_xld计算直线和XLD轮廓
Contour
的交点。
直线由点(LineRow1,LineColumn1)和(LineRow2,LineColumn2)定义。
交点(如果有的话)在(
Row, Column
)中返回。
如果XLD轮廓线的一部分位于直线上,则
IsOverlapping
返回值1,否则返回0。
XLD段的端点在(
Row, Column
)中返回。
例程:
Row:=0
Col:=0
Row2:=300
Col2:=300
gen_region_line (RegionLines, Row, Col, Row2, Col2)
RowC:=200
ColC:=200
Radius:=30
StartPhi:=0
EndPhi:=rad(270)
PointOrder:='positive'
gen_circle (Circle, RowC, ColC, Radius)
gen_contour_region_xld (Circle, Contours, 'border')
intersection_line_contour_xld (Contours, Row, Col, Row2, Col2, Row1, Column, IsOverlapping)
6.intersection_lines( : : Line1Row1, Line1Column1, Line1Row2, Line1Column2, Line2Row1,
Line2Column1, Line2Row2, Line2Column2 : Row, Column, IsOverlapping)
intersection_lines计算两条直线的交点,
这两条直线分别由它们的两个点(Line1Row1,Line1Column1)、(Line1Row2,Line1Column2)
和(Line2Row1,Line2Column1)、(Line2Row2,Line2Column2)定义。
交点(如果存在)在(Row, Column)中返回。
如果直线相同,isoverlap返回值1,否则返回0。
在这种情况下,在(Row, Column)中不返回交点。
例程:
Row:=0
Col:=0
Row2:=300
Col2:=300
gen_region_line (RegionLines, Row, Col, Row2, Col2)
gen_region_line (RegionLines1, 150, 0, 150, 300)
intersection_lines (Row, Col, Row2, Col2, 150, 0, 150, 300, Row3, Col3, IsOverlapping1)
7.intersection_segment_circle( : : SegmentRow1, SegmentColumn1, SegmentRow2, SegmentColumn2,
CircleRow, CircleColumn, CircleRadius, CircleStartPhi, CircleEndPhi, CirclePointOrder : Row, Column)
intersection_segment_circle计算线段与圆或圆弧的交点。
线段由它的端点(SegmentRow1,SegmentColumn1)和(SegmentRow2,SegmentColumn2)定义。
圆由它的中心(CircleRow,CircleColumn)和半径CircleRadius决定。
此外,圆弧起点是CircleStartPhi,终点CircleEndPhi,方向CirclePointOrder。
如果将CirclePointOrder设置为“正”,
则逆时针定义圆弧。
如果将CirclePointOrder设置为“负”,
则按顺时针方向定义圆弧。
交点(如果有的话)在(Row, Column)中返回。
例程:
Row:=0
Col:=0
Row2:=300
Col2:=300
Row11:=150
Col22:=0
Row33:=150
Col33:=300
gen_region_line (RegionLines, Row, Col, Row2, Col2)
gen_region_line (RegionLines1, Row11, Col22, Row33, Col33)
RowC:=200
ColC:=200
Radius:=30
StartPhi:=0
EndPhi:=rad(270)
PointOrder:='positive'
gen_circle (Circle, RowC, ColC, Radius)
gen_contour_region_xld (Circle, Contours, 'border')
intersection_segment_circle (Row, Col, Row2, Col2, RowC, ColC, Radius, StartPhi, EndPhi, PointOrder, Row1, Column)
8.intersection_segment_contour_xld(Contour : :
SegmentRow1, SegmentColumn1, SegmentRow2, SegmentColumn2 : Row, Column, IsOverlapping)
intersection_segment_contour_xld计算线段与XLD轮廓Contour 的交点。
线段由它的端点(SegmentRow1,SegmentColumn1)和(SegmentRow2,SegmentColumn2)定义。
交点(如果有的话)在(Row, Column)中返回。如果段和XLD轮廓有一个共同的部分,
isoverlap返回值1,否则返回0。
这种情况,公共段的端点在(Row, Column)中返回。
例程:
Row:=0
Col:=0
Row2:=300
Col2:=300
Row11:=150
Col22:=0
Row33:=150
Col33:=300
gen_region_line (RegionLines, Row, Col, Row2, Col2)
gen_region_line (RegionLines1, Row11, Col22, Row33, Col33)
RowC:=200
ColC:=200
Radius:=30
StartPhi:=0
EndPhi:=rad(270)
PointOrder:='positive'
gen_circle (Circle, RowC, ColC, Radius)
gen_contour_region_xld (Circle, Contours, 'border')
intersection_segment_contour_xld (Contours, Row, Col, Row2, Col2, Row3, Column1, IsOverlapping)
9.intersection_segment_line( : : SegmentRow1, SegmentColumn1, SegmentRow2, SegmentColumn2,
LineRow1, LineColumn1, LineRow2, LineColumn2 : Row, Column, IsOverlapping)
intersection_segment_line计算线段与直线的交点。
线段由它的端点(SegmentRow1,SegmentColumn1)和(SegmentRow2,SegmentColumn2)定义。
直线由两点(LineRow1,LineColumn1)和(LineRow2,LineColumn2)定义。
交点(如果存在)在(Row, Column)中返回。
如果线段和直线有一个共同的部分,isoverlap返回值1,否则返回0。
这种情况下,公共段的端点在(Row, Column)中返回。
例程:
Row:=0
Col:=0
Row2:=300
Col2:=300
Row11:=150
Col22:=0
Row33:=150
Col33:=300
gen_region_line (RegionLines, Row, Col, Row2, Col2)
gen_region_line (RegionLines1, Row11, Col22, Row33, Col33)
intersection_segment_line (Row, Col, Row2, Col2,Row11, Col22, Row33, Col33, Row1, Column, IsOverlapping1)
10.intersection_segments( : : Segment1Row1, Segment1Column1, Segment1Row2, Segment1Column2,
Segment2Row1, Segment2Column1, Segment2Row2, Segment2Column2 : Row, Column, IsOverlapping)
intersection_segment计算两个线段的交点,
这两个线段分别由它们的端点(Segment1Row1,Segment1Column1),
(Segment1Row2,Segment1Column2),
(Segment2Row1,Segment2Column1),
(Segment2Row2,Segment2Column2)定义。
交点(如果存在)在(Row, Column)中返回。如果两个段有一个共同的部分,
isoverlap返回值1,否则返回0。
这种情况下,公共段的端点在(Row, Column)中返回。
例程:
Row:=0
Col:=0
Row2:=300
Col2:=300
Row11:=150
Col22:=0
Row33:=150
Col33:=300
gen_region_line (RegionLines, Row, Col, Row2, Col2)
gen_region_line (RegionLines1, Row11, Col22, Row33, Col33)
intersection_segments (Row, Col, Row2, Col2, Row11, Col22, Row33, Col33, Row1, Column, IsOverlapping1)
[halcon]1[/halcon]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4