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

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

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

Автор: dagger 4.11.2006 22:24

люди кто знает помогите.
нужно напечатать координаты точек, попадающих в заштрихованную фигуру, если координата Х изменяется от -3.5 до 2.5 с шагом dX=0.5, а координата У меняется от -3.6 до 2.4 с шагом dУ=0.4
саму фигуру я сделал, а вот с точками проблема.


program Figura;
uses Graph,Crt;
Const
Xc=320;Yc=240;
var c,Gd,Gm,a,b,a1,b1:Integer;x,y:real;
begin
Gd:=Detect;
InitGraph(Gd,Gm,'c:\bp\bgi');
If GraphResult<>grOk then Halt(1);
Circle(Xc,Yc,100);
Line(40,240,600,240);
Line(320,20,320,460);
OutTextXY(600,220,'X');
OutTextXY(300,20,'Y');
Line(420,100,420,280);{liniy s pravo proxod. 2}
Line(440,80,160,450);{liniy 0:0}
Line(170,450,170,150);{liniy proxod. -3}
Line(380,400,80,100);{y=-x-2}
Line(120,430,370,430);{gorizont. liniy}
Line(310,196,350,196);{ggoriz. 1 }
OutTextXY(425,250,'2');
OutTextXY(300,195,'1');
OutTextXY(300,130,'2');
OutTextXY(330,410,'-3');
OutTextXY(150,250,'-3');
OutTextXY(380,365,'Y^2+X^2=4');
repeat until keypressed
end.





Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Archon 5.11.2006 5:42

Вот условие на попадание точки в область:
((y<=-x-2)and(x>=-3)and(x<=0)and(y>=-3))or((y>=x)and(x>=0)and(y<=1))or((y<=x)and(sqr(x)+sqr(y)<=4))or((y<=x)and(y>=0)and(x<=2))
Страшное условие mega_chok.gif
Далее преберай x и y в цикле while или repeat и сверяй попадает ли точка в область.

Автор: dagger 5.11.2006 16:36

Цитата(Archon @ 5.11.2006 1:42) *

Вот условие на попадание точки в область:
((y<=-x-2)and(x>=-3)and(x<=0)and(y>=-3))or((y>=x)and(x>=0)and(y<=1))or((y<=x)and(sqr(x)+sqr(y)<=4))or((y<=x)and(y>=0)and(x<=2))
Страшное условие mega_chok.gif
Далее преберай x и y в цикле while или repeat и сверяй попадает ли точка в область.


а как мне выдилить область
допустим где многоугольники можно попробовать использовать процедуру FillPoly, как мне выделить
область правой нижней части окружности.

Автор: volvo 5.11.2006 18:59

dagger, тебе же показали условие, при котором точка внутри фигуры? Теперь все просто: Ходи в цикле по всем координатам, и проверяй. Если точка внутри, то рисуй ее другим цветом... Заодно и посчитаешь, сколько точек попадают в фигуру, а сколько нет.

Автор: Archon 6.11.2006 3:30

Цитата
а как мне выдилить область
допустим где многоугольники можно попробовать использовать процедуру FillPoly, как мне выделить
область правой нижней части окружности.
Графически? Используй FloodFill.