首先是线的方向是从左下到右上,与水平线夹角,所以角度范围是-Π/2到Π/2。
实例:
point1:=[100,100]
point2:=[200,200]
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_set_color ('yellow')
dev_set_line_width (3)
set_tposition (WindowHandle, 0, 0)
set_display_font (WindowHandle, 20, 'mono', 'true', 'false')
disp_arrow (WindowHandle, point1[0], point1[1], point2[0], point2[1], 1)
line_orientation (point1[0], point1[1], point2[0], point2[1], Phi)
degree:=deg(Phi)
write_string (WindowHandle, '角度为:'+degree)
dev_clear_window ()
disp_arrow (WindowHandle, point2[0], point2[1],point1[0], point1[1], 1)
line_orientation (point2[0], point2[1],point1[0], point1[1], Phi)
degree:=deg(Phi)
write_string (WindowHandle, '角度为:'+degree)
point3:=[100,300]
point4:=[200,200]
dev_clear_window ()
disp_arrow (WindowHandle, point3[0], point3[1], point4[0], point4[1], 1)
line_orientation (point3[0], point3[1], point4[0], point4[1], Phi)
degree:=deg(Phi)
write_string (WindowHandle, '角度为:'+degree)
dev_clear_window ()
disp_arrow (WindowHandle, point4[0], point4[1], point3[0], point3[1], 1)
line_orientation (point4[0], point4[1], point3[0], point3[1], Phi)
degree:=deg(Phi)
write_string (WindowHandle, '角度为:'+degree)
运行结果:
可以看到,角度与方向无关。
还有一个就是区域的角度,要求区域的角度,系统会先计算出区域的等效椭圆,椭圆的长轴与水平方向的夹角就是这个区域的角度。角度的范围是-Π到Π。
那么问题来了,-Π到Π合起来就是360度了,那么怎么确定角度是45度,还是-135度(假设)?那样就涉及到方向问题了,如果等效椭圆的长轴方向终点在水平轴下面,那么角度就是逆时针来计算;而如果终点在水平轴上面,那么角度就是按照顺时针计算。
实例
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
dev_set_color ('yellow')
dev_set_line_width (3)
set_tposition (WindowHandle, 0, 0)
set_display_font (WindowHandle, 20, 'mono', 'true', 'false')
dev_clear_window ()
draw_rectangle2 (WindowHandle, Row, Column, Phi1, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi1, Length1, Length2)
degree1:=deg(Phi1)
write_string (WindowHandle, '角度为:'+degree1)
首先画一个从左下到右上方向的带角度矩形。
运算结果:
然后再画一个从右上到左下的矩形。
运行结果: