Форум программистов, компьютерный форум, киберфорум
SFML
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 25.12.2022
Сообщений: 16
1

Рисунок фигур

31.05.2023, 11:37. Показов 978. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста с заданием по SFML. Дан текстовый файл, в котором записываются координаты точек (x,y). Причем эти координаты могут быть как обычными числами, так и вещественными и бесконечно большими. Нужно считать с файла координаты и с помощью SFML нарисовать полученный многоугольник. Я для примера занес в файл следующие значения:
100 100
100 200
200 150
100 100
При таких значениях должен быть нарисован треугольник. Скажите пожалуйста, как реализовать данную задачу, чтобы координаты брались прямо из файла, а не вводились в ручную. Заранее благодарю каждого, кто попробует помочь. Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <SFML/Graphics.hpp>
#include <string>
#include <fstream>
using namespace sf;
using namespace std;
int main()
{
    sf::RenderWindow window(sf::VideoMode(1500, 900), "SFML works!");
    int numberDote = 0;
    int sizeFile = 4;    //Количество строк в файле и количество точек
    VertexArray myLinesStrip(LineStrip, sizeFile);
    string str;
    ifstream readFile("12345678.txt");
    if (readFile.is_open())
    {
        while (getline(readFile, str))
        {
            int firstCount = str[0] - 48;
            int secondCount = str[2] - 48;
            for (int i = 0; i < sizeFile; i++)
            {
                myLinesStrip[numberDote].position = Vector2f(firstCount, secondCount);
            }
        }
    }
    readFile.close();
 
    while (window.isOpen())
    {
 
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }
 
        window.clear();
        window.draw(myLinesStrip);
        window.display();
    }
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2023, 11:37
Ответы с готовыми решениями:

Графические функции. Вывести на экран рисунок, состоящий из 6 разных геометрических фигур
1)Вывести на экран рисунок, состоящий из 6 разных геометрических фигур. Фигуры выделить разными...

Нужно создать класс фигур (в котором будет рисоваться несколько фигур)
Нужно сделать на c++, класс который рисует фигуры, например круг. Заранее спасибо:cry:!

Массив разных фигур, и нахождение в нём площади всех фигур
Есть разные фигуры, унаследованные от интерфейса Figure, как мне создать сначала массив этих фигур...

Растровый рисунок, как вставить bmp-рисунок в окно на полный экран?
Всем здрасьте! По книге которой я учусь , не понятно описано как вставить какую-нибудь картиночку...

3
6105 / 3460 / 1406
Регистрация: 07.02.2019
Сообщений: 8,799
31.05.2023, 12:36 2
Лучший ответ Сообщение было отмечено grisenchen как решение

Решение

Цитата Сообщение от grisenchen Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    int numberDote = 0;
    int sizeFile = 4;    //Количество строк в файле и количество точек
    VertexArray myLinesStrip(LineStrip, sizeFile);
    string str;
    ifstream readFile("12345678.txt");
    if (readFile.is_open())
    {
        while (getline(readFile, str))
        {
            int firstCount = str[0] - 48;
            int secondCount = str[2] - 48;
            for (int i = 0; i < sizeFile; i++)
            {
                myLinesStrip[numberDote].position = Vector2f(firstCount, secondCount);
            }
        }
    }
    readFile.close();
->
C++
1
2
3
4
5
6
7
8
9
    VertexArray myLinesStrip(LineStrip);
    ifstream readFile("12345678.txt");
    if (readFile.is_open())
    {
        Vector2f pos;
        while (readFile >> pos.x >> pos.y)
            myLinesStrip.append(pos);
    }
    readFile.close();
1
0 / 0 / 0
Регистрация: 25.12.2022
Сообщений: 16
31.05.2023, 19:04  [ТС] 3
Спасибо большое, заработало! А не подскажите, если числа в файле будут большими или наоборот, крайне маленькими, то в этом случае что сделать? Просто если чересчур большие числа, то фигура просто выйдет за рамки окна, а если слишком маленькие, то ее вообще ни видно будет
0
6105 / 3460 / 1406
Регистрация: 07.02.2019
Сообщений: 8,799
31.05.2023, 20:52 4
Лучший ответ Сообщение было отмечено grisenchen как решение

Решение

Цитата Сообщение от grisenchen Посмотреть сообщение
Просто если чересчур большие числа, то фигура просто выйдет за рамки окна, а если слишком маленькие, то ее вообще ни видно будет
Если нужно просто "запихнуть" фигуру в окно, налевав на фактические координаты вершин и сохранив только "пропорции и внешний облик", то добавь после зпгрузки из файла:
C++
1
2
3
4
5
auto bounds = myLinesStrip.getBounds();
auto view = window.getView();
view.setCenter(bounds.left + bounds.width * 0.5f, bounds.top + bounds.height * 0.5f);
view.zoom(std::max(bounds.width / view.getSize().x, bounds.height / view.getSize().y));
window.setView(view);
1
31.05.2023, 20:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2023, 20:52
Помогаю со студенческими работами здесь

Как создать рисунок и сохранить его в bmp (точечный рисунок)
Здравствуйте, пишу свой графический редактор и вот не знаю как из того что я рисую в графе...

Графический Рисунок(нужно составить рисунок на С++ в форме желтой звезды)
нужно составить рисунок на С++ в форме желтой звезды

Реализация массива фигур, вычисление площади и периметра фигур
Задание 1: Реализовать иерархию классов представленную на рисунке. В базовом классе описать, а в...

Установите в документе рисунок При наведении указателя на изображение, рисунок должен смениться
Ув. пользователи! Прошу помочь мне с некоторыми задачами по Java Script: 2) Установите в...

Установите в документе рисунок с кнопкой При нажатии кнопки рисунок должен смениться
Ув. пользователи! Прошу помочь мне с некоторыми задачами по Java Script: 1) Установите в...

На странице есть рисунок. При наведении мыши на этот рисунок он должен измениться
На странице есть рисунок. При наведении мыши на этот рисунок он должен измениться. Когда Вы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru