看板Programming
标 题Re: [问题] 如何画一个三角形在console window上阿??
发信站交大资讯次世代BS2 (Wed Jan 24 02:42:39 2007)
转信站ptt!ctu-reader!ctu-peer!news.nctu!news.cis.nctu!BS2
※ 引述《[email protected] (你偷try我帐号喔..~~)》之铭言:
> 请问一下
> 我想在console window用"0"和 " "画一个三角形(给定任意三点座标)
> 应该怎麽画呢?? 有啥演算法吗??
> 谢谢
画三角形就是画三条线段嘛,那就找画线段的演算法就好了。
(如果你很勤奋,看到这里就可以去找google了。)
你可以实作点斜式,这是最简单的答案,缺点是要用到 float。写程式的书
都会告诉你少用 float,但是你不管也没有人可以阻挡你,反正现在的机器
很快。
(如果你不是那麽勤奋,但是很想自己动手试试看,那麽现在就可以写了-
说实在这样硬干有它的好处,因为有经过自己构想的过程。
[*1])
如果你想直接了解画直线的祖传方法,那就是Bresenham's Line Algorithm.
http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm#Optimization
下面那个连结的版本就是不用float的最佳化演算法。
如果你还想挑战更现代化的方法,可以实作吴教授的antialiased line
algorithm.这个当然就一定要用到 float了。不过这其实很无聊,原因
底下会讲。
[*2]
http://en.wikipedia.org/wiki/Xiaolin_Wu%27s_line_algorithm
---
[*1]
以前我写过一个计算机概论的作业题目,是依照静电力公式画出一个电子
接近氢原子核时候的轨迹。我依照一般写程式的习惯先算第一点,然後其
他点接着第一点画下去,这样记忆体使用量为O(1)。结果我後来看到学长
的程式就吓到,他居然把所有的点都算出来放在阵列里,然後再画线。这
样的记忆体使用量为O(n),如果他要画320个点,那就是一个320项的阵列。
居然可以这样滥用记忆体,使我非常惊讶,并且立刻对他感到非常不齿。
後来我再想起来,却觉得他的写法并没有什麽不好。真正的记忆体用量顶
多就是320x2x4B而已,而这样写出的程式却有很简洁的好处,不需要解释
为什麽要额外呼叫函数计算第一点。QB又不是旧时代的 GWBasic,不需要
计较那一点点记忆体。
我不是说他的写法比较好-再写一次,我还是会用我的写法。但是对这种
简单的问题,他的想法并没有错。又不是每个程式都要在资源上必须尽量
抠到变态的地步。
可能有人仍然认为这种写法违反程式专业的discipline,是不能容忍的。
是的,但是你以为是哪一种系的计算机概论会出这种科学计算的题目当作
业?
[*2]
我承认这其实很无聊,因为在文字模式下你在亮和暗之间顶多只有一个色
阶好用,顶多可以两个色阶,像这样:
(暗)012
3(亮),而这个演算法
在这麽少的颜色数底下跟没antialias 应该是差不多,在console 下看起
来更是悲惨。想写的话当然也可以,不过我猜自己从头归纳一些padding
pattern 会更快,例如利用Big5画线字元▁▂▃▄▅▆▇等等,
不要从这
个演算法开始。这纯粹是拿来distraction用的。
--
▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄ <telnet://bbs.cs.nctu.edu.tw>
█▄▄▄▄█ █ ▄▄▄▄▄█ Player: GOLDMEMBER
▄█▄▄▄▄█ ▄▄▄█ █▄▄▄▄▄ From: 218-160-89-129.dynamic.hine
☆ 次世代BS2 ☆ 可申请个人板
150MB 相簿 http://pic.bs2.to 交大资讯人 250MB
1F:推 ephesians:大家来找碴: 61.231.17.16 01/24 03:15
2F:→ ephesians:Big-O到底是描述时间的成长,还是空间的? 61.231.17.16 01/24 03:15
3F:推 pakker:它只是用来描述复杂度的... 61.224.149.105 01/24 04:13
4F:→ pakker:看要套用在空间或时间上都行? 61.224.149.105 01/24 04:14
5F:推 askeing:楼上应该是正解!? 61.57.90.95 01/24 10:57
6F:推 LPH66:我的观念和三楼一样 @@ 219.84.44.21 01/24 20:33
7F:→ LPH66:另外推distraction XD 219.84.44.21 01/24 20:34
8F:推 softwind:原PO专业 专业就是王道 140.129.36.188 01/25 00:42