不用delphi里面的函数,因为我用double型,有什么办法搞出算法来
急啊,希望可以给出代码

解决方案 »

  1.   

    去下载一个MicroDraw图形控件,里面有个IsPtInRect函数,可以处理double型的点。
      

  2.   

    http://www.faq-it.org/archives/structure/e6e2904511ce2434843b72ae76b0083a.php点与多边形的包含判定,代码
      

  3.   

    如果可以,你也可将 double类型,适当扩大,变为正数,再用
    PtInRegion之类的,那比较简单
      

  4.   

    还有一种办法:设要判断点P是否在矩形ABCD的里面?
    如果P在AB的左边,也在BC左边,也在CD左边,也在DA左边,则P在ABCD的里面;
    如果P在AB的右边,也在BC右边,也在CD右边,也在DA右边,则P也在ABCD的里面;
    否则P不在ABCD的里面.简单说,P在矩形ABCD四个边的同一侧,P在矩形ABCD的里面,否则不在里面.
      

  5.   

    P在AB的左边,当且仅当APxAB>0,其中APxAB代表向量AP,AB的叉乘(向量积).
      

  6.   

    function InsideRectangle(fX, fY, fX1, fY1, fX2, fY2: Double): Boolean;
    //功能描述: 判断某个点是否在某个矩形中
    //入口参数:
    //  fX, fY   - 点坐标
    //  fX1, fY1 - 矩形左上角坐标
    //  fX2, fY2 - 矩形右下角坐标
    //出口参数:
    //  返回值  - True表示在矩形中, False表示不在矩形中
    begin
      Result := (fX >= fX1) and (fx <= fX2) and (fY >= fY1) and (fY <= fY2);
    end;
      

  7.   

    判别P是否在矩形ABCD所有边的同一侧来判断点是否在矩形内的方法有一个优点,
    它可以推广到任意凸多边形.例如,判别P是否在下面的6边形内:
      1  2 
       
      。   。
    6。     。3
     。 P  。
     。   。   
     。
    5   4因P在6边形所有边(1-2,2-3,3-4,4-5,5-6,6-1)的右边,所以P在多边形内部;而  1  2 
       
      。   。
    6。     。3
     。    。
     。   。 P
     。
    5   4P在1-2,2-3,4-5,5-6,6-1的右边,但在3-4的左边,所以P不在6边形内部.
      

  8.   

    我推荐你一本书,<<计算几何>>是那个清华的人写大,周什么吧...我记不得了,我大学时候看的...很喜欢计算几何里的算法,很多我都动手写过,这实际上是一个点与多边形位置关系的算法...你可以在上面找到算法的原理,实际上很简单,但是我一句话两句话将不清楚.就是把所有点和多边形的位置关系列出来,然后再找其特点,从其坐标特点上判定点与多边形的位置.很好懂,不过程序写起来还是比较麻烦的...还是看懂它的思路弄代码过来比较好一些....