开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

12
返回列表 发新帖
楼主: 超级奶霸
收起左侧

[已解决] 已知ab 求d点左边算法

 关闭 [复制链接]

结帖率:55% (16/29)
 楼主| 发表于 2025-12-21 23:42:13 | 显示全部楼层   河北省沧州市
谁无聊把算法写出来 答案就给谁了
回复

使用道具 举报

结帖率:97% (91/94)

签到天数: 11 天

发表于 2025-12-21 23:43:45 | 显示全部楼层   江苏省常州市
有bc点求d才合理吧  除非a和c与b相隔是一样的  这样可以a反推然后取d
回复

使用道具 举报

结帖率:55% (16/29)

签到天数: 5 天

 楼主| 发表于 2025-12-21 23:44:15 | 显示全部楼层   河北省沧州市
你送的花开了 发表于 2025-12-21 23:43
有bc点求d才合理吧  除非a和c与b相隔是一样的  这样可以a反推然后取d

已解决:我的思路是,a点和b点拉一个平行线,然后再a下面找到b的平行线点,计算一下差值,就得到了d点的坐标了
回复

使用道具 举报

结帖率:97% (91/94)

签到天数: 11 天

发表于 2025-12-21 23:49:39 | 显示全部楼层   江苏省常州市
超级萌新 发表于 2025-12-21 23:44
已解决:我的思路是,a点和b点拉一个平行线,然后再a下面找到b的平行线点,计算一下差值,就得到了d点的 ...

解决那就不发了  
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 12 天

发表于 2025-12-21 23:49:42 | 显示全部楼层   重庆市重庆市
示例.png
早知道我去睡觉了
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
点B_X整数型基准点X
点B_Y整数型基准点Y
斜率双精度小数型核心参数 tan(30°) ≈ 0.577

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
' 初始化参数
' 在很多2.5D游戏中,斜率通常是 0.577 (标准30度) 或者 0.5 (2:1像素排列)
' 你可以根据实际游戏微调这个值
斜率 = 0.577
' 初始化画板属性
画板1.自动重画 = 真
画板1.画笔粗细 = 2
' 设置初始提示
点B_X = -1
重画场景 (0)
窗口_置标题 (取窗口句柄 (), “算法演示:点击设定B点,移动鼠标模拟寻找D点”)
子程序名返回值类型公开备 注
_画板1_鼠标左键被按下逻辑型 
参数名类 型参考可空数组备 注
横向位置整数型
纵向位置整数型
功能键状态整数型
' 1. 设定 B 点坐标(模拟图中中间的红点)
点B_X = 横向位置
点B_Y = 纵向位置
' 强制重画
重画场景 (纵向位置)
子程序名返回值类型公开备 注
_画板1_鼠标位置被移动逻辑型 
参数名类 型参考可空数组备 注
横向位置整数型
纵向位置整数型
功能键状态整数型
' 只有当B点设定后才进行计算
如果真 (点B_X ≠ -1)
' 传入鼠标当前的Y坐标,模拟“图色查找”找到的目标Y
重画场景 (纵向位置)

子程序名返回值类型公开备 注
重画场景  
参数名类 型参考可空数组备 注
当前鼠标Y整数型
变量名类 型静态数组备 注
目标D_X整数型 
目标D_Y整数型 
高度差整数型 
水平距离双精度小数型 
演示A_X整数型 
演示A_Y整数型 
' 1. 清空画布
画板1.清除 (, , , )
' 如果还没设置B点,只显示提示
如果真 (点B_X = -1)
画板1.定位写出 (10, 10, “请在画板任意位置点击,确定基准点 b”)
返回 ()

' ---------------------------------------------------------
' 核心计算逻辑 START
' ---------------------------------------------------------
' 假设当前鼠标的Y就是目标行的Y (Dy)
目标D_Y = 当前鼠标Y
' 计算高度差 (Dy - by)
高度差 = 目标D_Y - 点B_Y
' 根据公式:宽度 = 高度 / 斜率
' 取绝对值计算距离,然后根据方向加减
水平距离 = 取绝对值 (高度差) ÷ 斜率
' 计算 D点 X坐标
' 这里假设目标在右侧(如果高度差是正数,也就是向下)
如果 (高度差 ≥ 0)
目标D_X = 点B_X + 水平距离  ' 向右下延伸
目标D_X = 点B_X + 水平距离  ' 向右上延伸 (根据实际情况,有些游戏是左右对称)
' 如果你要做双向判断,需要判断鼠标在B的左边还是右边,这里演示默认向右

