或者说一直线与一曲线的交点?谢谢!

解决方案 »

  1.   

    知道直线就知道直线方程!直线方程的形式是f(x)=nx+y,把两个点代入x,y就可以知道n的值得到直线方程了。楼主既然知道了多边形的每个点,那么就可以通过计算点到直线的距离来辨别是否有交点了,当点到直线的距离小于一定的值或者等于0的时候,就可以认为这个点是在直线上的。
      

  2.   

    或者更精确的办法就是将多边形分为多个线段,计算每个线段和直线的交点,然后看这个交点是否在线段的范围内。(x>=left && x <= right && x >= top && x <= bottom)如果在范围内则此点就是交点的坐标,然后转换为比较接近的屏幕坐标。
      

  3.   

    看来办法真不少,我现在采取的方法是,判断直线上的点是否在多边形的域内,取第一个进域内或出域内的点。
    现在我想得到直线上点的集合,用y=nx+b;x自增的办法,x一次增多少合适呢?
      

  4.   

    如果得到了这些点,又怎样转换为比较接近的屏幕坐标呢?
    ================================
    屏幕坐标都是整数,转换为整数就好了。你不是有直线方程么?用直线方程获得直线的点的集合,x从多边形的left开始到多边形的right结束,算出y的值,这就是在多边形范围内的直线在屏幕上点的集合。然后用这种方法算出多边形每一边的点的集合。然后找到这两个集合的交集。这个交集就是直线和多边形的交点,这个连坐标转换都不用。