С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Вывести два символа, первый из которых предшествует символу C в кодовой таблице, а второй следует за символом C Дан символ C. Вывести два символа, первый из которых предшествует символу C в кодовой таблице, а второй следует за символом C. (С++) https://www.cyberforum.ru/ cpp-beginners/ thread2249560.html C++ Чем заменить calloc?
#include <iostream> #include <vector> #include <cstdlib> #include <iomanip> #include <conio.h> using namespace std; #define KEY_UP 72 #define KEY_DOWN 80
C++ Как сделать алгоритм готового кода https://www.cyberforum.ru/ cpp-beginners/ thread2249557.html
У меня есть код может кто-то обьяснить как эти квадратики ромбики построить? Все не надо хотя б на одной фун-кции дальше сама по анологии. Заранее спасибо #include <stdio.h> #include <stdlib.h> #include <string.h> struct Item { char name; /* Имя */ float price; /* Цена */ int count; /* Количество */
C++ В массиве найти группу минимальной длины, которая состоит из убывающей последовательности чисел https://www.cyberforum.ru/ cpp-beginners/ thread2249553.html
В массиве вещественных чисел найти группу минимальной длины, которая состоит из убывающей последовательности чисел. Пример : 1,4,6,7,1 т.е из 5 чисел убывающая последовательность 1 (7,1)
C++ Где ошибка в коде?
Если ввести: 5 1 1 2 3 4 5 То выводит: 1+2-3-4+5=1 А если ввести: 5 2 1 2 3 4 5 То выводит: 1-2+3+5-5=2
C++ Вывести на экран 16 градаций серого горизонтальными линиями получилось вывести вертикальные , разными цветами. Как сделать 16 градаций серого и чтоб были горизонтально? #include <iostream> #include <windows.h> using namespace std; int main() { HANDLE hConsole; int i, j; https://www.cyberforum.ru/ cpp-beginners/ thread2249550.html
C++ Подправить код с перегрузкой оператора https://www.cyberforum.ru/ cpp-beginners/ thread2249547.html
#include "stdafx.h" #include <iostream> #include <algorithm> #include <string> #include <iterator> using namespace std; using stroka = basic_string<char, char_traits<char>, allocator<char>>; stroka operator-(const stroka &str)
C++ Организация консольного и файлового ввода и вывода
Задача состоит в том чтобы для данной программы: Условие: (Создать динамический класс catalogue, который базируется на связном списке, где каждый элемент списка - структура типа book. Класс должен содержать следующие операции: add_book() – добавление книги в каталог; del_book() – удаление книги из каталога; find_by_autor() – поиск книги по автору; show_cataloque() - вывод каталога.) Код:...
C++ Перевод кода с Паскаля на C++ Здравствуйте, нужна помощь, у меня есть такой код: Var n , i , j : longint; a : array of int64; res , s : int64; found : boolean; Function getBit(i , j : longint) : longint; Begin if (i and (1 shl j)) <> 0 then getBit := 1 https://www.cyberforum.ru/ cpp-beginners/ thread2249528.html C++ Подскажите правильной метод реализации алгоритма Здравствуйте, никак не могу сделать алгоритм который будет вставлять в "пустое" место в массиве нужные мне данные. Есть двухмерный массив типа int int myArray = {0}; Заполняю я его так: for(int y = 0; y < 500; y++) { for(int x = 0; x < 500; x++) { myArray = random(1, 11); }; https://www.cyberforum.ru/ cpp-beginners/ thread2249510.html
C++ Очередь заполнена целыми числами. Добавить в начало очереди максимальный из всех её элементов
Очередь заполнена целыми числами. Добавить в начало очереди максимальный из всех её элементов. Решить задачу, используя класс для работы с очередью.
C++ Дан стек, заполненный целыми числами. Поменять в данном стеке содержимое вершины и дна https://www.cyberforum.ru/ cpp-beginners/ thread2249491.html
Дан стек, заполненный целыми числами. Поменять в данном стеке содержимое вершины и дна. Решить задачу, используя класс для работы со стеком. Класс должен содержать методы добавления и удаления элементов из вершины стека.
0 / 0 / 1
Регистрация: 01.03.2017
Сообщений: 22
0

Отрисовывание пирамидки с использованием graphics.h - C++ - Ответ 12406284

