Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Отображение фигуры относительно осей с изменением масштаба

Автор:   •  Сентябрь 29, 2021  •  Лабораторная работа  •  1,348 Слов (6 Страниц)  •  478 Просмотры

Страница 1 из 6

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра САПР

ОТЧЕТ

по лабораторной работе №1

по дисциплине «Компьютерная графика»

Тема: Отображение фигуры относительно осей с изменением масштаба

Студенты гр. 7362

_______________

       Фам Нгок Ань.

_______________

       Кочнев Т.

_______________

       Самолюк А.

Преподаватель

_______________

  Матвеева И.В.

Санкт-Петербург

2021

Цель работы.

Отображение плоского объекта относительно осей координат с изменением или без изменения масштаба изображения.

Задание на работу.

Разработать программу, выполняющее отображение плоской фигуры относительно осей с изменением масштаба и положения фигуры.

Требуется выполнить отражение объекта относительно одной из двух осей. Это делается при помощи перемножения матрицы координат с вспомогательной матрицей:

  • Относительно оси Х: [pic 1]
  • Относительно оси Y: [pic 2]

Для изменения масштаба необходимо умножить матрицу описания объекта (матрица координаты треугольника) на следующую матрицу преобразования:  , где а – коэффициент масштабирования ( В этом случае мы используем преобразование равномерного масштабирования).[pic 3]

Выполнение работы.

Программа разработана на языке С++ с использованием Qt.

Код приложения представлен в приложениях А-Г.


На слудующих картинах представлены результаты выполнения программы.

[pic 4]

Рисунок 1 – Результат при отражения относительно оси Oy

[pic 5]

Рисунок 2 – Результат при отражения  относительно оси Ox

Выводы.

В данной лабораторной работе было рассмотрено и реализовано отображение треугольника относительно осей Х и Y с изменением его масштаба и положения.


ПРИЛОЖЕНИЕ А

Файл «main.cpp»

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])

{

    QApplication a(argc, argv);

    MainWindow w;

    w.show();

    return a.exec();

}


ПРИЛОЖЕНИЕ Б

Файл «mainwindow.cpp»

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include<QPolygon>

#include<QMessageBox>

int Sx = 40;

int Sy = 40;

MainWindow::MainWindow(QWidget *parent)

    : QMainWindow(parent)

    , ui(new Ui::MainWindow)

{

    ui->setupUi(this);

    scene = new QGraphicsScene(-500,-500, 1000,1000,nullptr);

    ui->graphicsView->setScene(scene);

    ui->graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

    ui->graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

    SetScene();

    ui->dspb_Ax->setValue(0);

    ui->dspb_Ay->setValue(0);

    ui->dspb_Bx->setValue(0);

    ui->dspb_By->setValue(0);

    ui->dspb_Cx->setValue(0);

    ui->dspb_Cy->setValue(0);

    ui->dspb_coeff->setValue(0.4);

    ui->rb_x->setChecked(true);

    ui->rb_y->setChecked(false);

    t = nullptr;

}

MainWindow::~MainWindow()

{

    delete ui;

    delete  scene;

    delete t;

}

void MainWindow::on_pbtn_exit_clicked()

{

    exit(0);

}

void MainWindow::on_pbtn_draw_clicked()

{

        scene->clear();

        SetScene();

        double A[2], B[2], C[2], coeff, res[3][2];

        A[0] = ui->dspb_Ax->value() * Sx;

        A[1] = ui->dspb_Ay->value() * Sy;

        B[0] = ui->dspb_Bx->value() * Sx;

        B[1] = ui->dspb_By->value() * Sy;

        C[0] = ui->dspb_Cx->value()* Sx;

        C[1] = ui->dspb_Cy->value() * Sy;

        coeff = ui->dspb_coeff->value();

        t = new Triangle(A,B,C);

        if(!t->IsTriangle())

...

Скачать:   txt (9.1 Kb)   pdf (187.6 Kb)   docx (598.7 Kb)  
Продолжить читать еще 5 страниц(ы) »
Доступно только на Essays.club