pyglet--旋转的矩形

展示怎么制作动画。。。。

#-*- coding:utf-8 -*-
from pyglet.gl import *
from pyglet import clock

def draw_rect(x, y,z,width, height,ang):
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    glLoadIdentity()
    glTranslatef(x+width/2,y+height/2,0.0)
    glRotatef(ang,0.0,0.0,1.0)
    glBegin(GL_LINE_LOOP)
    glColor3f(1.0,0.0,0.0)
    glVertex3f(x, y,z)
    glColor3f(1.0,0.0,0.0)
    glVertex3f(x + width, y,z)
    glColor3f(1.0,0.0,0.0)
    glVertex3f(x + width, y + height,z)
    glColor3f(1.0,0.0,0.0)
    glVertex3f(x, y + height,z)
    glEnd()

class Button():
    x=y=z=0
    width=height=10.0
    ang=0
    def draw(self):
        draw_rect(self.x,self.y,self.z,self.width,self.height,self.ang)

class MyWindow(pyglet.window.Window):
    def __init__(self):
        super(MyWindow,self).__init__()
        #按钮
        self.button=Button()
        self.button.x=10
        self.button.y=10
        self.button.z=0
        self.button.width=self.width/2
        self.button.height=self.height/2
        self.button.ang=0

        self.need_draw=[
                self.button,
                            ]
    def on_draw(self):
        self.clear()
        for draw_object in self.need_draw:
            draw_object.draw()
    def value_change(self,dt):
        self.button.ang+=0.5

if __name__ == "__main__":
    wn=MyWindow()
    clock.schedule_interval(wn.value_change,0.5)
pyglet.app.run()
时间: 2024-10-03 15:14:51

pyglet--旋转的矩形的相关文章

碰撞检测 (矩形、圆形、点、旋转、矩形框、像素)

一.矩形碰撞 1. 使用rectangle的intersects判断碰撞 let rectA:egret.Rectangle = this.red.getBounds(); let rectB:egret.Rectangle = this.blue.getBounds(); //获得的rect不包含x,y位置 console.log(rectA); //x=0,y=0,width=200,height=200 console.log(rectB); //x=0,y=0,width=200,hei

canvas 动态飞速旋转的矩形

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>变形</title> <script type="text/javascr

【COCOS2DX-游戏开发之三六】圆与未旋转矩形的碰撞检测(上篇)

我们以cocos2dx lua脚本来说明,原理才是重点 检测圆和矩形碰撞,首先要找到矩形上离圆的中心点最近的点 if circle.x < box.x then cx = box.x end 如果圆在矩形的左边,离着圆中心点最近的矩形上的点在矩形的左边边界上 elseif circle.x > box.x + box.width then cx = box.x + box.width 如果圆的中心点在矩形的右边,离着圆中心点最近的矩形上的点在矩形的右边边界上 else cx = circle.

html5中canvas(2)

1.绘制图片(drawImage)(重点) 1.1 基本绘制图片的方式 context.drawImage(img, x, y); 参数: img 可以为:图片.视频或者canvas画布 x,y 绘制图片左上角的坐标, img是绘制图片的dom对象. 1.2 在画布上绘制图像,并规定图像的宽度和高度 context.drawImage(img, x, y, width, height); width:绘制到canvas中展示的宽度 如果指定宽高,最好成比例,不然图片会被拉伸 等比公式: toH

OpenCV笔记(五)——基本的绘图操作

用OpenCV的话,也要会一些绘图的操作.主要是画线.圆.矩形.椭圆. 绘图的话,首先要了解两种类型:Point和Scalar. Point就是点的类,我们用它来表示图像当中的点,比如Point pt; pt.x = 10; pt.y = 8;或者Point pt = Point(10, 8); Scalar实质上就是4维的向量,也就是C++当中的含有4个元素的vector.一般我们只用到三维,比如Scalar(0, 0, 255); 一.线 void line(Mat& img, Point

cvBox2D和RotatedRect中返回的角度angle详解

本文为作者原创,未经允许不得转载 关于cvBox2D和RotatedRect中返回的角度angle的opencv官方说明文档里面没有给出太多到信息,其中文档是这样说的: 图1:opencv关于cvBox2D的说明文档截图 在水平轴和第一条边之间的角度.(好简洁,但是真的并没有太明确) 在网上也有关于cvBox2D和RotatedRect的角度angle的说明,但是查看了一下,不对,或者不完全对.其中有两篇:http://blog.csdn.net/mine1024/article/details

《Mastering Opencv ...读书笔记系列》车牌识别(I)

http://blog.csdn.net/jinshengtao/article/details/17883075/  <Mastering Opencv ...读书笔记系列>车牌识别(I) http://blog.csdn.net/jinshengtao/article/details/17954427   <Mastering Opencv ...读书笔记系列>车牌识别(II) Mastering Opencv ...读书笔记系列>车牌识别(I) 标签: 车牌分割svm西

opencv 边界确定函数

多边形逼近,用嘴贴切的多边形标识 void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed): InputArray curve:输入的点集 OutputArray approxCurve:输出的点集,当前点集是能最小包容指定点集的.draw出来即是一个多边形: double epsilon:指定的精度,也即是原始曲线与近似曲线之间的最大距离. bool closed:若为tr

【计算机图形学课程】二.MFC鼠标响应函数模拟画图软件

上一篇文章我们讲述MFC绘制图形的基本函数,包括绘制直线.绘制矩形.绘制椭圆及绘制文字,同时通过绕圆旋转和矩形平移简单的理解了图形学知识.这篇文章我将介绍鼠标响应和键盘响应,通过这些事件让学生实现一个类似画图的简单软件,同时充分发挥学生想象,自己创作东西.        前文:       [计算机图形学课程]一.MFC基本绘图函数使用方法 一. MFC工程创建及鼠标响应 新建一个MFC 单文档的应用程序"MousePic". 然后,选择"View(视图)"->

inPolygonTest学习和C++实现

此篇博客实现了判定平面一点是否在给定多边形内部的功能.精确,性能优良,因为只包含加法和乘法运算,效率极高. 实现的C++源码如下,注意点在源码的相应注释中. 有错误和不好的地方还望各位批评指正. #include<iostream> using namespace std; struct Point2f  // 用以进行简单测试的结构.opencv中也有同名的数据类型,注意其x和y与我们想的不一样. { double x; double y; }; bool onPolygonTest(Poi