' ---------------------------------------------------------
' 核心计算逻辑 END
' ---------------------------------------------------------
' --- 以下均为绘图代码,用于可视化演示 ---
' 1. 画 垂直参考线 (模拟穿过 a b 的线)
演示A_X = 点B_X
演示A_Y = 点B_Y - 100  ' 假想一个 a 点在 b 上方
画板1.画笔颜色 = #黑色
画板1.画直线 (演示A_X, 演示A_Y - 50, 点B_X, 点B_Y + 200)  ' 垂直长线
' 2. 画 b 点 (红色圆点)
画板1.画笔颜色 = #红色
画板1.画椭圆 (点B_X - 4, 点B_Y - 4, 点B_X + 4, 点B_Y + 4)
画板1.定位写出 (点B_X + 10, 点B_Y, “b 点 (已知)”)
' 3. 画 a 点 (仅做示意)
画板1.画椭圆 (演示A_X - 4, 演示A_Y - 4, 演示A_X + 4, 演示A_Y + 4)
画板1.定位写出 (演示A_X + 10, 演示A_Y, “a 点”)
' 4. 画 目标水平线 (模拟穿过 D 的线)
画板1.画笔颜色 = #蓝色
画板1.画直线 (0, 目标D_Y, 画板1.宽度, 目标D_Y)
画板1.定位写出 (10, 目标D_Y - 20, “目标行扫描线 (模拟图色查找结果) Y=”到文本 (目标D_Y))
' 5. 画 斜率辅助线 (连接 b 和 D)
画板1.画笔颜色 = #绿色
画板1.画直线 (点B_X, 点B_Y, 目标D_X, 目标D_Y)
' 6. 画 D 点 (计算结果)
画板1.刷子颜色 = #黄色
画板1.画椭圆 (目标D_X - 6, 目标D_Y - 6, 目标D_X + 6, 目标D_Y + 6)
画板1.刷子颜色 = #白色  ' 恢复
' 7. 显示计算数据
画板1.文本颜色 = #红色
画板1.定位写出 (目标D_X + 10, 目标D_Y + 10, “D点 (计算得出)”)
画板1.文本颜色 = #黑色
画板1.定位写出 (10, 30, “高度差(H): ”到文本 (高度差))
画板1.定位写出 (10, 50, “斜率(k): ”到文本 (斜率))
画板1.定位写出 (10, 70, “计算公式: W = H / k”)
画板1.定位写出 (10, 90, “水平距离(W): ”到文本 (取整 (水平距离)))
画板1.定位写出 (10, 110, “D点坐标: ”到文本 (目标D_X)“,”到文本 (目标D_Y))
子程序名返回值类型公开备 注
_按钮1_被单击  


回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 12 天

发表于 2025-12-21 23:50:18 | 显示全部楼层   重庆市重庆市
示例.png
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
点B_X整数型基准点X
点B_Y整数型基准点Y
斜率双精度小数型核心参数 tan(30°) ≈ 0.577

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
' 初始化参数
' 在很多2.5D游戏中,斜率通常是 0.577 (标准30度) 或者 0.5 (2:1像素排列)
' 你可以根据实际游戏微调这个值
斜率 = 0.577
' 初始化画板属性
画板1.自动重画 = 真
画板1.画笔粗细 = 2
' 设置初始提示
点B_X = -1
重画场景 (0)
窗口_置标题 (取窗口句柄 (), “算法演示:点击设定B点,移动鼠标模拟寻找D点”)
子程序名返回值类型公开备 注
_画板1_鼠标左键被按下逻辑型 
参数名类 型参考可空数组备 注
横向位置整数型
纵向位置整数型
功能键状态整数型
' 1. 设定 B 点坐标(模拟图中中间的红点)
点B_X = 横向位置
点B_Y = 纵向位置
' 强制重画
重画场景 (纵向位置)
子程序名返回值类型公开备 注
_画板1_鼠标位置被移动逻辑型 
参数名类 型参考可空数组备 注
横向位置整数型
纵向位置整数型
功能键状态整数型
' 只有当B点设定后才进行计算
如果真 (点B_X ≠ -1)
' 传入鼠标当前的Y坐标,模拟“图色查找”找到的目标Y
重画场景 (纵向位置)

子程序名返回值类型公开备 注
重画场景  
参数名类 型参考可空数组备 注
当前鼠标Y整数型
变量名类 型静态数组备 注
目标D_X整数型 
目标D_Y整数型 
高度差整数型 
水平距离双精度小数型 
演示A_X整数型 
演示A_Y整数型 
' 1. 清空画布
画板1.清除 (, , , )
' 如果还没设置B点,只显示提示
如果真 (点B_X = -1)
画板1.定位写出 (10, 10, “请在画板任意位置点击,确定基准点 b”)
返回 ()

