本帖最后由 z13228604287 于 2021-9-26 20:21 编辑
操作方法:
鼠标左键点击三角形任意一个顶点并按住移动,由此可修改三角形。在键盘输入任意的键,可退出程序。 运行结果:
易语言实现:
窗口程序集名 | 保 留 | 保 留 | 备 注 | OPENCV | | | | 变量名 | 类 型 | 数组 | 备 注 | 点0 | 二维坐标数据结构d | | 点1 | 二维坐标数据结构d | | 点2 | 二维坐标数据结构d | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 底图 | 多维矩阵 | | | 图片 | 多维矩阵 | | | 蓝色 | 标量 | | | 绿色 | 标量 | | | 红色 | 标量 | | | 尺寸 | 尺寸数据结构i | | | a | 双精度小数型 | | | b | 双精度小数型 | | | c | 双精度小数型 | | |
点0. 赋值 (200, 500 )点1. 赋值 (400, 100 )点2. 赋值 (600, 500 )蓝色.通道1 = 255 绿色.通道2 = 255 红色.通道3 = 255 尺寸. 赋值 (15, 15 )视觉_创建窗口 (“小白鼠”, #窗口_自动尺寸 )底图. 构造Z (600, 800, #八位无符号整数_三通道, 255, 255, 255, 0 )视觉_设置鼠标事件 (“小白鼠”, &鼠标事件, 0 )循环判断首 ()底图. 克隆 (图片.指针 ) 视觉_线d (图片.指针, 点1, 点2, 蓝色, 2, 8, 0 )视觉_线d (图片.指针, 点2, 点0, 绿色, 2, 8, 0 )视觉_线d (图片.指针, 点1, 点0, 红色, 2, 8, 0 )判断 (同直线 (点0, 点1, 点2 )) 视觉_角d (图片.指针, 点0, 点1, 点2, 尺寸, 蓝色, 2, 8, 0 ) b = 计算角度 (点0, 点1, 点2 )视觉_放置文本Zi (图片.指针, “p0: (” + 到文本 (点1.横坐标 ) + “, ” + 到文本 (点1.纵坐标 ) + “) ” + 到文本 (b ), 10, 25, #字体_衬线_复杂, 0.5, 蓝色, 1, 8, 假)视觉_角d (图片.指针, 点1, 点2, 点0, 尺寸, 绿色, 2, 8, 0 ) c = 计算角度 (点1, 点2, 点0 )视觉_放置文本Zi (图片.指针, “p1: (” + 到文本 (点2.横坐标 ) + “, ” + 到文本 (点2.纵坐标 ) + “) ” + 到文本 (c ), 10, 50, #字体_衬线_复杂, 0.5, 绿色, 1, 8, 假)视觉_角d (图片.指针, 点2, 点0, 点1, 尺寸, 红色, 2, 8, 0 ) a = 计算角度 (点2, 点0, 点1 )视觉_放置文本Zi (图片.指针, “p2: (” + 到文本 (点0.横坐标 ) + “, ” + 到文本 (点0.纵坐标 ) + “) ” + 到文本 (a ), 10, 75, #字体_衬线_复杂, 0.5, 红色, 1, 8, 假)视觉_放置文本Zi (图片.指针, “Error”, 10, 25, #字体_衬线_复杂, 0.5, 红色, 1, 8, 假)视觉_显示图像 (“小白鼠”, 图片.指针 )循环判断尾 (视觉_等待按键 (3 ) = -1 )返回 (0 ) |
鼠标事件 | | | |
event | 整数型 | | | | x | 整数型 | | | | y | 整数型 | | | | flags | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局点0 | 二维坐标数据结构d | | | 局点1 | 二维坐标数据结构d | | | 局点2 | 二维坐标数据结构d | | | 步骤 | 整数型 | | | r0 | 矩形数据结构d | | | r1 | 矩形数据结构d | | | r2 | 矩形数据结构d | | | 判断 (event = #事件_按下左键 )局点1. 赋值 (x, y )r0. 赋值 (点0.横坐标 - 15, 点0.纵坐标 - 15, 30, 30 )r1. 赋值 (点1.横坐标 - 15, 点1.纵坐标 - 15, 30, 30 )r2. 赋值 (点2.横坐标 - 15, 点2.纵坐标 - 15, 30, 30 )判断 (r0. 包含 (局点1 )) 步骤 = 1 局点0 = 点0 判断 (r1. 包含 (局点1 )) 步骤 = 2 局点0 = 点1 如果真 (r2. 包含 (局点1 )) 步骤 = 3 局点0 = 点2 判断 (event = #事件_鼠标移动 )局点2. 赋值 (x, y )判断 (步骤 = 1 )点0.横坐标 = 局点0.横坐标 + 局点2.横坐标 - 局点1.横坐标 点0.纵坐标 = 局点0.纵坐标 + 局点2.纵坐标 - 局点1.纵坐标 判断 (步骤 = 2 )点1.横坐标 = 局点0.横坐标 + 局点2.横坐标 - 局点1.横坐标 点1.纵坐标 = 局点0.纵坐标 + 局点2.纵坐标 - 局点1.纵坐标 如果真 (步骤 = 3 )点2.横坐标 = 局点0.横坐标 + 局点2.横坐标 - 局点1.横坐标 点2.纵坐标 = 局点0.纵坐标 + 局点2.纵坐标 - 局点1.纵坐标 如果真 (event = #事件_释放左键 )局点1. 赋值 (0, 0 )局点2. 赋值 (0, 0 )步骤 = 0 |
同直线 | 逻辑型 | | |
局点0 | 二维坐标数据结构d | | | | 局点1 | 二维坐标数据结构d | | | | 局点2 | 二维坐标数据结构d | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | a | 双精度小数型 | | | b | 双精度小数型 | | | c | 双精度小数型 | | |
a = (局点0.纵坐标 - 局点1.纵坐标 )b = 局点2.横坐标 - 局点1.横坐标 c = (局点2.纵坐标 - 局点1.纵坐标 ) × 局点1.横坐标 (局点2.横坐标 - 局点1.横坐标 ) × 局点1.纵坐标 判断 (a × 局点0.横坐标 + b × 局点0.纵坐标 + c ≠ 0 )返回 (真)返回 (假)|
计算角度 | 双精度小数型 | | |
局点0 | 二维坐标数据结构d | | | | 局点1 | 二维坐标数据结构d | | | | 局点2 | 二维坐标数据结构d | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | a | 双精度小数型 | | | b | 双精度小数型 | | | c | 双精度小数型 | | |
a = 求平方根 (求次方 (局点2.横坐标 - 局点1.横坐标, 2 ) + 求次方 (局点2.纵坐标 - 局点1.纵坐标, 2 )) b = 求平方根 (求次方 (局点2.横坐标 - 局点0.横坐标, 2 ) + 求次方 (局点2.纵坐标 - 局点0.纵坐标, 2 )) c = 求平方根 (求次方 (局点1.横坐标 - 局点0.横坐标, 2 ) + 求次方 (局点1.纵坐标 - 局点0.纵坐标, 2 )) 返回 (求反余弦 ( (b × b + c × c - a × a ) ÷ (2 × b × c )) × 180 ÷ #pi )如果真 (余弦值 > 1 或 余弦值 < -1 )返回 (0 )返回 ( #pi ÷ 2 - 求反正弦 (余弦值))如果真 (正弦值 < -1 或 正弦值 > 1 )返回 (0 )返回 (求反正切 (正弦值 ÷ 求平方根 (1 - 正弦值 × 正弦值)))
链接:https://pan.baidu.com/s/1VSYkILerRQsoDiIhl-6eTQ
提取码:4ypk
复制这段内容后打开百度网盘手机App,操作更方便哦
|