[请教]怎样能求出一直线与一多边形的交点? 或者说一直线与一曲线的交点?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 知道直线就知道直线方程!直线方程的形式是f(x)=nx+y,把两个点代入x,y就可以知道n的值得到直线方程了。楼主既然知道了多边形的每个点,那么就可以通过计算点到直线的距离来辨别是否有交点了,当点到直线的距离小于一定的值或者等于0的时候,就可以认为这个点是在直线上的。 或者更精确的办法就是将多边形分为多个线段,计算每个线段和直线的交点,然后看这个交点是否在线段的范围内。(x>=left && x <= right && x >= top && x <= bottom)如果在范围内则此点就是交点的坐标,然后转换为比较接近的屏幕坐标。 看来办法真不少,我现在采取的方法是,判断直线上的点是否在多边形的域内,取第一个进域内或出域内的点。现在我想得到直线上点的集合,用y=nx+b;x自增的办法,x一次增多少合适呢? 如果得到了这些点,又怎样转换为比较接近的屏幕坐标呢?================================屏幕坐标都是整数,转换为整数就好了。你不是有直线方程么?用直线方程获得直线的点的集合,x从多边形的left开始到多边形的right结束,算出y的值,这就是在多边形范围内的直线在屏幕上点的集合。然后用这种方法算出多边形每一边的点的集合。然后找到这两个集合的交集。这个交集就是直线和多边形的交点,这个连坐标转换都不用。 vc 如何执行VBS脚本 怎么让字体放大后不出现锯齿 要在程序后台建立一个不受主程序及其他程序影响能精确循环采集AD卡的线程,如何处理为好? 求助!关于鼠标事件。 setsockopt在服务器端用了为什么不生效呢,我测试传数据时,把某一端的网络拔了,但还是无反应,估计就在recv一直停了,谁有源码帖出来看 IDispatch接口要自己实现吗? 关于类似VC中可设断点的编辑窗口 怎样对CListCtrl的内容进行排序 [WINSDK]有没有办法实现MFC窗口类的SetOwner() 用ADO调用存储过程时出现了一个错误 打开图像与创建文本冲突。 VS2005 C++工程中怎么去掉_AFXDLL
现在我想得到直线上点的集合,用y=nx+b;x自增的办法,x一次增多少合适呢?
================================
屏幕坐标都是整数,转换为整数就好了。你不是有直线方程么?用直线方程获得直线的点的集合,x从多边形的left开始到多边形的right结束,算出y的值,这就是在多边形范围内的直线在屏幕上点的集合。然后用这种方法算出多边形每一边的点的集合。然后找到这两个集合的交集。这个交集就是直线和多边形的交点,这个连坐标转换都不用。