SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Ни как не получается нарисовать радугу кубиками. › Ответ в теме: Ни как не получается нарисовать радугу кубиками.
Постараюсь помочь теоретически.
Итак. Попробуем нарисовать двумерную радугу. За основу возьмем окружность (для простоты).
Общее уравнение окружности выглядит так: (x-x0)^2*(y-y0)^2=r*r, где (x0,y0) – центр окружности, r – радиус. Но нам нужна не только окружность, но и внутренняя часть круга Чтобы нарисовать круг, пройдем в циклах по квадрату размером 2r на 2r и немного изменим формулу:
(x-x0)^2*(y-y0)^2<r*r
1 2 3 4 5 6 |
for (int i = -r; i< r; i++){ for (int j = -r; j< r; j++){ if ((j*j) + (i*i) <(r*r)) cout << "A"; else cout << "."; } cout << endl; } |
Теперь нам нужен верхний полукруг. Очень просто. Проходим цикл по i до нуля, а не до r.
Заготовка под радугу готова. Теперь разобьем на цвета и вырежем лишнюю часть внизу. Это можно сделать с помощью дополнительных радиусов.
Вот пример кода
1 2 3 4 5 6 7 8 9 10 |
for (int i = -r; i< 0; i++){ for (int j = -r; j< r; j++){ if ((j*j) + (i*i) < (r2*r2)) cout << "."; else{ if (((j*j) + (i*i) < (r1*r1)))cout << "b"; else { if (((j*j) + (i*i) < (r*r))) cout << "!"; else cout << "."; } } } cout << endl; } |
В принципе радуга готова. Вам осталось подстроить под свою реализацию.
Конечно не совсем то, что Вы просили, но все же.