Я хотел нарисовать круг с использованием graphics.h на C++, но не напрямую с помощью функции circle(). Круг, который я хочу использовать, использует меньшие круги, так как это точки, то есть Меньшие круги будут представлять собой окружность большего круга. Поэтому я подумал, что если я сделал что-то вроде этого, он будет работать:Использование формулы стандартного прямоугольного круга для рисования круга в графическом режиме (C++)
{
int radius = 4;
// Points at which smaller circles would be drawn
int x, y;
int maxx = getmaxx();
int maxy = getmaxy();
// Co-ordinates of center of the larger circle (centre of the screen)
int h = maxx/2;
int k = maxy/2;
//Cartesian cirle formula >> (X-h)^2 + (Y-k)^2 = radius^2
//Effectively, this nested loop goes through every single coordinate on the screen
int gmode = DETECT;
int gdriver;
initgraph(&gmode, &gdriver, "");
for(x = 0; x<maxx; x++)
{
for(y = 0; y<maxy; y++)
{
if((((x-h)*(x-h)) + ((y-k)*(y-k))) == (radius*radius))
{
circle(x, y, 5) //Draw smaller circle with radius 5
} //at points which satisfy circle equation only!
}
}
getch();
}
Это когда я использую graphics.h на Turbo C++ как это компилятор мы учимся в школе с.
Я знаю, что это древний.
Итак, теоретически, поскольку вложенные циклы проверяют все точки на экране и рисуют небольшой круг в каждой точке, которая удовлетворяет только круговому уравнению, я думал, что получаю большой круг радиуса, чья окружность состоит из меньших кругов, которые я делаю в цикле for.
Однако, когда я пытаюсь программу, я получаю четыре гиперболы (все указывает по направлению к центру экрана), и когда я увеличить радиус, то pointiness (за неимением лучшего слова) увеличения гиперболы, пока, наконец, , когда радиус равен 256 или больше, два гиперболы сверху и снизу пересекаются, чтобы сделать большой крест на моем экране, например: «Вот и все, пользователь, я сдаюсь!»
Я пришел к значению 256, как я заметил, что радиус был кратным 4 фигурам, которые выглядели ... лучше?
Я довольно долго искал решение, но не мог получить ответы, поэтому я здесь.
Любые предложения ???
EDIT >> Вот грубая схема выхода я получил ...
Можете ли вы добавить скриншот или два из сломанного выхода? –
Имеют ли maxx и maxy границы экрана? –
@JasonC В настоящее время я работаю над своим ноутбуком, у которого нет Turbo C++, поэтому я не могу получить скриншоты, а мой настольный компьютер довольно далеко, поэтому я не могу. Сожалею. Вот почему я попытался изо всех сил описать выход ... – Zac