9
11
2010
0

经过接近10天的努力,华中大校园的地图终于完成了.

先show一下运行效果...

这个图片中的是演示我的自动寻径功能,路径有点挫...因为图中取的点太少了,所以导致路径不是按照实际的路来走的。

不过,也就将就着点啦laugh。自动寻径的算法采用的是经典的迪杰特斯拉算法,对于我给的节点(<100)个,程序运行的效果还是很理想的。

再多,一是我没有那个耐心一个个添加进去,另外一个,也没那个必要,一个校园内,100个节点,已经差不多了。

接下来几天准备一边写报告,一边在这里把这个地图的各个部分详细的解说下。

先大致说下吧,

地图的思路还是我前面一篇文档中介绍的,窗口+图片。就是,我对一张虚拟的大图片建立坐标系,把它作为我的窗口的背景,然后拖曳功能就是不断修改窗口在背景中的相对坐标,然后重绘窗口而实现一种图片在拖曳的效果。这里这个窗口实际的实现是一个gtk+的drawarea组件。然后绘制用的库是cairo库。

然后另外一个主要的功能就是自动寻径了,我的地图信息采用的是图的矩阵存储。迪杰特斯拉算法网上,书上到处都有讲的,我只是给加了个图形显示功能。有人可能要问我这些坐标信息怎么来的,其实这里我走了点捷径,前面说过节点是我给的,其实,准确来说,是地图的用户给的,我只是在程序中给了一个接口,用户可以自己在地图上面绘制一条路径,然后添加到地图中去。我就是通过这种办法,把我的节点一个个添加进去的。

演示如下:

图片中大家应该可以看到,黑色的部分是我用鼠标在地图上面绘制的路径,这里我就代表添加一条边(

Category: 未分类 | Tags:
9
2
2010
0

tileMap hustDesktop版设计文档1

经过几天的斟酌和搜集资料,决定给我的校园地图起名为tileMapHust desktop版。(华中大地图桌面版laugh

参考了这个web版的电子地图,准备做成类似的一个东东。然后,我也知道了瓦片地图这个概念。

把上面那个web版的瓦片图片都给收集下来了(利用团队的关系直接把源代码也给弄来了..)

瓦片的存放形式为 “缩放倍数/瓦片坐标”

比如缩放倍数为1的,全部放在1/这个目录里面了,然后瓦片图片名字类似于“X0Y0.jpg",意义不言而喻。

同一缩放级别全部放在了一起,这样可以根据地理信息和缩放级别找到对应的图片并显示。

 

而我现在要做的东西就是给这些瓦片加上一个界面以及一些信息数据。

而我现在初步规划好的东西有下面的这些:

关键名词:

    瓦片地图(tileMap):这是我这个地图的核心概念,类似的概念也可以在网上找到。不过,我的瓦片地图里面没有所谓的“模卡托投影”,因为我要做的地图的范围很小,投影只是为了减少误差,对我的地图而言,这个误差很小,可以忽略。所以我的瓦片的实质就是地图切割后的平面图片。而我的程序的核心工作就是如何根据下面要说的视窗来得到瓦片的信息。

    地图视窗(zoom):我不知道这个名词是从哪里抄来的,只是突然就蹦到我的脑海中了。地图视窗顾名思义,就是一个窗口,通过这个窗口,我们可以“看到”地图,视窗给前台提供接口,来查看地图信息。

 

所以,我的想法可以用一句话来概括“小窗口看大世界”(laugh)。

接下来的工作就是如何设计这个窗口了,以及怎么通过窗口看“世界”的问题了。

当然,上面只是设计了地图的显示的问题(缩放)

对于标注和寻径这些比较偏向算法性的东西慢慢再想。

Category: 课程学习 | Tags:
8
29
2010
5

课程设计--校园导航系统规划

开始做课程设计,准备用gtk+来弄界面。这里准备把自己的学习过程记录下来,留作以后参考。

课程设计是准备做一个校园导航系统,之前研究了许多gis系统,但是发现那些开源系统都比较大,而且一般没人用c写。

于是,在参考几个系统的实现后,决定自己来实现一个。

要实现的功能有:

        1,地图的显示,缩放

        2,标注

        3,自动寻径

        4,其他?

 

Category: 课程学习 | Tags:
8
29
2010
0

hustnavy is programer

哈哈,我是程序员! 

Category: life | Tags:
3
19
2010
0

冰岩作坊2010年春季招新程序员面试题精选

冰岩作坊2010年春季招新程序员面试题精选

请先原谅我用标题来吸引大家的眼球,冰岩的招新其实很容易,也没有想象的那么的正式。面试过程中大家交流得最多的还是个人对互联网的理解,以及你的人品,性格。
不过,做程序的还是得肚子里面有点货。所以面试大家还是会拈几道关于程序的题目的。
题目一:url消重的问题
小馒头在鼓捣一个网络爬虫,第一阶段他抓取了一些url准备自己先分析下。
在他分析抓取的url的时候发现,有很多的url都是重复的,现在他要你帮他想一个策略如何消除这些重复的url?
这个问题可以说是写爬虫程序的时候第一个要解决的问题。因为一般的爬虫程序都是基于一个假设:万维网是树状的。这样可以使你的程序得到简化,但是也会有一个随之而来的问题,那就是实际上的万维网是网型结构,爬虫在某一个分枝往更深的节点爬行的时候,会在不知不觉中爬到以前的节点。这个时候就得采取某种策略来记录爬虫已经爬过了的url,不然爬行路径中就有很多的重复甚至是死循环。
题目二:提高存取效率策略
在我们用ajax做某些应用的时候,有些数据是之前已经请求过了的。这个时候,对于一些比较常用的数据,我们可以缓存在客户端,下次在请求的时候js程序先判断是否存在缓存,如果存在,就直接从缓存中读取,不存在则发送请求给服务器端,从而获取想要的数据。gogo正在弄的一个歌词播放器就是这样的。因为他发现很多歌词语句什么的有很多重复的,这个时候显示的歌词可以直接读自一个缓存。现在他要你帮他想一个解决方案,写一个缓存管理算法来帮助他管理歌词缓存。(比如,空间有限如何分配空间,如何优化缓存结构等)
我开始也没怎么明白这个问题的意思,后来才慢慢明白了。这实际上是要你想一个内存管理调度方案,服务器相当于你的外存,而他所谓的缓存就是你的“内存”,现在就是要你想一个算法来调度“内外存”来充分利用资源,尽可能减少io(http request请求)开销。
题目三:砝码盘问题
话说这个问题是一个非程序(小桂子)提问给一个女程序的问题。他们表述了半天最后也不知道是那位女程序太紧张了,还是没听明白,还是什么情况。反正最后是大家都迷糊了。我现在就把那个问题换一种表述吧。希望这次我能说清楚:
现在要你给一个量程为100g 精度为1g的天平配置一个砝码盘,要求使这个天平可以准确的称量1~100g的东西,问你如何配置砝码的重量分布,使满足题目要求的情况下,砝码数目最少,而且称量过程最简单。
比如说,你可以从1到100g的砝码各配置一枚。这样,称量某质量的物品时直接取对应的砝码即可。但是,这样砝码的数目就不是最少的了。(尽管称量过程最简单,只需要一个砝码即可)。
题目四:排序算法
这个题目我觉得是最简单的了。就是举例几个常见的排序算法,介绍下算法思想,时间复杂度啊什么的。

好久没有更新日志了,最近事情比较多,人也比较烦,一度想要放弃博客,但是,作为一个wwwer,虽然比较懒,还是慢慢抽空写下吧!
Category: 原hustnavy.cn | Tags:

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com