一副图片,假如是bmp图片,该图片上有若干不规则的图形(都是黑色),其它区域是白色
在vc编程中,将该图片载入,如何快速判断给定的任意两个点之间的直线是否通过该图片中的黑色区域.

解决方案 »

  1.   

    1能不能对不规则物体进行分割, 变成多个规则物体(比如编程多个三角或者4边形), 然后普通的检测就比较容易了。2或者对物体进行参数化, 变成多个曲线的组合, 然后对曲线进行碰撞检测。3或者把每个黑像素当成一个四边(当圆形应该比较快,简单),省的预先分割,进行检测的时候可能比较慢了, 像素比较多嘛。4如果同一幅图需要检测多次, 可以在检测前对图片进行预处理, 作成 binary tree,可以解决3的速度问题。我觉得3,4 组合会不错
    1,2预处理可能会麻烦点,能实现应该也会比较快
      

  2.   

    图片是滚动播放的吧,
    首先取得图片的BYTE *databuf;
    直线画完(鼠标键UP事件)立即把直线映射到bmp上,
    取得直线上所有点坐标对应的BMPBuf[?],保存到另一个数组Index[];
    图片滚动时取出BMPBuf[Index[0]]......BMPBuf[Index[max]],进行判断,
    因为是对数组操作,速度还可以