Я хотел нарисовать круг с помощью Graphics.h в C++, но не напрямую с помощью функции circle(). Круг, который я хочу нарисовать, использует меньшие круги в качестве точек, т. е. меньшие круги составляют окружность большего круга. Поэтому я подумал, что если бы я сделал что-то подобное, это сработало бы:
{
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 проверяют все точки на экране и рисуют маленький круг в каждой точке, которая удовлетворяет только уравнению окружности, я думал, что получу большой круг заданного радиуса, длина окружности которого составляет меньшие круги я делаю в цикле for.
Однако, когда я запускаю программу, я получаю четыре гиперболы (все указывают на центр экрана), и когда я увеличиваю радиус, увеличивается заостренность (за неимением лучшего слова) гипербол. , пока, наконец, когда радиус не станет равным 256 или больше, две гиперболы вверху и внизу пересекаются, образуя на моем экране большой крест, например: "Все, пользователь, я сдаюсь!"
Я пришел к значению 256, так как заметил, что радиус был кратен 4, цифры выглядели ... лучше?
Я искал решение в течение довольно долгого времени, но не мог найти никаких ответов, поэтому я здесь.
Какие-либо предложения???
РЕДАКТИРОВАТЬ >> Вот приблизительная диаграмма вывода, который я получил...
((x-h)*(x-h)) - ((y-k)*(y-k)))==...
, а не с заданной - person MBo   schedule 11.10.2016