图形操作算法

bluecc 2002-09-02 09:31:00
现有一组直线,知道直线的两端点坐标,相交组成网格,网格形状不定,可能为三角形或四边形.知道网格中的一点<即用鼠标点击网格中一点>,要求出组成该网络的各边的直线.
...全文
29 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdspower 2002-11-08
  • 打赏
  • 举报
回复
我觉得这个问题应该有比较好的解决办法,基本思路就是记录下确定的各个网格(网格的确定依据这样的算法,首先线条是有序的,则起码要到第三条线开始才能确定第一个网格,而没增加一条线可增加的网格只有两种类型,一个就是切分已有网格,一个就是独立的新网格,这样可以用一个多二叉树来描述各个网格了,这样在判断点的时候可以通过搜索树来完成)
zzwu 2002-10-20
  • 打赏
  • 举报
回复
较好的办法是求出由直线组成的所有的多边形,这样,只要依次判别点在那一多边形就可以了.
bluecc 2002-10-15
  • 打赏
  • 举报
回复
这个方法不错,但是在预先确定Tn时每个网格内的点怎么定.而且网格的个数也是未知的.
bluecc 2002-10-14
  • 打赏
  • 举报
回复
TO Wugifer() :你的方法是可行的,但是计算太大,每算一次都必须遍历所有直线,恐怕会很慢的.而且要计算直线和多边形的交点好象也很麻烦
Wugifer 2002-10-14
  • 打赏
  • 举报
回复
另一种方法:
预先求出n条直线的方程fn(x,y)=ax+by+c=0,
令gn(x,y)= 1 if fn(x,y)>0;-1 if fn(x,y)<0 ,
则每个备选的网格对应的{g1(x,y),...,gn(x,y)}序列可确定下来,记为Tn.每两个网格的Tn均不相同。
以上操作均可预先做完。

对每个点(x,y),计算{g1(x,y),...,gn(x,y)},与各Tn比较即可。
systree 2002-10-12
  • 打赏
  • 举报
回复
如果直线不变化,而要持续点击
就先将点击平面分割成以序列的方块,然后计算每个方块涉及的直线


计算点在每条直线的哪一边,继续求直线的交点就可以
wtzyb4446 2002-10-11
  • 打赏
  • 举报
回复
非数学算法可以用图形学中的漫水法填充的思想,要求直线的颜色与其他地方的颜色不一样。从选取的点开始,向四周找相同颜色的点,直到找到四周不同颜色的点,有了这些点就可以求直线了。
Wugifer 2002-10-11
  • 打赏
  • 举报
回复
假定 参考点 不在任何直线上:
1. 构造足够大的矩形,使得所有直线的交点都在矩形内部,记为凸多边形S;
2. 依次枚举每一条直线:计算直线与 S 的交点,S至多被分割为2个小凸多边形,选择包含 参考点 的小凸多边形为新的S;
3. 枚举完后,S即为所求。
xiaonian_3654 2002-10-10
  • 打赏
  • 举报
回复
我补充一下吧,如果这个点落在边上,就求两个网格,
如果落在网格公共顶点上上的,就求这几个网格,
toulouse 2002-10-10
  • 打赏
  • 举报
回复
GZ
alidiedie 2002-09-07
  • 打赏
  • 举报
回复
比一般的图形拾取算法复杂多了.
偶得想想
bluecc 2002-09-03
  • 打赏
  • 举报
回复
最好是数学上的解
你说的这种方法具体怎么做法
weya 2002-09-03
  • 打赏
  • 举报
回复
如果你不是想要得到纯数学上的解的话,用种子染色法试试。
bluecc 2002-09-03
  • 打赏
  • 举报
回复
这个问题先不考虑,能求出边界再说.
qiuyang_wang 2002-09-02
  • 打赏
  • 举报
回复
如果鼠标正好点在线上该怎么办?

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