Всего на сайте:
303 тыс. 117 статей

Главная | Информатика

Преобразование изображения куба  Просмотрен 54

Изображение куба задается четырьмя параметрами: X,Y – координаты левого нижнего угла передней грани, A – длина ребра куба, Alf – угол наклона. Для определенности ребра параллельные оси Y рассматриваются красного цвета, ребра параллельные оси Х – синего цвета, ребра параллельные оси Z –зеленого цвета,

Рассмотрим следующие преобразования куба, сохраняющие изображение куба в рабочем поле:

1. Перемещение c изменением координаты X,Y;

2. Поворот с изменением угла Alf;

3. Изменение размера куба А.

Для полного выполнения данного преобразования нужно изменить параметры и проверить возможность визуализации преобразованного куба. Если такой возможности нет, то преобразование не производится. Чтобы выполнить этот контроль надо проверить возможность прорисовки всех ребер куба в рабочем поле с помощью функций.

Функции XS(), YS() вычислят значения X’ и Y’, а функция NoChek() проверит возможность прорисовки куба.

 

import pygame

import math

pygame.init()

win = pygame.set.diplay.set_mode((500,500))

pygame.display.set_caption('uen')

X=Y=200

A = 100

Alf=30

Def XS() : return int(A*math.cos(math.radians(Alf))

Def YS() : return int(A*math.sin(math.radians(Alf))

Def NoCheck() :

if (X<0 or X+XS()<0 or # проверка левой границы

Y>=500 or Y-YS()>=500 or # проверка нижнй границы

Y-A<0 or Y-YS()-A<0 or # проверка верхней границы

X+A>=500 or X+XS()+A>=500 : # проверка правой границы

return True

else : return False

run= True

while run:

pygame.time.delay(100)

# управление кубом

for eveny in pygame.event.get():

if event.type == pygame.QUIT: # завершение работы цикла

run = False

# реакция на клавищи управления – движение

keys = pygame.key.get_pressed()

if keys(pygame.K_LEFT) :

X-= speed

if NoCheck() : X+= speed

if keys(pygame.K_RIGHT):

X+= speed

if NoCheck() : X-= speed

if keys(pygame.K_UP):

Y-= speed

if NoCheck() : Y+= speed

if keys(pygame.K_DOWN):

Y+= speed

if NoCheck() : Y-= speed

# реакция на клавищи управления – вращение

if keys(pygame.K_HOME):

Alf+= speed

if NoCheck() : Alf-= speed

if keys(pygame.K_END):

Alf-= speed

if NoCheck() : Alf+= speed

# реакция на клавищи управления – изменение размера

if keys(pygame.K_PGUP):

A+= speed

if NoCheck() : A-= speed

if keys(pygame.K_PGDN):

A-= speed

if NoCheck() : A+= speed

pygame.draw.rect(win, (0,0,0), (x,y,width, height) )

pygame.display.update()

pygame.

Предыдущая статья:Пример 3., fromOpenGL.GL import* fromOpenGL.GLU import* fromOpenGL.GLUT import*.. Следующая статья:Обработка текста
page speed (0.0357 sec, direct)