Товарищи, помогите, пожалуйста, решить следующую задачку, я подозреваю, что должна решаться с помощью Graph. Буду благодарен за любую помощь!
"Нарисовать на экране отрезок. Затем поставить n-точек таким образом, чтобы точки, попадающие на отрезок, рисовались одним цветом, другие - другим. n задается с клавиатуры"
mamont001
4.03.2007 4:30
В чем собственно проблема ? •В рисовании прямой ? •В попадании точек на прямую ? •В рисовании точек ? •В изминении цвета ? Поподробней обясни что тебе надо
mr.PiXEL
4.03.2007 6:10
Точки задаются с помощью randomize, или пользователем?
mamont001
4.03.2007 7:01
вот набросок (n-константа ,сам измениш)
uses graph; const n=50; //количество пикселей var p:boolean; x1,y1,x2,y2:word; pixelsx:array[1..n] of word; pixelsy:array[1..n] of word; i,grd,grm:integer; begin grd:=detect; initgraph(grd,grm,''); // здесь указывается путь к bgi x1:=100; {здесь задаються кординаты линииЪ x2:=300; y1:=200; y2:=100; line(x1,y1,x2,y2); for i:=1 to n do begin pixelsx[i]:=random(640); pixelsy[i]:=random(480); p:=(pixelsx[i]-x1)*(y2-y1)=(pixelsy[i]-y1)*(x2-x1); if p then putpixel(pixelsx[i],pixelsy[i],green) else putpixel(pixelsx[i],pixelsy[i],red); putpixel(pixelsx[i],pixelsy[i],green); end; end.
Но за Библию не принимать так как выскакивает рунтайм ерор . Но основная часть у тебя есть
Bokul
4.03.2007 7:19
Для чего массивы? И эти вычисления? Ты же можешь просто цвет пикселя функцией GetPixel
uses graph; const n=10000; var p:boolean; x,y,color:word; i,grd,grm:integer; begin grd:=detect; initgraph(grd,grm,''); color:=red; SetColor(color); line(100,300,200,100); randomize; for i:=1 to n do begin x:=random(640); y:=random(480); if GetPixel(x,y)=color then PutPixel(x,y,white) else PutPixel(x,y,blue); end; readln; end.
klem4
4.03.2007 19:57
Задача имхо именно на проверку принадлежеости точки прямой. Если 2 раза в одну и туже точку на прямой попадешь то второй-то раз она уже не тем цветом закрасится ... Можно конечно еще один else if ... добавить, но думаю всетаки надо математически проверять принадлежеость.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.