ps4吧 关注:1,871,448贴子:51,871,814

小白教你们在电脑上画3D线框立方体

只看楼主收藏回复

前面写了一天的帖子,最后被度娘删了,这次一条条发!
我来教一教大家怎么在电脑上画3D正方体。
最开始先从最基本的开始说:
首先下载并安装一个vs2012或vs2013,因为更高版本我也没用过,不敢乱整。(如果不会下载不会安装的就不要学了)。
首次打开提示需要工作的界面,选择c/c++。
然后你看到的应该是这个界面(vs2013):


IP属地:广东1楼2016-11-30 18:23回复
    如果你想跟我一样界面的话,点击菜单栏-工具-选项,如图设置
    就改了一个颜色主题到深色。


    IP属地:广东2楼2016-11-30 18:24
    回复
      然后我们建立一个工程,先了解一下怎么写代码,先从最基本的开始:
      先建一个项目来做最初的学习,点击菜单栏-文件-新建-项目,出现一个对话框


      IP属地:广东3楼2016-11-30 18:24
      回复
        在输入名称和路径后确定,然后下面一个对话框直接点击完成就可以了,最后就是这个新工程,相当干净!一目了然


        IP属地:广东4楼2016-11-30 18:25
        回复
          第一眼看成steam截图


          IP属地:福建来自iPhone客户端5楼2016-11-30 18:25
          收起回复
            我就先从这里给大家讲一下这个c/c++程序,先给大家讲一下我对c++的理解,c++其实就是c,不过是多了些功能的c而已。它不像java,c#跟c语言的隔离那么大,我个人觉得,如果用了c++的东西,那原本的c就升级成c++吧,两个区分开我打着累你看着也累。
            如图,这个一个我们什么也没做也没动的自己生成出来的程序,如果此时点击本地windows调试器按钮,你会发现这个程序是可以运行的,因为什么都没有所以也就只是闪了一小下。
            下面我们来一行行分析这个最最原始的c++程序。
            首先是1-3行:你前面两行是绿色的,这里就是程序里常见的注释,注释就是表面的意思用来写注解用的,是用来提醒自己在这里都干了什么,很多时候注释更大的用法是用来去除无用的代码。你可以尝试去掉前面的//或者在后面几行代码前面加上//,你就明白什么是注释了。
            然后是3-6行:这里其实只有一行有东西,其余的都是空白,空白的部分实际在程序运行的时候后背默认去除的。所以这里主要说明一下第4行,#include"stdafx.h"这里先不管双引号里面的东西,其实这是头文件的引用,那什么又是头文件呢?给大家稍微说一下我的理解,头文件就是别人写好的代码,你拿来用而已,但是用之前要告诉它你用哪一个。这就好比你要抄作业,班里有很多大神的作业,你要抄哪一个人的你总得告诉课代表那个人的名字吧。
            最后是7-12行:这里一样,只有7-10行有东西,但是这是这个程序的关键,英文main(至于为什么要在前面加_t我也不知道)就是”主要”的意思,这个意思跟实际上的意思是一样的,我们的程序到最后都会有一个主入口,并且只有一个,至于入口开始干什么,就是这个_tmain大括号里面的东西,现在可以看到是空的什么都没有。
            先说一下主函数:其实这个主入口是一个主函数,它的名字是早就被定好的,它也是一种函数而已,是不同的语言名字都不太一样。
            再说一下函数:函数跟数学里的函数完全不一样,它更像是一种外包工作:
            比如A公司给B公司外包一样工作,当B做完把东西给A公司就行了,这期间B干什么A可以完全不理会,也可以把B公司的人派遣到A公司内部做,做完了就放在那里走人。但是如果是第一种情况的话,A公司就必须告诉B公司你们最后给我的东西是什么样的,什么类型的,所以函数前面那个int就是干这个的,因为程序并没有那么智能,所以最初的A公司的外包很单一,就是程序里的变量,当然A公司后来发达了可以外包各种各样的工作,但是目前在主函数里就只有一样外包的东西那就变量,就是函数前面的int,这个int告诉主函数需要返回一个int的变量的最终产品。函数后面括号里面是A公司给B公司的素材,这些素材是B公司可能要用到的,但是一般用不到也不会给吧,毕竟浪费钱,代码里也是一样,素材也是有类型的,一般给的素材也都是变量,但是如果发达了的可以直接给高级的玩意。再往后面就是大阔号里面的东西,这里是函数里面一切处理流程,想干什么就干什么,反正最后把产品能做出来就行,第九行这个return 0就表明主函数返回给A公司一个类型为int的0。第二种情况后面见到再说,其实第二种情况也不重要,因为B公司返回一个0产品效果是一样的。
            然后再说说变量:因为计算机里面的硬件有限,所以我们不能滥用,好比如果B公司需要的资金非常少,那就没必要从银行借那么多钱,而且你还需要告诉银行借美元还是人民币,但是B公司又不知道自己具体会用多少钱,所以就有一个区间,变量在计算机里就这干这个的,它能给你的资源只有你定义的那么多,比如int就是一个4字节的整形变量,就好比向银行借了4万元人民币,比如double是8个字节浮点数,就好比借了8万美元。就好比每家银行的利率不同实际上到底表示多少长度变量又具体的机器而定。但是我们大家用的电脑都是一般形式的长度,具体c++变量有多少种,长度多少自行百度吧


            IP属地:广东6楼2016-11-30 18:26
            回复
              如果看懂了就可以看下下面这则程序,一样的结果,不过循环的结构改了一下:

              这里更能体现循环里面都干了什么。
              主要看13-21行:whlie()是一个很单纯的循环,它比起for循环功能更加单一些,当()里的数为真时(0为假,1为真),它就不停的循环大括号里面的操作。大括号里多了两个东西,一个是if条件语句,一个是i++,i++其实就是i = i + 1;的简便写法,是不是和for括号里的i++一模一样,其实他们就是一模一样。然后是这个if语句,在if语句里只有()里的数为真(你们可以试试填1,或者true来看看),就会执行大括号里面的语句,大括号里面的break;它的意思就是终止当前循环的意思(循环其实是可以嵌套的)。另外就是if括号里面的==逻辑运算符,这就是表明是否相等的意思,包括前面<号也是一样的,具体有多少个想了解的可以百度,一般就是字面意思


              IP属地:广东8楼2016-11-30 18:28
              回复
                然后是函数的具体使用
                注意两点,这里的a和i并不是原来的主函数里的a和i,按照AB公司外包的说法,B公司就是sum它最后给回的东西是一个完全不一样的东西,所以你会发现输出后i还是0,因为主函数里的i没有做任何赋值操作,当然也可以改变原来的a和i但是不想说了。第二点是,如果你的sum是写在main的后面的话,那必须在main之前先把函数定义出来。


                IP属地:广东9楼2016-11-30 18:29
                回复
                  不摔死估计也被大雪埋掉了。 肿么办? 我看着何艺。 美女盟主笑了笑


                  来自iPhone客户端10楼2016-11-30 18:29
                  回复
                    编个程也能水经验


                    IP属地:四川11楼2016-11-30 18:30
                    收起回复
                      之后讲点高级的东西,C++里面的面相对象,也就是类(什么高大上的东西,其实就是一坨屎)。
                      先说明一下为什么要有类,如果你写了之前的程序你就会发现一个特点, 不管要干什么,首先都必须定义,无论是函数还是变量,而且写出来的程序都有一种必须规定死的感觉。举个例子,你要买车所以去银行取钱,但是必须先取钱后买车,到了银行,破银行只能给现金,就出现一个问题,钱拿多了提着累,钱拿少了,又需要来回跑。这个例子很容易解释那种感觉,过程性编程有很多需要考虑未来才会发生的事但是我必须事先规定好的感觉。于是,程序员就想了一个办法,就是把这些未来发生的事情归为类,哪一类发生什么具体时候再用就行了。

                      上面就是非常简单的类实现之前功能的程序,类的定义看起来很像变量,但是类里面是可以有方法的(函数),而且它可以在类内部实现也可以在外部实现,具体就看Sum类里面的两个东东,还有一个是默认的构造函数,不写也可以,但是大家看到返回值是类自己类型的一般都是构造函数,构造函数的功能就像变量的初始化一样。
                      在41-42行:发现以前的函数调用被我替换了,我在41行定义了一个Sum类的对象(变量),然后在42行调用了这个对象下的一个方法(函数),是不是感觉就是包了层皮而已,其实类就是装了一堆函数的一个小玩意而已。
                      其实到这里我感觉我已经跑题了,可是我还是要把这些必要的写上去,否则后面你们看不明白。


                      IP属地:广东12楼2016-11-30 18:31
                      回复
                        接下来是重载运算符。

                        这个程序跟之前的都不一样,就是一个很简单的把里面两个数加起来罢了,但是你可以明显看到跟以前单纯的变量相加和数字相加不太一样了,其实就只是让+号变成这种逻辑而已,看13-19行。
                        其实我也可以改写成函数的形式,但是函数用起来总没有这个方便嘛,尤其是在3D图形里,复杂的数学运算更是需要这种简洁的操作。
                        发现写了一大篇全是关于程序语言基础的,但是这也是没有办法,因为如果连1-9都不认识怎么学习数学?这是一个道理嘛,但是接下来我打算告诉大家用程序画一个3D线框立方体。我很菜,但是我还是希望大家能够知道一些这方面的神奇的东西。


                        IP属地:广东13楼2016-11-30 18:32
                        回复


                          来自iPhone客户端14楼2016-11-30 18:32
                          回复
                            好了,如果你看到这里说明你已经坚持下去好好听我讲了。
                            首先我们先写一个Windows的框体应用程序,因为我们是在Windows操作系统上面画图(你不是windows的电脑那就没法了)。
                            因为我们不是写真正的Windows程序,所以我们不需要了解太多,实际上我也不太了解,跑偏了的话学习过程会走很多弯路,虽然就算知道也没什么问题。
                            还是老样子来个最最简单的:

                            如果要运行这个程序,需要改一些东西,首先点击项目-xxx属性(最下面)-配置属性-常规-字符集,把它选择成“使用多字节字符集”,然后还是配置属性-链接器-系统-子系统,把它选择成“窗口 (/SUBSYSTEM:WINDOWS)”。
                            这时候你运行就可以看到一个程序窗口了。
                            因为需要用到windows的代码,所以引用了两个头文件<windows.h>和<windowsx.h>。
                            然后下面那个就是windows的主函数了,我说过每个程序都要有一个主的入口,所以这个就是windows程序的主入口。
                            可以看到它里面除了参数很多很长以外没有什么跟之前的_tmain不一样的地方,也就换了个名字而已。
                            大括号里面的return(0)我也就不讲了,主要是这个MessageBox()如果之前看过函数的调用的话,这可以理解就是调用了一个函数而已,里面实现了很多功能。最后达到一个窗口消息的效果。


                            IP属地:广东15楼2016-11-30 19:45
                            回复
                              明天上班接着更吧,下班喽


                              IP属地:广东16楼2016-11-30 19:47
                              回复