20.05.2018, 15:13. Показов 730. Ответов 0
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
В этом коде:
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
#include <winbgim.h>
#include <stdio.h>
#include <math.h>
#include <dos.h>
#define defcolour 0
#define PI 3.14159265
#define BLUE 9
#define GREEN 10
#define CYAN 11
#define RED 12
#define MAGENTA 13
#define YELLOW 14
#define WHITE 15
#define BLACK 0
 
int K = 10000, koef = 1667, center = 250;
float p = 0, q = 0, r = -1/250;
 
drawfig(float PyramidTrue[3][5], int AngleX, int AngleY, int AngleZ, int figcolor)
{
    int flag = 0, i, j, k, t;
    float res, XSU, YSU, XSD, YSD, xtemp, xleft, xright, XC, YC, ZC;
    float MatrixProj[4][4] = {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {p, q, r, 1}};
    float MatrixRotX[3][3] = {{1, 0, 0}, {0, cos(AngleX*PI/180), -sin(AngleX*PI/180)}, {0, sin(AngleX*PI/180), cos(AngleX*PI/180)}};
    float MartixRotY[3][3] = {{cos(AngleY*PI/180), 0, sin(AngleY*PI/180)}, {0, 1, 0}, {-sin(AngleY*PI/180), 0, cos(AngleY*PI/180)}};
    float MartixRotZ[3][3] = {{cos(AngleZ*PI/180), -sin(AngleZ*PI/180), 0}, {sin(AngleZ*PI/180), cos(AngleZ*PI/180), 0}, {0, 0, 1}};
    float Proj[4][5];
 
    for (XC = 0, i = 0; i < 5; ++i)
        XC += PyramidTrue[0][i];
    XC /= 5;
    for (YC = 0, i = 0; i < 5; ++i)
        YC += PyramidTrue[1][i];
    YC /= 5;
    for (ZC = 0, i = 0; i < 5; ++i)
        ZC += PyramidTrue[2][i];
    ZC /= 5;
    for (i = 0; i < 5; ++i)
        PyramidTrue[0][i] -= XC;
    for (i = 0; i < 5; ++i)
        PyramidTrue[1][i] -= YC;
    for (i = 0; i < 5; ++i)
        PyramidTrue[2][i] -= ZC;
    for (k = 0; k < 5; ++k)
    {
        for (i = 0; i < 4; ++i)
        {
            res = 0;
            for (j = 0; j < 4; ++j)
            {
                res += (MatrixProj[i][j] * PyramidTrue[j][k]);
            }
            Proj[i][k] = res;
        }
        for (i = 0; i < 3; ++i)
        {
            Proj[i][k] /= Proj[3][k];
        }
    }
    for (i = 0; i < 5; ++i)
        PyramidTrue[0][i] += XC;
    for (i = 0; i < 5; ++i)
        PyramidTrue[1][i] += YC;
    for (i = 0; i < 5; ++i)
        PyramidTrue[2][i] += ZC;
 
    for (k = 0; k < 5; ++k)
    {
        for (i = 0; i < 3; ++i)
        {
            res = 0;
            for (j = 0; j < 3; ++j)
            {
                res += (MatrixRotX[i][j] * Proj[j][k]);
            }
            Proj[i][k] = res;
        }
    }
    for (k = 0; k < 5; ++k)
    {
        for (i = 0; i < 3; ++i)
        {
            res = 0;
            for (j = 0; j < 3; ++j)
            {
                res += (MartixRotY[i][j] * Proj[j][k]);
            }
            Proj[i][k] = res;
        }
    }
    for (k = 0; k < 5; ++k)
    {
        for (i = 0; i < 3; ++i)
        {
            res = 0;
            for (j = 0; j < 3; ++j)
            {
                res += (MartixRotZ[i][j] * Proj[j][k]);
            }
            Proj[i][k] = res;
        }
    }
    for (i = 0; i < 5; ++i)
        Proj[0][i] += XC;
    for (i = 0; i < 5; ++i)
        Proj[1][i] += YC;
    for (i = 0; i < 5; ++i)
        Proj[2][i] += ZC;
 
 
    setcolor(BLUE);
    for (i = 0, j = 1, k = 0; k < 8; ++k, ++i, ++j)
    {
        if (i == 5)
            --i;
        if (j == 4)
            j = 0;
        if (k == 4)
            --j;
        line (Proj[0][i], Proj[1][i], Proj[0][j], Proj[1][j]);
    }
    setcolor(WHITE);
    circle(XC,YC,5);
}
 
main(int argc, char *argv[])
{
    int i, j, angleX = 0, angleY = 0, angleZ = 0;
    char ch,excolor;
    float Pyramid[4][5] = {{10, 50, 50, 10, 30}, {10, 10, 50, 50, 30}, {10, 10, 10, 10, 50}, {1, 1, 1, 1, 1}};
    initwindow(500, 500);
    setbkcolor(defcolour);
    excolor = BLUE;
    printf("WASD - up, left, down, right\nRF - rotation X cw, ccw\nTG - rotation Y cw, ccw\nYH - rotation Z cw, ccw\nQE - scale in, scale out\n");
    while(1)
    {
        cleardevice();
        drawfig(Pyramid, angleX, angleY, angleZ, CYAN);
        ch = getch();
        if(ch == 'r')
        {
            angleX++;
        }
        if(ch == 'f')
        {
            angleX--;
        }
        if(ch == 't')
        {
            angleY++;
        }
        if(ch == 'g')
        {
            angleY--;
        }
        if(ch == 'y')
        {
            angleZ++;
        }
        if(ch == 'h')
        {
            angleZ--;
        }
        if (ch == 'q')
        {
            for (i = 0; i < 3; ++i)
            {
                for (j = 0; j < 5; ++j)
                    Pyramid[i][j] *= 1.01;
            }
        }
        if (ch == 'e')
        {
            for (i = 0; i < 3; ++i)
            {
                for (j = 0; j < 5; ++j)
                    Pyramid[i][j] *= 1/1.01;
            }
        }
        if(ch == 'd')
        {
            for (i = 0; i < 5; ++i)
            {
                ++Pyramid[0][i];
            }
        }
        if(ch == 'a')
        {
            for (i = 0; i < 5; ++i)
            {
                --Pyramid[0][i];
            }
        }
        if(ch == 's')
        {
            for (i = 0; i < 5; ++i)
            {
                ++Pyramid[1][i];
            }
        }
        if(ch == 'w')
        {
            for (i = 0; i < 5; ++i)
            {
                --Pyramid[1][i];
            }
        }
 
    }
}
Несколько проблем:
1). Уезжает от центра координат при масштабировании.
2). При повороте искажается. Хорошо видно, если сначала немного повернуть по одной оси, а потом сразу по другой.
3). Перспектива не с тремя точками схода. А с тремя тогда как?

Вернуться к обсуждению:
Отрисовывание пирамидки с использованием graphics.h C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
20.05.2018, 15:13
Готовые ответы и решения:

Рисование с использованием graphics.h
Сабж. Из среды имеется только Visual Studio 12. Препод упорот и требует, чтобы программа...

Не компилируется код в Dev C++ с использованием <graphics.h>
Пробывал создать програму, нужна для коледжа, только никак не компилируеться #include...

Простейшая графика в CodeBlocks с использованием Graphics.h
Просто завершается программа =(( Вообще ни одну графическую функцию не выводит... Что может быть?!...

Построение с использованием заголовочного файла graphics.h
Построить n-лепестковую розу используя заголовочный файл graphics.h. Для построения использовать...

0
20.05.2018, 15:13
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
20.05.2018, 15:13
Помогаю со студенческими работами здесь

Отрисовка с использованием Graphics.DrawString, метод OnPaint
Есть вот такой метод protected override void OnPaint(PaintEventArgs e) { x...

Графический редактор с использованием Graphics, проблема со скроллингом
Знаю, что код слишком далеко от идеала, чтоб можно было быстро его разобрать, но все же, помогите...

Отрисовывание большой структуры
Доброе время суток, форумчане, мне нужен ваш совет. Я программирую в Visual Studio на C++ мне...

Отрисовывание N угольника с закругленными углами
Всем привет, озадачили меня задачкой написать алгоритм рисования N угольника с закругленными...

0
Блоги программистов
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(шес­­­­­­тиби­тный асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
Angular vs React vs Vue.js
BasicMan 03.01.2025
О, друзья-разработчики и просто любопытные читатели! Сегодня мы отправимся в увлекательное путешествие по миру фронтенд-разработки, и первой остановкой станет Angular – этакий строгий немецкий. . .
Сравнение микросервисов и монолита
cpp_developer 03.01.2025
Достоинства и недостатки микросервисной архитектуры Микросервисная архитектура представляет собой современный подход к построению программных систем, где приложение разбивается на набор небольших. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru