怎么判断一点是否在一个不规则的封闭的区域里
编号:QA003779
建立日期: 2001年1月17日 最后修改日期:2001年1月17日
所属类别:
千年虫:
操作系统:windows X
编程工具:vb6
问题:1.怎样记录一个不规则的图形的路径?一个封闭的不规则的图形的边界怎么记录,主要想实现对该区域重画和填充颜色。
2.怎么判断一点是否在一个不规则的封闭的区域里。希望高手能帮帮忙。
水平: 中级
回答:
zhangyang的意见:
我想图形学的知识可以解决这个问题:
1、可以使用把方向的矢量记录边界。分别可用8个数代表8个方向。而下一个点即是方向所指的点。
2、如果知道多边形的几个顶点,可以使用边线法(详见图形学),但是如果没有规则的话,或许可以使用填充法中的种子法。
希望会对你有帮助。
ljlearn的意见:
vb我不懂,但用C++ Builder成功实现。
1、建立一个链表,按顺序记录该封闭图形的所有拐点座标,重画时即可读进拐点座标作 LineTo(x1,y1),LineTo(x2,y2)。
2、填充有多种方法,低层的可用扫描线算法、种子算法等。最简单的可用 WinAPI函数 FloodFill , ExtFloodFill。
3、对于第二问,可在实现第一问的基础上,作如下判断:一、考虑多边形的一条边以及延长线构成的裁剪线。该线把平面分成两个部分,判断该点在线的哪一边。二、重复直到所有边的判断完成。
此问题由zhangyang等回答。
| |
|
|
| |
|
|