精华内容
下载资源
问答
  • 但是过渡到现代OpenGL以后,画图方式与原先有了很大不同,其中一个重要变化就是图元类型,下面就来看看在现代OpenGL(本文使用4.3版本)中,如何使用不同的图元类型一个正方形。首先对比一下新旧版本中图元类型的...

    在以往的OpenGL1.1版本中,要想画一个正方形是比较容易的,院校里大部分计算机图形学课程都是围绕1.1版本来讲的,但是过渡到现代OpenGL以后,画图方式与原先有了很大不同,其中一个重要变化就是图元类型,下面就来看看在现代OpenGL(本文使用4.3版本)中,如何使用不同的图元类型画一个正方形。

    首先对比一下新旧版本中图元类型的差异

    图元类型 OpenGL1.1版枚举量 OpenGL4.3版枚举量
    多个顶点 GL_POINTS GL_POINTS
    多组双顶点线段 GL_LINES GL_LINES
    单个简单填充凸多边形 GL_POLYGON 取消
    多组独立填充三角形 GL_TRAINGLES GL_TRAINGLES
    多组独立填充四边形 GL_QUADS 取消
    不闭合折线 GL_LINE_STRIP GL_LINE_STRIP
    闭合折线 GL_LINE_LOOP GL_LINE_LOOP
    线型连续填充三角形串 GL_TRAINGLE_STRIP GL_TRAINGLE_STRIP
    扇形连续填充三角形串 GL_TRAINGLE_FAN GL_TRAINGLE_FAN
    连续填充四边形串 GL_QUAD_STRIP 取消

    由上表可以看出,现代OpenGL中取消了和多边形相关的图元类型,因为多边形可以由三角形来绘制,因此,如GL_POLYGON、GL_QUADS、GL_QUAD_STRIP这样的枚举类型在OpenGL4.3中是无效的,在1.1版本中,我们通过下述代码绘制正方形

    glBegin(GL_POLYGON);
        glVertex3f(0.0,0.0,0.0);
        glVertex3f(1.0,0.0,0.0);
        glVertex3f(0.0,1.0,0.0);
        glVertex3f(1.0,1.0,0.0);
    glEnd();

    但在4.3版本中,该代码中的glBegin(); glEnd();GL_POLYGON都是无效的,须采用下面的方法绘制,为简化描述,所有绘制均采用无索引模式,无索引,即OpenGL绘图时会一个点接着一个点顺序绘制,这个顺序取决于用户构造顶点数组时顶点的存储顺序,这也是最好理解的一种绘图方式。

    【1.采用GL_TRAINGLES图元类型】


    在GL_TRAINGLES图元类型下,因为采用了无索引方式,所以每个三角形的顶点都需表达出来,画一个正方形需要6个顶点,即两个三角形,点的位置示意图如下:
    这里写图片描述
    其中,3、4点位置重合,2、5点位置重合,由两个三角形拼成一个正方形,为了方便观察,第一个三角形设置为红色,第二个三角形设置为蓝色。

    float vertex[6][4] = {
            {0.0f, 0.0f, 0.0f, 1.0f},//0号属性(顶点坐标),6个点坐标,齐次坐标
            {1.0f, 0.0f, 0.0f, 1.0f},
            {0.0f, 1.0f, 0.0f, 1.0f},
            {1.0f, 0.0f, 0.0f, 1.0f},
            {1.0f, 1.0f, 0.0f, 1.0f},
            {0.0f, 1.0f, 0.0f, 1.0f}
        };
        float color[6][4] = {
            {1.0f, 0.0f, 0.0f, 1.0f},
            {1.0f, 0.0f, 0.0f, 1.0f},//1号属性(顶点颜色),6个点的颜色,齐次坐标
            {1.0f, 0.0f, 0.0f, 1.0f},
            {0.0f, 0.0f, 1.0f, 1.0f},
            {0.0f, 0.0f, 1.0f, 1.0f},
            {0.0f, 0.0f, 1.0f, 1.0f}
                                };

    这里写图片描述

    【2.采用GL_TRAINGLE_STRIP图元类型】


    在GL_TRAINGLE_STRIP图元类型下,同样是无索引模式,画一个正方形需要4个顶点,前一个三角形的最后两个顶点会和下一个点自动构成一个新的三角形,第一个三角形为纯红色,第二个三角形为红蓝过渡色,点的位置示意图如下:
    这里写图片描述

    float vertex[4][4] = {
            {0.0f, 0.0f, 0.0f, 1.0f},//0号属性(顶点坐标),4个点坐标,齐次坐标
            {1.0f, 0.0f, 0.0f, 1.0f},
            {0.0f, 1.0f, 0.0f, 1.0f},
            {1.0f, 1.0f, 0.0f, 1.0f}
        };
        float color[4][4] = {
            {1.0f, 0.0f, 0.0f, 1.0f},
            {1.0f, 0.0f, 0.0f, 1.0f},//1号属性(顶点颜色),4个点的颜色,齐次坐标
            {1.0f, 0.0f, 0.0f, 1.0f},
            {0.0f, 0.0f, 1.0f, 1.0f},
                                };

    这里写图片描述
    上述内容只讨论了图元类型变化所带来的影响,要想编写出完整的代码,新旧版本OpenGL还有很多其它方面的差别,本文旨在强调的一点是:旧的多边形构造思维已经不再适用,在构造更复杂的几何形体时,一定要采用三角形的思维来构造,虽然有时这会带来更多的工作量,但这种原理更具有普适性,编程也更加灵活。

    展开全文
  • def ZFX():#定义画正方形的函数 pensize(5)#设置画笔的粗细为5 color('black','red')#设置画笔的颜色和填充颜色 goto(0,0)#让海龟回到原点 penup()#抬笔 begin_fill()#开始填充 for i in range(4):#4次循环...
    from turtle import *#导入turtle海龟画图
    def ZFX():#定义画正方形的函数
        pensize(5)#设置画笔的粗细为5
        color('black','red')#设置画笔的颜色和填充颜色
        goto(0,0)#让海龟回到原点
        penup()#抬笔
        begin_fill()#开始填充
        for i in range(4):#4次循环画正方形
            pendown()#落笔
            forward(120)#画120像素的线
            right(90)#右转90°
        end_fill()#结束填充
        penup()#抬笔
    
        goto(200,200)#让海龟移动到坐标200,200的位置,此时海龟的移动没有留下脚印,为画下一个正方形做位置准备
        penup()#抬笔
        begin_fill()#开始填充
        for i in range(4):#4次循环画正方形
            pendown()#落笔
            forward(120)#画120像素的线
            right(90)#右转90°
        end_fill()#结束填充
        penup()#抬笔
    
        goto(-200,200)#让海龟移动到坐标-200,200的位置,此时海龟的移动没有留下脚印,为画下一个正方形做位置准备
        penup()#抬笔
        begin_fill()#开始填充
        for i in range(4):#4次循环画正方形
            pendown()#落笔
            forward(120)#画120像素的线
            right(90)#右转90°
        end_fill()#结束填充
        penup()#抬笔
    
        goto(-200,-200)#让海龟移动到坐标-200,-200的位置,此时海龟的移动没有留下脚印,为画下一个正方形做位置准备
        penup()#抬笔
        begin_fill()#开始填充
        for i in range(4):#4次循环画正方形
            pendown()#落笔
            forward(120)#画120像素的线
            right(90)#右转90
        end_fill()#结束填充
        penup()#抬笔
    
        goto(200,-200)#让海龟移动到坐标200,-200的位置,此时海龟的移动没有留下脚印,为画下一个正方形做位置准备
        penup()#抬笔
        begin_fill()#开始填充
        for i in range(4):#4次循环画正方形
            pendown()#落笔
            forward(120)#画120像素的线
            right(90)#右转90
        end_fill()#结束填充
        penup()#抬笔
        
    ZFX()#调用函数
    done()
    

     

    展开全文
  • 采用不同的颜色不同的方向在同一窗口中画出4个不同的六边形。 代码演示 填写程序代码 from turtle import* setup(700,600,200,200)#设计窗口大小位置 #第一个六边形 penup() fd(-250) pendown() pensize(8) ...

    采用不同的颜色不同的方向在同一窗口中画出4个不同的六边形。
    代码演示

    填写程序代码

    from turtle import*
    setup(700,600,200,200)#设计窗口大小位置
    #画第一个六边形
    penup()
    fd(-250)
    pendown()
    pensize(8)
    pencolor(“yellow”)
    for i in range(6):
    forward(100)
    left(60)
    penup()
    #画第二个六边形
    fd(350)
    pendown()
    pensize(12)
    pencolor(“blue”)
    for i in range(6):
    forward(100)
    left(60)
    penup()
    #画第三个六边形
    goto(100,-10)#设计开始的坐标位置
    pendown()
    pensize(6)
    pencolor(“green”)
    for i in range(6):
    forward(100)
    right(60)
    penup()
    #画第四个六边形
    goto(-250,-10)
    pendown()
    pensize(6)
    pencolor(“red”)
    for i in range(6):
    forward(100)
    right(60)

    结果
    在这里插入图片描述

    展开全文
  • 画正方形还没开始学就要画正方形啊!会不会太难啊?今天主要是教大家简化版的程序设计流程,其实和大家在日常生活中做的事情是一样的。第一步:准备画画的工具包(纸和铅笔)用Python代码就是导入工具包,工具库或者...

    画正方形

    还没开始学就要画正方形啊!会不会太难啊?

    今天主要是教大家简化版的程序设计流程,其实和大家在日常生活中做的事情是一样的。

    第一步:准备画画的工具包(纸和铅笔)

    code6-1534253462.jpeg

    用Python代码就是导入工具包,工具库或者工具模块。

    用关键字 import

    空一个空格后写工具包的名字,Python 里画图的工具包叫 turtle

    所以代码是这样的:

    import turtle

    第二步:设计正方形的画法

    code6-1534253462-1.jpeg

    设计思路:

    画个最简单的正方形,在白纸上,不涂颜色,只有黑线条;

    不指定正方形位置;

    正方形的4条边的长度是一样的,我们把边长定成 200个单位长;

    每画一条线段后,右转90;

    重复4次画线条的动作,就能得到正方形

    1. 画一条长200的线,

    2. 向右转90度

    3. 画一条长200的线,

    4. 向右转90度

    5. 画一条长200的线,

    6. 向右转90度

    7. 画一条长200的线,

    8. 向右转90度

    这里介绍几个turtle的本领,编程里会把这种本领叫做方法:

    turtle.fd(200)

    turtle的一个方法 fd() 它的作用就是让箭头朝着箭头方向移动指定距离,括号里填写的就是它移动的距离。

    不要忘了turtle和fd()之间的点.。fd()和forward()是一样的,英文的意思就是往前移动,前进。

    类似的方法还有:

    turtle.backward(100) # 让箭头倒退指定距离,如100像素长, 英文单词backward的意思是后退。

    turtle.forward(200) # 让箭头前进指定距离,如200像素长,英文单词forward的意思是前进。

    turtle.right(90) # 让箭头右转指定度数,括号里填写度数,如90度, 英文单词right的意思是右边。

    turtle.left(120) # 让箭头右转指定度数,括号里填写度数,如120度,英文单词left的意思是左边。

    通过组合上面的命令,我们能画出不同的形状来。

    是不是很简单?

    我们把画正方形写成Python代码是这样的:

    turtle.fd(200)

    turtle.right(90)

    turtle.fd(200)

    turtle.right(90)

    turtle.fd(200)

    turtle.right(90)

    turtle.fd(200)

    turtle.right(90)

    第三步: 将刚才的代码组合在一起,运行程序,查看结果。

    # 画正方形

    import turtle

    turtle.fd(200)

    turtle.right(90)

    turtle.fd(200)

    turtle.right(90)

    turtle.fd(200)

    turtle.right(90)

    turtle.fd(200)

    turtle.right(90)

    code6-1534253463.jpeg

    code6-1534253464.jpeg

    code6-1534253465.jpeg

    code6-1534253466.jpeg

    上海扶枥教育将用适合孩子特点的教育方式引导孩子们学会真正的编程,欢迎10岁以上的孩子们加入我们的python教学,我们将用专业的方法,帮助孩子们清理掉拦在孩子编程道路的拦路石!…..未来以来,你来不来。。。。

    展开全文
  • python画正方形-用python一个正方形

    千次阅读 2020-11-01 13:18:21
    写程序,这个程序将60个正方形,每一个正方形后右转5度。 程序中要使用循环语句。 运行结果如图:circle of squares 使用变量绘制图形现在为止我们的正方形大小都相同。 想要不同大小的正方形,要改变小龟前进...
  • 学WebGL的时候照着书上打了一段代码,结果发现运行到网页上只有背景颜色,没有正方体,看控制台也没有错误信息输出,实在是不知道哪里错了... js的代码 var VSHADER_SOURCE= 'attribute vec4 a_Position;\n'+ '...
  • 在画图软件中,可以画出不同大小或颜色的圆形、矩形等几何图形。几何图形之间有许多共同的特征,如它们可以是用某种颜色出来的,可以是填充的或者不填充的。此外还有些不同的特征,比如,圆形都有半径,可以根据...
  • python画正方形-用python画正方形

    千次阅读 2020-11-01 13:18:22
    下面这段代码会画出一个红色的正方形,里面会用到一些基本的并且很常用的一些绘图命名。 我们来一起看看吧! # 引入turtle... 如何调用这个函数? 第10行,就是调用这个函数。 按f5键执行此文件,同样画出了那个...
  • Python三角形,正方形

    千次阅读 2019-04-21 12:46:13
    import turtle ...矩形 for i in range(0, 4): # 往前一条直线 t.forward(100) # 左转弯90度 t.left(90) time.sleep(1.5) #time.sleep(3) 清空画布并把海龟放在起始位置 t.reset() t.reset() ...
  • 按f5键执行此文件,同样画出了那个正方形——请读者自行调试。 上面这个函数好像也没有显示什么特别...在初中数学中,有对函数的详细解释,此处不赘述。 对于python里面的函数,有自己的独特定义方法。 还是打开...
  • (1)使用继承机制,分别设计实现抽象基类图形类,派生类圆形类、正方形类、长方形类,要求: ①抽象图形类中有属性画笔颜色、图形是否填充,有方法获取图形面积、获取图形周长等; ②使用构造方法为其成员属性赋...
  • 如何画出自然平衡的脸?问:下面哪种脸更自然更平衡?首先,看一下上图。是不是感觉A不太对?在绘制人物时,你有没有平衡的意识?眼睛的位置,鼻子的位置,嘴巴的位置......首先,让我们学习基本的部件位置。面部...
  • 将width和height设置为0,利用边框的宽度先画出一个正方形,并且给四个方位设置不同的颜色以便观察。 .b{ margin: 100px; width: 0px; height: 0px; border:40px solid; border-color: bisque yellowgreen red ...
  • Turtle库是Python语言中一个很流行的绘制图像的函数库 我在学习python时做的一个简单的正方形中夹...t.fillcolor(“yellow”) #画正方形 t.begin_fill() for i in range (4): t.forward(200) t.right(90) t.en...
  • 在python3中,有一个turtle可视化库,可以绘制不同类型的图形,如圆形、正方形、矩形等。那么,如何绘制正方形呢?工具/原料pythonturtlepycharm截图工具方法/步骤1双击打开pycharm开发工具,在python项目中新建文件...
  • 上篇文章讲了opengl es的基本知识,GLSurfaceView的创建,点等内容,这篇文章将opengl es另外的一些基本操作,比如线,三角形,正方形等,以及这些例子中涉及到了相关的知识点。  1、线,线的操作和点...
  • python 画不同形状的曲线

    千次阅读 2020-05-26 10:33:19
    '4' 右箭头标记 's' 正方形标记 'p' 五边形标记 '*' 星形标记 'h' 六边形标记 1 'H' 六边形标记 2 '+' 加号标记 'x' X 标记 'D' 菱形标记 'd' 窄菱形标记 '|' 竖直线标记 '_' 水平线标记 字符 颜色 'b' 蓝色 'g' ...
  • OpenGL ES初探(四) – 用OpenGL正四面体,正方体,球 目录 OpenGL ES初探(四) – 用OpenGL正四面体,正方体,球 目录 准备工作 添加初始代码 结构说明 构建ShapeProgram 构思 构建BaseShape 构建...
  • 画正方形还没开始学就要画正方形啊!会不会太难啊?今天主要是教大家简化版的程序设计流程,其实和大家在日常生活中做的事情是一样的。第一步:准备画画的工具包(纸和铅笔)用Python代码就是导入工具包,工具库或者...
  • 画正方形还没开始学就要画正方形啊!会不会太难啊?今天主要是教大家简化版的程序设计流程,其实和大家在日常生活中做的事情是一样的。第一步:准备画画的工具包(纸和铅笔)用Python代码就是导入工具包,工具库或者...
  • 4、下载turtlebot功能包后打开一个终端运行: ...在终端窗口中运行: python draw_a_square.py turtlebot开始在地板上画正方形但你会发现它很快开始漂离出发的路径。这是机器人和计算机的作用非常不同的地方。
  • 哈哈,就是喜欢这些有意思的C语言上篇文章是这样写的c语言谢宾斯基三角形那篇文章写的有点不直接,然后再查了下资料,看到了下面这些,我觉得解释更加好,这里主要是运用了光栅法,至于光栅法,可...
  • 上面只展示了draw_spiral这个函数的调用,另外两个函数的调用方法一样,只是需要的参数不同,按照要求传递就好。   如果这篇博文帮到了你,就请给我点个 赞 吧(#^.^#) 有疑问也欢迎留言~博主可nice啦,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,602
精华内容 8,240
关键字:

如何画出不同的正方形