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

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

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

Автор: -max- 30.03.2006 16:03

Помогите решить:

Дано три целых числа, определяющих положение центра окружности на экране и ее радиус. Если окружность не пересекает горизонтальную прямую, проходящую через середину экрана, то высветить данную окружность и окружность, симметрическую данной относительно этой прямой.

Автор: volvo 30.03.2006 17:10

В чем проблема? Не знаешь, как определить, пересекаются ли прямая и окружность? Ничего проще: если координата Y центра окружности строго меньше чем ((GetMaxY div 2) - R) или строго больше, чем ((GetMaxY div 2) + R), то окружность и прямая НЕ пересекаются.

Как чертить прямые и окружности - см. Help на Line/Circle

Автор: -max- 16.04.2006 22:30

Помогите доделать задачу:

Дано три целых числа, определяющих положение центра окружности на экране и ее радиус. Если окружность не пересекает горизонтальную прямую, проходящую через середину экрана, то высветить данную окружность и окружность, симметрическую данной относительно этой прямой.


Код
uses crt, graph;
var
driver, mode,error: integer;
x,y,r:word;
begin
writeln('vvedit x,y,r');
readln(x,y,r);
begin
driver:=detect;
initgraph(driver, mode, 'c:\tp\bp\bgi');
error:=graphresult;
line(0,240,640,240);
circle(x,y,r);
if y<((getmaxy div 2)-r) then
circle(x,y,r);
if y>((getmaxy div 2)+r) then
circle(x,y,r);
closegraph;
readln;
end;
end.

Автор: volvo 16.04.2006 22:41

Ты второй пост внимательно прочел? Я же написал: ИЛИ ... ИЛИ

if (y<((getmaxy div 2)-r)) OR (y>((getmaxy div 2)+r))
then { Начертить симметричную окружность }

Автор: Гость 16.04.2006 22:48

А как начертить симметричную окружность???

Автор: Бравый генерал 17.04.2006 1:31

Uses
Graph;

Var
gd,gm,x,y,r,d: Integer;

Begin
WriteLn('Vvedite x,y,r: ');
ReadLn(x,y,r);

gd:=Detect;
InitGraph(gd, gm, 'c:\tp\bp\bgi');

line(0, GetMaxY div 2, GetMaxX, GetMaxY div 2);
Circle(x,y,r);

d:=y - (GetMaxY div 2);
if abs(d) >= r
then Circle(x, (GetMaxY div 2) - d, r);

ReadLn;
CloseGraph
end.