' ---------------------------------------------------------
' 核心计算逻辑 START
' ---------------------------------------------------------
' 假设当前鼠标的Y就是目标行的Y (Dy)
目标D_Y = 当前鼠标Y
' 计算高度差 (Dy - by)
高度差 = 目标D_Y - 点B_Y
' 根据公式:宽度 = 高度 / 斜率
' 取绝对值计算距离,然后根据方向加减
水平距离 = 取绝对值 (高度差) ÷ 斜率
' 计算 D点 X坐标
' 这里假设目标在右侧(如果高度差是正数,也就是向下)
如果 (高度差 ≥ 0)
目标D_X = 点B_X + 水平距离  ' 向右下延伸
目标D_X = 点B_X + 水平距离  ' 向右上延伸 (根据实际情况,有些游戏是左右对称)
' 如果你要做双向判断,需要判断鼠标在B的左边还是右边,这里演示默认向右

' ---------------------------------------------------------
' 核心计算逻辑 END
' ---------------------------------------------------------
' --- 以下均为绘图代码,用于可视化演示 ---
' 1. 画 垂直参考线 (模拟穿过 a b 的线)
演示A_X = 点B_X
演示A_Y = 点B_Y - 100  ' 假想一个 a 点在 b 上方
画板1.画笔颜色 = #黑色
画板1.画直线 (演示A_X, 演示A_Y - 50, 点B_X, 点B_Y + 200)  ' 垂直长线
' 2. 画 b 点 (红色圆点)
画板1.画笔颜色 = #红色
画板1.画椭圆 (点B_X - 4, 点B_Y - 4, 点B_X + 4, 点B_Y + 4)
画板1.定位写出 (点B_X + 10, 点B_Y, “b 点 (已知)”)
' 3. 画 a 点 (仅做示意)
画板1.画椭圆 (演示A_X - 4, 演示A_Y - 4, 演示A_X + 4, 演示A_Y + 4)
画板1.定位写出 (演示A_X + 10, 演示A_Y, “a 点”)
' 4. 画 目标水平线 (模拟穿过 D 的线)
画板1.画笔颜色 = #蓝色
画板1.画直线 (0, 目标D_Y, 画板1.宽度, 目标D_Y)
画板1.定位写出 (10, 目标D_Y - 20, “目标行扫描线 (模拟图色查找结果) Y=”到文本 (目标D_Y))
' 5. 画 斜率辅助线 (连接 b 和 D)
画板1.画笔颜色 = #绿色
画板1.画直线 (点B_X, 点B_Y, 目标D_X, 目标D_Y)
' 6. 画 D 点 (计算结果)
画板1.刷子颜色 = #黄色
画板1.画椭圆 (目标D_X - 6, 目标D_Y - 6, 目标D_X + 6, 目标D_Y + 6)
画板1.刷子颜色 = #白色  ' 恢复
' 7. 显示计算数据
画板1.文本颜色 = #红色
画板1.定位写出 (目标D_X + 10, 目标D_Y + 10, “D点 (计算得出)”)
画板1.文本颜色 = #黑色
画板1.定位写出 (10, 30, “高度差(H): ”到文本 (高度差))
画板1.定位写出 (10, 50, “斜率(k): ”到文本 (斜率))
画板1.定位写出 (10, 70, “计算公式: W = H / k”)
画板1.定位写出 (10, 90, “水平距离(W): ”到文本 (取整 (水平距离)))
画板1.定位写出 (10, 110, “D点坐标: ”到文本 (目标D_X)“,”到文本 (目标D_Y))
子程序名返回值类型公开备 注
_按钮1_被单击  


回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 12 天

发表于 2025-12-21 23:50:36 | 显示全部楼层   重庆市重庆市
示例.png
回复

使用道具 举报

结帖率:55% (16/29)

签到天数: 5 天

 楼主| 发表于 2025-12-22 00:01:43 | 显示全部楼层   河北省沧州市

已知x=443 y=262  角度是30度
那么对于的x点189的y点值是115.35
回复

使用道具 举报

结帖率:55% (16/29)

签到天数: 5 天

 楼主| 发表于 2025-12-22 00:01:56 | 显示全部楼层   河北省沧州市
z573277679 发表于 2025-12-21 23:52
我不行了,发了几遍源码都被吞了

已知x=443 y=262  角度是30度
那么对于的x点189的y点值是115.35
d搞定 睡觉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表