求问一个表示直角多边形的数据结构

athlonliu 2010-01-24 03:10:37
求问一个数据结构,描述一个直角多边形(所有的内角都是直角的多边形);要求能够方便的进行特定边的平移,以及边的拆分操作。

以下是我的两种想法:
描述为一个点集和一个边集。这样比较容易进行平移等操作,但是比较难进行条件判断(即构造是判断是否是一个合法的直角多边形);

另一个方法是描述为若干个长方形的拼接。这样行为上面复杂一点。

大家有经验的给点意见吧
...全文
127 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wood87654321 2010-01-25
  • 打赏
  • 举报
回复
只需用一个循环队列表示这样的多边形,该队列必须顺序(顺时针或反时针)囊括多边形上的每个点。

如果你的平移是以边的编号作为输入参数的话,每个队列元素需要四项
int ptx; //多边形中某点的横坐标
int pty; //多边形中某点的纵坐标
int lid1; //该点所属的边1的编号
int lid2; //该点所属的边2的编号

判断合法性时只要依次循环检查每个点和其下一点的坐标,任何一对相邻坐标中,只要横、纵都不相同则整个多边形不合法

平移时则只需将包括相应边编号的元素中的点坐标按移动方向改变值即可

fenix124 2010-01-25
  • 打赏
  • 举报
回复
矩形可以用(left,top,width,height)来表示,平移,缩放非常方便
donkey301 2010-01-25
  • 打赏
  • 举报
回复
就用一般的多边形表示方法就行了。也就是
多边形-->边-->点
数据结构可以找一个支持泛型的链表,这样多边形由边组成、边由点组成都可以用这个链表表示。
athlonliu 2010-01-25
  • 打赏
  • 举报
回复
呵呵 说错了 是所有内角都是90度或者270度。就是可以看成是N个矩形拼合成的图形。
weiyong1011983 2010-01-25
  • 打赏
  • 举报
回复
一种思路可以讨论:

多边形=点*n;
所以先定义点数据结构,然后通过点构造多边形的结构;

多边形里面有多个点,可以简单的通过链表方式串联,进行一定排序,譬如按照顺时针或者逆时针方式排序。

之后数据信息就已经组织完毕,可以找点数学方面判断直角的方式(譬如y=a+kx,好像两个垂直的直线的k值有一定关系,忘记了,应该方法很多)

SambaGao 2010-01-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 longteng1116 的回复:]
所有的内角都是直角的多边形.....除了矩形和正方形,还有什么类型?
[/Quote]

就四边形吧
_千鸟 2010-01-24
  • 打赏
  • 举报
回复
所有的内角都是直角的多边形.....除了矩形和正方形,还有什么类型?

33,008

社区成员

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

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