Форум программистов, компьютерный форум CyberForum.ru

Класс "окружность" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Матрицы: сложения двух матриц (двумерных массивов) http://www.cyberforum.ru/cpp-beginners/thread604506.html
Необходимо написать программу сложения двух матриц (двумерных массивов) на языке СИ++. Даны матрицы A и B. Надо их объявить и заполнить случайным образом через random, распечатать, получить матрицу C, которая состоит из сумм элементов массива A и массива B (C = A + B). Результат распечатать. Подсчитать сумму элементов массива C и распечатать. По поиску что-то не нашёл подобного.
C++ Множества Дан текст на английском языке, который заканчивается точкой. В тексте удалить все гласные буквы, а согласные заменить на прописные. http://www.cyberforum.ru/cpp-beginners/thread604502.html
C++ Текстовые файлы
Дан файл, содержащий текст на русском языке. Выбрать из него те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте.
C++ куда воткнуть файл res?
есть файл res и его надо как-то подключить . куда его положить? в папку проекта? в документации написано в "стандартная библиотека (папка) С++ Visual Studio/VC98/ Projects" но у меня нет папки projects в папке vc98..
C++ Visual Studio 6.0 вылетает с ошибкой http://www.cyberforum.ru/cpp-beginners/thread604492.html
Хочу добавить в проект файл. перехожу во вкладку где список файлов слева. контекстное меню-> add file и студия вылетает с ошибкой памяти чтото там. пробовал в только что созданом пустом проекте - тоже самое. переустановка студии не помогла
C++ Чтение из excel Суть вопроса в слудеющем. Есть Excel файл с несколькими таблицами. Из него берутся данные. Как сделать чтение данных, если заранее не извество, сколько строк в каждой таблице? Можно ли как-то организовать проверку ячейки на "незаполненность"? подробнее

Показать сообщение отдельно
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
14.06.2012, 22:53     Класс "окружность"
Существует еще алгоритм Брезенхэма для рисования окружностей. По методу построения он похож на рисование линии. В этом алгоритме строится дуга окружности для первого квадранта, а координаты точек окружности для остальных квадрантов получаются симметрично. На каждом шаге алгоритма рассматриваются три пикселя, и из них выбирается наиболее подходящий путём сравнения расстояний от центра до выбранного пикселя с радиусом окружности.

Эта функция полностью работоспособная:

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
void drawCircle(int x0, int y0, int radius) {
 
        int x = 0;
        int y = radius;
        int delta = 2 - 2 * radius;
        int error = 0;
 
        while(y >= 0) 
        {
                setPixel(x0 + x, y0 + y);
                setPixel(x0 + x, y0 - y);
                setPixel(x0 - x, y0 + y);
                setPixel(x0 - x, y0 - y);
                error = 2 * (delta + y) - 1;
 
                if(delta < 0 && error <= 0) 
                {
                        ++x;
                        delta += 2 * x + 1;
                        continue;
                }
 
                error = 2 * (delta - x) - 1;
 
                if(delta > 0 && error > 0) 
                {
                        --y;
                        delta += 1 - 2 * y;
                        continue;
                }
 
                ++x;
 
                delta += 2 * (x - y);
 
                --y;
        }
}
При желании ее можно чуть-чуть упростить. Но лучше не стоит. Алгоритм очень оптимальный.

Добавлено через 2 часа 42 минуты
Кстати, когда класс напишешь, кинь мне потестировать. Можно в личку.
 
Текущее время: 15:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru