Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача на точки

Автор: erwin 4.03.2007 4:23

Товарищи, помогите, пожалуйста, решить следующую задачку, я подозреваю, что должна решаться с помощью Graph. Буду благодарен за любую помощь!

"Нарисовать на экране отрезок. Затем поставить n-точек таким образом, чтобы точки, попадающие на отрезок, рисовались одним цветом, другие - другим. n задается с клавиатуры"

Автор: mamont001 4.03.2007 4:30

В чем собственно проблема ?
•В рисовании прямой ?
•В попадании точек на прямую ?
•В рисовании точек ?
•В изминении цвета ?
Поподробней обясни что тебе надо smile.gif

Автор: 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.


Но за Библию не принимать stop.gif так как выскакивает рунтайм ерор . Но основная часть у тебя есть

Автор: 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

no1.gif Задача имхо именно на проверку принадлежеости точки прямой. Если 2 раза в одну и туже точку на прямой попадешь то второй-то раз она уже не тем цветом закрасится ... Можно конечно еще один else if ... добавить, но думаю всетаки надо математически проверять принадлежеость.