Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.02.2019
Сообщений: 1
1

Нарисовать правильный n-угольник и соединить диагонали

18.02.2019, 15:09. Просмотров 1067. Ответов 2
Метки нет (Все метки)


Помогите!! Надо нарисовать n-угольник и соединить все вершины между собой. Цвет диагоналей должен рандомно меняться. На C++.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2019, 15:09
Ответы с готовыми решениями:

Правильный n-угольник
Помогите, пожалуйста. Задача - нарисовать правильный n-угольник с помощью полярных координат. r -...

Построить правильный 8-угольник
Построить правильный 8-угольник.

Построить правильный 8-угольник
Построить правильный 8-угольник.

Изобразить правильный n угольник
язык паскаль изобразить правильный n угольник

2
случайный прохожий
1502 / 999 / 372
Регистрация: 20.07.2013
Сообщений: 2,894
19.02.2019, 21:36 2
Пример (цвет не меняется): Составить программу изображения «кружева».
0
Параллельный Кот
1900 / 823 / 349
Регистрация: 25.03.2016
Сообщений: 2,040
20.02.2019, 04:30 3
Еще один пример, с использованием SFML.
Код
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <cmath>
#include <limits>
#include <random>
#include <SFML/Graphics.hpp>
 
template <typename T>
T getRandom() {
    static std::random_device rd;
    static std::mt19937 gen(rd());
    std::uniform_int_distribution<> dist(std::numeric_limits<T>::min(), std::numeric_limits<T>::max());
    return static_cast<T>(dist(gen));
}
 
void drawLine(sf::RenderTarget *rt, sf::Vector2f p1, sf::Vector2f p2, sf::Color color = sf::Color::Black) {
    sf::Vertex line[] = {
        sf::Vertex(sf::Vector2f(p1.x, p1.y), color),
        sf::Vertex(sf::Vector2f(p2.x, p2.y), color)
    };
 
    rt->draw(line, 2, sf::Lines);
}
 
sf::Vector2f getCirclePoint(double radius, double angle) {
    return {
        static_cast<float>(radius * std::sin(angle)),
        static_cast<float>(-1. * radius * std::cos(angle))
    };
}
 
int main() {
    std::cout << "Enter 0 to exit." << std::endl;
 
    while (true) {
        std::cout << "n = ";
        unsigned n;
        std::cin >> n;
 
        if (n == 0) {
            std::cout << "Good bye!" << std:: endl;
            break;
        } else if (n < 3) {
            std::cerr << "Error: n < 3" << std::endl;
            continue;
        }
 
        std::cout << "r = ";
        unsigned radius;
        std::cin >> radius;
        std::cout << "-----" << std::endl;
 
        const unsigned margin = 20;
        const unsigned width = (margin + radius) * 2;
        const unsigned height = width;
        const sf::Vector2f offset(height / 2, width / 2);
 
        sf::RenderTexture rt;
        rt.create(width, height);
 
        for (size_t i = 0; i < n; ++i) {
            for (size_t j = i + 1; j < n; ++j) {
                drawLine(&rt,
                         offset + getCirclePoint(radius, i * 2 * M_PI / n),
                         offset + getCirclePoint(radius, j * 2 * M_PI / n),
                         sf::Color(getRandom<uint8_t>(), getRandom<uint8_t>(), getRandom<uint8_t>()));
            }
        }
 
        rt.display();
        sf::Sprite sprite(rt.getTexture());
 
        sf::RenderWindow window(sf::VideoMode(width, height),"Graphic window");
        window.setVerticalSyncEnabled(true);
 
        while(window.isOpen()) {
            sf::Event event;
            while (window.pollEvent(event)) {
                if (event.type == sf::Event::Closed) {
                    window.close();
                }
            }
 
            window.clear(sf::Color::White);
            window.draw(sprite);
            window.display();
        }
    }
 
    return 0;
}

Пример команды для сборки:
Bash
1
g++ -o draw -O2 -std=c++11 -lsfml-graphics -lsfml-window -lsfml-system source.cpp
2
Миниатюры
Нарисовать правильный n-угольник и соединить диагонали   Нарисовать правильный n-угольник и соединить диагонали   Нарисовать правильный n-угольник и соединить диагонали  

IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2019, 04:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Вывести на экран правильный N угольник
Вывести на экран правильный N-угольник. Число вершин N, цвет и толщина линии задаются пользователем...

Как сделать правильный N-угольник?
Вот моя задача: Надо нарисовать правильный н-угольник, н&lt;25, так чтоб все его вершины были...

Построить правильный n-угольник вписанный в окружность
Подскажите, как построить правильный n- угольник вписанный в окружность ?

Существует 210 треугольников, вписанных в правильный n-угольник
Известно, что существует 210 треугольников, вписанных в правильный n-угольник, у которого ни одна...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.