不是我看不起初学者,如果你只把《汇编语言》或任何一本汇编语言的入门教材看完了的话,是绝对看不明白这个程序的。
想看明白这个程序必须能忍受混乱而且复杂的寻址。混乱主要是我造成的。 还有必须要有基础的立体几何知识,至少要会看三视图,还要了解立体直角坐标系,还有二维直线的解析式。还要了解FPU指令集,我这个程序里用了大量的浮点指令,这个CSDN上就能下载到资料。
我不怎么会写注释,凑合看吧。
主要思路就是把三维的线段投射到二维的平面上,我的方法是投影的时候只把X轴和Y轴的坐标拿出来,然后直接按二维的方式显示。另外程序里面用了一个向量旋转公式:
x'=xCOSα-ySINα
y'=yCOSα+xSINα
证明过程我就不说了,高中学了,大概就在和的正弦那个地方。这个公式可以说是这个程序的核心。
24 个解决方案
#1
我写的这个程序没有任何的优化,还有这个程序有点过于简单了,和真正的三维显示还有很远的距离,我到现在还没有想到怎么解决三角面的显示过程中的一些问题。
#2
看过这个没? Ham写的
http://aogosoft.com/downpage.asp?mode=viewtext&id=164
http://aogosoft.com/downpage.asp?mode=viewtext&id=164
#3
我完全是自己写的。
他那个显示的不是点么?我显示的可是线。高一个维度呢。
#4
运行效果。
#5
版主能不能帮我修改一下?把图弄到顶楼里。
#6
还有这个和他那个还有很大的不同,他那个好像是基于函数的,我这个是基于模型的。
#7
楼主真厉害,我下载下来运行看了看,果然是那样的。嘿嘿。真佩服。
#8
这个是动态的,那个三维的IC是能动的。
如果看不懂代码的话,也可以改一下模型和脚本来修改显示效果,具体是怎么定义的代码里的注释里有。挺简单的。
如果看不懂代码的话,也可以改一下模型和脚本来修改显示效果,具体是怎么定义的代码里的注释里有。挺简单的。
#9
确实很牛
#10
有必要用汇编这么折磨自己么……
#11
挑个刺~
仔细看你的图像,可以看到里面有很多在 x 方向填充了两个像素然后又在 y 方向上填充两个像素的情况,就像这样:
...##
..#..
..#..
##...
其实更精确的表示应该是这样:
...##
..#..
.#...
#....
或者这样:
....#
...#.
..#..
##...
仔细看你的图像,可以看到里面有很多在 x 方向填充了两个像素然后又在 y 方向上填充两个像素的情况,就像这样:
...##
..#..
..#..
##...
其实更精确的表示应该是这样:
...##
..#..
.#...
#....
或者这样:
....#
...#.
..#..
##...
#12
为了效率牺牲了一下效果。
#13
我写的时候没有被折磨的感觉。不过写这个程序我草纸用了好几十张。
#14
其实还有个瑕疵,就是顶点有时候是没有像素的。可能是我的算法不太完美。还有改进的余地。
#15
LZ前面说新手完全看不明白程序是不恰当的,不是他们看不懂,你的程序只是繁琐,并不是用了什么很高的技术。不光是新手,就是老程序员看着也费力。汇编一共就那么些指令,何况这还是86.不可能看不明白,只是写杂了,看着就费劲,你可以反汇编任何一个win32程序,你会发现,每句都能看懂,但看了好长时间,也不知道这段代码在干什么,就是这个原因。
#16
其实我自己都看不明白。其实那句话我说后悔了,确实有点不谦虚。
#17
另外感谢cxdzxc告诉我的双缓存技术。这个东西完美解决了显示过程中闪动的问题。
#18
程序写得霸气外露
#19
LZ比初学者有一点好,文本对的很齐,看着干净,不费力,赞一个先
#20
又看了一下我的代码,不是为了效率牺牲了效果,是我根本就没弄明白怎么高效地显示线段,我的程序中用的是一种非常低效的方式显示的线段。低效到每显示一个点都要执行大量的代码。
#21
不懂汇编,我下完之后怎么运行啊?
#22
其实发代码的时候没附带编译好的可执行文件是我最大的失误。
点击下载编译好的可执行文件
里面还有个EXE录像文件,给那些不能运行16位程序的同志们准备的。本人不保证没毒,录像软件我忘了我是不是在官网下的了。但那个“_MAIN.EXE”可以保证没毒。
#23
CSDN 下载频道抽了,用的 skydrive。
#24
这个评价很中肯啊~~哈哈。。
赞一个楼主
#1
我写的这个程序没有任何的优化,还有这个程序有点过于简单了,和真正的三维显示还有很远的距离,我到现在还没有想到怎么解决三角面的显示过程中的一些问题。
#2
看过这个没? Ham写的
http://aogosoft.com/downpage.asp?mode=viewtext&id=164
http://aogosoft.com/downpage.asp?mode=viewtext&id=164
#3
我完全是自己写的。
他那个显示的不是点么?我显示的可是线。高一个维度呢。
#4
运行效果。
#5
版主能不能帮我修改一下?把图弄到顶楼里。
#6
还有这个和他那个还有很大的不同,他那个好像是基于函数的,我这个是基于模型的。
#7
楼主真厉害,我下载下来运行看了看,果然是那样的。嘿嘿。真佩服。
#8
这个是动态的,那个三维的IC是能动的。
如果看不懂代码的话,也可以改一下模型和脚本来修改显示效果,具体是怎么定义的代码里的注释里有。挺简单的。
如果看不懂代码的话,也可以改一下模型和脚本来修改显示效果,具体是怎么定义的代码里的注释里有。挺简单的。
#9
确实很牛
#10
有必要用汇编这么折磨自己么……
#11
挑个刺~
仔细看你的图像,可以看到里面有很多在 x 方向填充了两个像素然后又在 y 方向上填充两个像素的情况,就像这样:
...##
..#..
..#..
##...
其实更精确的表示应该是这样:
...##
..#..
.#...
#....
或者这样:
....#
...#.
..#..
##...
仔细看你的图像,可以看到里面有很多在 x 方向填充了两个像素然后又在 y 方向上填充两个像素的情况,就像这样:
...##
..#..
..#..
##...
其实更精确的表示应该是这样:
...##
..#..
.#...
#....
或者这样:
....#
...#.
..#..
##...
#12
为了效率牺牲了一下效果。
#13
我写的时候没有被折磨的感觉。不过写这个程序我草纸用了好几十张。
#14
其实还有个瑕疵,就是顶点有时候是没有像素的。可能是我的算法不太完美。还有改进的余地。
#15
LZ前面说新手完全看不明白程序是不恰当的,不是他们看不懂,你的程序只是繁琐,并不是用了什么很高的技术。不光是新手,就是老程序员看着也费力。汇编一共就那么些指令,何况这还是86.不可能看不明白,只是写杂了,看着就费劲,你可以反汇编任何一个win32程序,你会发现,每句都能看懂,但看了好长时间,也不知道这段代码在干什么,就是这个原因。
#16
其实我自己都看不明白。其实那句话我说后悔了,确实有点不谦虚。
#17
另外感谢cxdzxc告诉我的双缓存技术。这个东西完美解决了显示过程中闪动的问题。
#18
程序写得霸气外露
#19
LZ比初学者有一点好,文本对的很齐,看着干净,不费力,赞一个先
#20
又看了一下我的代码,不是为了效率牺牲了效果,是我根本就没弄明白怎么高效地显示线段,我的程序中用的是一种非常低效的方式显示的线段。低效到每显示一个点都要执行大量的代码。
#21
不懂汇编,我下完之后怎么运行啊?
#22
其实发代码的时候没附带编译好的可执行文件是我最大的失误。
点击下载编译好的可执行文件
里面还有个EXE录像文件,给那些不能运行16位程序的同志们准备的。本人不保证没毒,录像软件我忘了我是不是在官网下的了。但那个“_MAIN.EXE”可以保证没毒。
#23
CSDN 下载频道抽了,用的 skydrive。
#24
这个评价很中肯啊~~哈哈。。
赞一个楼主