比较麻烦的算法问题,不过自由发挥的空间很大(300分)

  • 主题发起人 主题发起人 ASCII
  • 开始时间 开始时间
A

ASCII

Unregistered / Unconfirmed
GUEST, unregistred user!
[brown]写清楚好费事,不知大家能看懂吗:-)
在直角坐标系中有一组线段,这些线段其端点的集合S可被划分为两个子集S1,S2,每个子集
都符合这样条件:所有元素其y轴上的坐标相同,但是找不到其x轴坐标相同两个元素。且在
S1中任意取一点a,都可以在S2中找到唯一对应的一点b,a与b正好是某条线段的两个端点。S
也可以划分为两个子集S1`,S2`,其中在S1`中任意取一点a`在S2`中可以找到唯一对应的一
个点b`,a`和b`满足这样的条件:其x轴上的坐标相同。这些线段多数情况下有交叉现象,但
是对于我们来说,这并不影响观察者区分各个线段。假如我们把这些线段中的斜线(两端点x
轴坐标不同的线段)用折线来代替,代替方法是用三条与坐标轴平行且首尾相连的线段来表
示,如:线段(10,10;60,60)可以用(10,10;10,30)、(10,30;60,30)、(60,30;60,60)来代
替,当然,其中的30这个数也可以是20,40等,但是不能小于等于10也不能大于等于60。这
样一来,观察者在看到许多折线组成的图形时就可能头晕,因为许多折线出现了重复的地
方。我的问题是找到怎样一种算法,使得替换斜线的折线之间取除重复部分,让观察者看到
这些折线组成的图形同看到斜线组成的图形一样一目了然。
(10,10) (10,10)
/ |
/ |
/ |
/ ---> -----------
/ |
/ |
(60,60) (60,60)
斜线替换成折线的过程
[/brown]
 
感觉上是不是想把折线统计图变成条形统计图啊。
我想先把要转变成的线段的端点保存到数组中,程序中避免有重复的端点,同时要避免两个端点之间的部分重叠,处理玩了再绘出线段。问题的关键是如何选定折点
 
To iamy:
>>感觉上是不是想把折线统计图变成条形统计图啊。
不是
>>问题的关键是如何选定折点
是的
我的意思是如果有两条斜线有交叉的话,将这两条用折线替换之后,他们的重复部分还是
只有一个点,而不是一节线段。
如:
/ /
/ /
/
/ /
/ /
应该替换成形如的图:
│ ┌──
│ │
│ │
└──┼─┐
│ │
───┘ │
而不是:
│ │
│ │
├────┤
│ │
│ │

........,强烈要求大富翁增加绘图功能!!!
 
呵呵,用文字绘图是有点难啊。
生成图的交叉点不需要和原来的交叉点重合吧?
 
不需要重合,只要能够区分出来是两条独立的折线就行了。
 
我想可以先预生成折点的坐标,比如
从(0,0)到(100,100)
可以根据实际情况来确定要折几次。比如现在分成
(0,0)~(25,25)~(50,50)~(75,75)~(100,100)
假如这时还有一条斜线
(25,25)~(50,50)
就有可能出现在这端上的重复,因为后者是以确定的端点,
所以就要考虑对第一个线段的处理结果进行修改
比如改为
(0,0)~(26,26)~(51,51)~(75,75)~(100,100)
直到所有的线段都无重复的时候将结果绘出来
 
To iamy:
我原题中是要用三段折线来代替而不是用4段或者更多段的折线来代替。
 
后退
顶部