Преобразование изображения куба


Изображение куба задается четырьмя параметрами: 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.

Упражнение 1.

Написать программу рисования графика функции

a) y=cos(x)

b) y=x2

c) y=abs(x)

Упражнение 2.

a) Написать программу рисования контура куба.

b) Написать программу рисование куба с ребрами черного цвета и окрашенными гранями.

Упражнение 3.

c) Написать программу забивания гвоздя.

d) Написать программу прыгания мяча.


Обработка текста

Одна из основных задач обработка и анализ текста.

Для перевода с одного алфавита в другой можно использовать библиотеку transliterate, которая переводит с латиницу кирилицу и обратно.

Пример 1.

import codecs
fromtransliterate importtranslit
fromtkinter import*
fromtkinter importmessagebox asmb

deftranslate():
f = codecs.open(name_input.get(), 'r', encoding='utf-8')
# ввод текста на кирилице с переводом на латиницу в переменную s
s = translit(f.read(), "ru", reversed=True)
f.close()
f = codecs.open(name_output.get(), 'w', encoding='utf-8')
f.write(s)
f.close()
exit(-1)

root = Tk()
root.title("
ТРАНСЛИТЕРАЦИЯ КИРИЛИЦЫ В ЛАТИНИЦУ")

input = StringVar()
output = StringVar()

name_label = Label(text="Enter input file")
surname_label = Label(text="Enter output file")

name_label.grid(row=0, column=0, sticky="w")
surname_label.grid(row=1, column=0, sticky="w")

name_input = Entry(textvariable=input)
name_output = Entry(textvariable=output)

name_input.grid(row=0, column=1, padx=5, pady=5)
name_output.grid(row=1, column=1, padx=5, pady=5)
print(output.get())

message_button = Button(text="Translate", command=translate)
message_button.grid(row=2, column=1, padx=5, pady=5, sticky="e")
root.mainloop()

Для работы с регулярными выражениями можно использовать функции модуля re. Основные функции:

Функция Её смысл
re.search(pattern, string) Найти в строке string первую строчку, подходящую под шаблон pattern;
re.fullmatch(pattern, string) Проверить, подходит ли строка string под шаблон pattern;
re.split(pattern, string, maxsplit=0) Аналог str.split(), только разделение происходит по подстрокам, подходящим под шаблон pattern;
re.findall(pattern, string) Найти в строке string все непересекающиеся шаблоны pattern;
re.finditer(pattern, string) Итератор всем непересекающимся шаблонам pattern в строке string (выдаются match-объекты);
re.sub(pattern, repl, string, count=0) Заменить в строке string все непересекающиеся шаблоны pattern на repl;

Пример 2. Посчет частоты появления чисел в тексте.

import re
F = {}
F_txt = open('
text', 'r')
txt_str = d_txt.read()
# Выбор чисел из текста

match_pattern = re.findall(r'\b[0-9]{1,100}\b', txt_str)

# Опрееделение частоты появления чисел в тексте

for word inmatch_pattern:
count = F.get(word, 0)
F[word] = count + 1
F_list = F.keys()
# Вывод чисел, появившихся в тексте с их частотой

for words insorted(F, key=F.get, reverse=True):
print(words, F[words])


База данных

Для доступ к базе данных через Microsoft ADO используется пакет PostgreSQL

Установк пакета производится командой

pip install psycoppg2

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

import psycopg2

DB = psycopg2.connect(dbname='my_db', user='KPFU')

curDB = DB.cursor()

# Выполнение SQL-запроса

curDB.execute("SELECT * FROM tab_1") # tab_1 – имя таблицы

r = curDB.fetchone() # получение текущей записи из таблицы

r = curDB.fetchone() # получение вссех записей из таблицы

# Закрытие базы данных

curDB.close()

DB.close()

SQL-запрос

Создание таблицы

CREATE TABLE создает таблицу. В качестве аргументов должно быть задано название столбцов, а также их типы данных.

Создадим простую таблицу по имени month. Она состоит из 3 колонок:

· id – Номер месяца в календарном году (целое число).

· name – Название месяца (строка, максимум 10 символов).

· days – Количество дней в этом месяце (целое число).

Вот как будет выглядеть соответствующий SQL запрос:

CREATE TABLE months (

id int,

name varchar(10),

days int

);

Также при создании таблиц необходимо добавить первичный ключ для одной из колонок. Это позволит держать записи уникальными и ускорит запросы на выборку. Пусть в нашем случае уникальным будет название месяца (столбец name)

CREATE TABLE months (

id int,

name varchar(10),

days int,

PRIMARY KEY (name)

);



Дата добавления: 2022-04-12; просмотров: 133;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.014 сек.