最后一个问题(希望是):图形算法(98分)

  • 主题发起人 主题发起人 Beautygirl
  • 开始时间 开始时间
我就是不知道啊
 
呵呵,那你连接全部的目的和用途是什么?
 
画一个密闭图形,在里面填充颜色阿
 
那点怎么会没有顺序?你是怕原先画线后有相交把,所以想直接根据点来画封闭图形?
 
To htiyou
你有好的想法吗?
 
方案之一:
1、找到左上节点A
2、逆时针:给剩余且位于节点A左边(包括左下)的节点分区,并跳转到1
3、如果A左边只有一个了,直接连接,并连接右边的最下节点
4、找到剩余节点的右下边
4、逆时针:给剩余且位于节点A右边(包括右下)的节点分区,并跳转到4
5、完成
 
一种是全部画完在判断,另一种是每画一个点判断一下.无论那种都要写一个函数就是判断两个线段是否相交,然后循环调用,这样的算法你可以在网上搜搜,应该有现成的.
 
选择一个点比如A,通过A的X,Y的值找出离A最近的点B,再通过B的X,Y的值找出离B最近
点且不是A,依次就将他们moveto(x,y),lineto(x,y)
 
TO 清新空气
假如是下面的情况,你的方法就不合适:
o1 o2 o3

o4 o5 o6

o7
这个应该4点和7点相连,而4点和5点最近。
 
你的意思是不能有线交叉?
 
你可以根据 a*算法 演化一下, 就可以找到答案。 因为你的规则好像并不明确。
 
to 清新空气: 不能交叉
to duhai_lee: a*算法?不太懂呢
 
连起来的闭合图形应该是凸形
 
画一个坐标,然后自己想想该怎样连,算法就出来了。然后慢慢优化
 
。。。从画封闭曲线,到填充颜色,到颜色Alpha自由设置,到求点间最短距离……大概能知道楼主是在做类似GIS系统的东西。。。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
841
SUNSTONE的Delphi笔记
S
S
回复
0
查看
821
SUNSTONE的Delphi笔记
S
后退
顶部