C# 怎么判断点在线上?

来源:百度知道 编辑:UC知道 时间:2024/05/23 21:24:34
想法是这样,我用计时器控制一个点移动,同时用鼠标画线,当点移动到我画的线上时发生反射改变方向继续移动。(类似VISTA系统中自带的墨球小游戏)
问题1.怎么判断点在线上、2.怎么得到反射后的方向,或者横方向和纵方向偏移量。
最好能有举例代码
感谢lindylgm 的回答,你说的方法我之前也想到并且尝试过,首先一个最大的问题是如果我画一条竖线,代码中(point1.x - point2.x)是0,斜率没法算,程序会出错。
其次,画的线未必是直线,也可能是曲线,任取两点求斜率明显不行。我的想法是要取也只能取一个MouseMove事件发生前后的两点。
谢谢你的回答,谁有更好的办法呢?

我来回答你的第一个问题:
point1,point2//二线的点
point点
k=( point1.y - point2.y)/(point1.x -point2.x)//直线的斜率
k_dot = point1.y - point.y)/(point1.x - point.x)//移动点与直线上其中一个点的斜率
if(k_dot == k&&point.x>point1.x&&point.x<point2.x&&point.y>point1.y&&point.y<point2.y)
//斜率相同,并且坐标在直线空间上,则点在直线上.