Как заполнить круг белыми точками рандомно? - Pascal
Формулировка задачи:
putpixel(random((320-R)+1+(320+R)-1), random((240-R)+1+(240+R)-1),white); Что нужно написать тут чтобы точки были только внутри круга?
program krug;
uses crt,graph;
var R,d,m,i: Integer;
Begin
clrscr;
Writeln('Vvedite radius okruznosti R');
read(R);
d:=9;
m:=2;
initgraph(d,m,'');
randomize;
setcolor(2);
circle(320,240,R);
setfillstyle(1,green);
floodfill(320,240,green);
for i:= 1 to 100 do
putpixel(random((320-R)+1+(320+R)-1), random((240-R)+1+(240+R)-1),white);
readln;
readkey;
end.Решение задачи: «Как заполнить круг белыми точками рандомно?»
textual
Листинг программы
const xc=320; yc=240; ... Circle(xc,yc,R); ... for i:=1 to 100 do begin repeat tx:=-R+Random(2*R+1); ty:=-R+Random(2*R+1); until Sqr(tx)+Sqr(ty)<=Sqr(R); PutPixel(xc+tc,yc+tc,White); end;
Объяснение кода листинга программы
- Создание констант
xcиycсо значениями320и240соответственно. - Отображение круга с центром в точке (
xc,yc) и радиусомR. - Цикл для заполнения области вокруг круга белыми точками, повторяемый 100 раз:
- Генерация случайных координат
txиtyв диапазоне от-RдоR. - Повторять генерацию случайных координат, пока сумма их квадратов не будет меньше или равна квадрату радиуса круга.
- Установка пикселя с координатами (
xc+tc,yc+tc) в цвет белый (White).
- Генерация случайных координат