c# 物体根据鼠标点击移动
答案:2 悬赏:20 手机版
解决时间 2021-01-26 11:28
- 提问者网友:聂風
- 2021-01-25 15:34
c# 物体根据鼠标点击移动
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-01-25 16:15
给个建议:
做这种包含数学参照系的程序,先建立参照系,水平和垂直法线,写好所有的象限变换,角度变换函数。
逻辑坐标和实际程序内坐标要区分开,变量命名规范不容易晕
涉及到物理计算的程序,先画好图再做,角度计算正确后,再通过逻辑坐标和程序内坐标计算。
追问其实也没有那么麻烦。。我就是想试试鼠标点击移动的效果 网上找了好久都找不到类似的效果的。。追答计算初始角度以及初始速度
当前球体坐标已知(x1,y1),球体半径已知(r),鼠标点击点的坐标已知(x2,y2),点击力量(f自己设定),点击时间(t,计算mouseUp和mouseDown之间的时间间隔)
初始角度α为:设定该角度为与水平方向顺时针角度的夹角,
Sinα=Abs(y1-y2)/(sqrt(x1-x2)^2+(y1-y2)^2);这里要注意判断x1,x2,y1,y2的大小关系,以及Sin值的正负关系,来确定方向。
初始速度v:ft=mv,这个就很简单了,t可以算,m已知,f自己设定,计算出来速度v即可
墙壁碰撞处理
上面计算出来了角度,在碰撞墙壁的时候有两种情况,一种是认为能量不损耗直接反弹,则没有什么额外处理,计算出反弹角度即可,小球速度不会变化。
另一种情况则认为碰撞墙壁有能量有损耗,还是能量守恒定律,mv1=mv2+损耗能量,损耗能量可以自己设定。角度的计算和第一种情况一样。
追问argsin和arccos算出角度了,但有个问题就是还有一点误差 如果全屏误差就小很多 不知道是怎么回事。追答你的碰撞处理是怎么做的?有没有考虑小球的半径?如果误差不大一般是边界没处理或者碰撞没处理好。追问如果碰到上下角度就=-角度 如果碰到左右就是角度=π-角度 。。不知道能不能留个QQ 我可以把源程序发给你可以看得更详细一点
做这种包含数学参照系的程序,先建立参照系,水平和垂直法线,写好所有的象限变换,角度变换函数。
逻辑坐标和实际程序内坐标要区分开,变量命名规范不容易晕
涉及到物理计算的程序,先画好图再做,角度计算正确后,再通过逻辑坐标和程序内坐标计算。
追问其实也没有那么麻烦。。我就是想试试鼠标点击移动的效果 网上找了好久都找不到类似的效果的。。追答计算初始角度以及初始速度
当前球体坐标已知(x1,y1),球体半径已知(r),鼠标点击点的坐标已知(x2,y2),点击力量(f自己设定),点击时间(t,计算mouseUp和mouseDown之间的时间间隔)
初始角度α为:设定该角度为与水平方向顺时针角度的夹角,
Sinα=Abs(y1-y2)/(sqrt(x1-x2)^2+(y1-y2)^2);这里要注意判断x1,x2,y1,y2的大小关系,以及Sin值的正负关系,来确定方向。
初始速度v:ft=mv,这个就很简单了,t可以算,m已知,f自己设定,计算出来速度v即可
墙壁碰撞处理
上面计算出来了角度,在碰撞墙壁的时候有两种情况,一种是认为能量不损耗直接反弹,则没有什么额外处理,计算出反弹角度即可,小球速度不会变化。
另一种情况则认为碰撞墙壁有能量有损耗,还是能量守恒定律,mv1=mv2+损耗能量,损耗能量可以自己设定。角度的计算和第一种情况一样。
追问argsin和arccos算出角度了,但有个问题就是还有一点误差 如果全屏误差就小很多 不知道是怎么回事。追答你的碰撞处理是怎么做的?有没有考虑小球的半径?如果误差不大一般是边界没处理或者碰撞没处理好。追问如果碰到上下角度就=-角度 如果碰到左右就是角度=π-角度 。。不知道能不能留个QQ 我可以把源程序发给你可以看得更详细一点
全部回答
- 1楼网友:妄饮晩冬酒
- 2021-01-25 17:26
这个看得有点头大。。。。
感觉这需求挺简单的,不明白为啥要用三角函数。
不过还不是很明白你的具体要求。追问就是球体碰到窗体边缘的时候反弹用了三角函数 还有就是鼠标点击的时候 我的思路是计算鼠标点击位置和球体位置的线段长度然后求角度。。结果数学功底太差 每次球都乱跑。。不知道这么说有没有感觉思路清晰点呢- -就是球体碰到窗体边缘的时候反弹用了三角函数 还有就是鼠标点击的时候 我的思路是计算鼠标点击位置和球体位置的线段长度然后求角度。。结果数学功底太差 每次球都乱跑。。不知道这么说有没有感觉思路清晰点呢- -追答直线哦,应该是简单的一次直线方程,不应该要用到三角函数吧。追问想不通。。点击之后没有角度球该怎么走额
感觉这需求挺简单的,不明白为啥要用三角函数。
不过还不是很明白你的具体要求。追问就是球体碰到窗体边缘的时候反弹用了三角函数 还有就是鼠标点击的时候 我的思路是计算鼠标点击位置和球体位置的线段长度然后求角度。。结果数学功底太差 每次球都乱跑。。不知道这么说有没有感觉思路清晰点呢- -就是球体碰到窗体边缘的时候反弹用了三角函数 还有就是鼠标点击的时候 我的思路是计算鼠标点击位置和球体位置的线段长度然后求角度。。结果数学功底太差 每次球都乱跑。。不知道这么说有没有感觉思路清晰点呢- -追答直线哦,应该是简单的一次直线方程,不应该要用到三角函数吧。追问想不通。。点击之后没有角度球该怎么走额
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