官方例程学习分享-angle_ll和angle_lx

一、求直线角度

①两条直线线之间角度:angle_ll()算子
②直线与水平轴之间的角度:angle_lx()算子

二、参数介绍

①angle_ll (RowA1, ColumnA1, RowA2, ColumnA2, RowB1, ColumnB1, RowB2, ColumnB2, Angle)
RowA1:直线A的起始点的行坐标
ColumnA1:直线A的起始点的列坐标
RowA2:直线A的结束点的行坐标
ColumnA2:直线A的结束点的列坐标
RowB1:直线B的起始点的行坐标
ColumnB1: 直线B的起始点的列坐标
RowB2: 直线B的结束点的行坐标
ColumnB2: 直线B的结束点的列坐标
Angle: 角度输出

②angle_lx (RowB1, ColumnB1, RowB2, ColumnB2, Angle)
RowB1:直线B的起始点的行坐标
ColumnB1: 直线B的起始点的列坐标
RowB2: 直线B的结束点的行坐标
ColumnB2: 直线B的结束点的列坐标
Angle: 角度输出

三、显示直线三个的算子

①disp_line (WindowID, RowA1, ColumnA1, RowA2, ColumnA2)
②gen_contour_polygon_xld (Contour1, [row1,row2], [col1, col2])
③gen_region_line (RegionLines, row1, col1, row2, col2)
前两者是亚像素级(XLD)精度,后者是像素级(Region)精度,效果如下图所示:
在这里插入图片描述

四、程序及注释

①angle_ll.hdev 程序

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowHandle)
row1 := 255
col1 := 10
row2 := 255
col2 := 501
dev_set_color ('black')
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
disp_line (WindowHandle, row1, col1, row2, col2)
row3 := 255
col3 := 255
for i := 0 to 360 by 1
    * 三角函数简单的计算
    row4 := 255 + sin(rad(i)) * 200
    col4 := 255 + cos(rad(i)) * 200
    disp_line (WindowHandle, row3, col3, row4, col4)
    * 主要就是学习这个两个直线角度的算子
    angle_ll (row1, col1, row2, col2, row3, col3, row4, col4, Angle)
    disp_message (WindowHandle, 'Angle: '+ deg(Angle) + ' i: ' + i, 'window', 255, 255, 'red', 'true')
endfor

②angle_lx.hdev 程序

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowHandle)
dev_set_color ('black')
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
row1 := 255
col1 := 10
row2 := 255
col2 := 501
* 使用disp_line()画出来的xld窗口放大缩小会消失,而采用gen_region_line()绘制的线(区域)就不会消失
* disp_line (WindowHandle, row1, col1, row2, col2)
* gen_region_line (RegionLines, row1, col1, row2, col2)
gen_contour_polygon_xld (Contour1, [row1,row2], [col1, col2])
row3 := 255
col3 := 255
for i := 0 to 360 by 1
    row4 := 255 + sin(rad(i)) * 200
    col4 := 255 + cos(rad(i)) * 200
    *disp_line (WindowHandle, row3, col3, row4, col4)
    * 但是画出来的region线是不太乐观的,虽然可以放大缩小,但可以使用
    * gen_contour_polygon_xld()绘制线条xld
    *gen_region_line (RegionLines, row3, col3, row4, col4)
     gen_contour_polygon_xld (Contour, [row3, row4], [col3, col4])
    * disp_line()和gen_contour_polygon()生成的线是一样的
    *disp_line (WindowHandle, row3, col3, row4, col4)
    angle_lx (row3, col3, row4, col4, Angle)
    disp_message (WindowHandle, rad(Angle), 'window', 12, 12, 'black', 'true')
endfor

在这里插入图片描述分析有不到位的,请各位点评指正~

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值