С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Tinara
1 / 1 / 0
Регистрация: 29.02.2012
Сообщений: 8
1

Модуль Graph. Изобразить две концентрических окружности и движущиеся по ним две точки в противоположных направлениях

28.05.2012, 17:48. Просмотров 913. Ответов 1
Метки нет (Все метки)

Изобразить две концентрических окружности и движущиеся по них две точки в противоположных направлениях
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2012, 17:48
Ответы с готовыми решениями:

Изобразить на экране две точки, движущиеся по окружности с постоянной угловой скоростью в разных направлениях
Изобразить на экране две точки (круга), движущиеся по окружности с постоянной угловой скоростью в...

Изобразить отрезок и показать перемещение точки по нему от одного конца до другого (модуль Graph)
Изобразить отрезок и показать перемещение точки по нему от одного конца до другого.

Изобразить точку, движущуюся по окружности с постоянной угловой скоростью (graph)
Изобразить на экране точку (круг), движущуюся по окружности с постоянной угловой скоростью.

Реализовать функции получения точки пересечения прямых, прямой, проходящей через две точки
Здравствуйте, программисты! Мне снова попалась задача, условие которой я не могу понять и очень...

На плоскости даны две окружности. Ппроверить, пересекаются ли они
Помогите! Проблема с задачей. Две окружности На плоскости даны две окружности. Требуется...

1
Puporev
Модератор
55502 / 42592 / 29442
Регистрация: 18.05.2008
Сообщений: 100,748
30.05.2012, 15:16 2
Лучший ответ Сообщение было отмечено Tinara как решение

Решение

По простому.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
uses wincrt,graph;
var xc,yc,r1,r2,n1,n2,i,j,k:integer;
    m1,m2:array[1..2000] of pointtype;{массивы точек окружности}
    u:real;
begin
initgraph(xc,yc,'');
xc:=getmaxX div 2;
yc:=getmaxY div 2;
r1:=100;
r2:=80;
u:=0;
n1:=0;
while u<=2*pi do
 begin
  n1:=n1+1;
  m1[n1].x:=xc+round(r1*cos(u));
  m1[n1].y:=yc-round(r1*sin(u));
  u:=u+0.01;
 end;
u:=0;
n2:=0;
while u<=2*pi do
 begin
  n2:=n2+1;
  m2[n2].x:=xc+round(r2*cos(u));
  m2[n2].y:=yc-round(r2*sin(u));
  u:=u+0.01;
 end;
u:=0;
outtextXY(xc-50,30,'Exit - any key');
repeat
setfillstyle(1,0);
bar(xc-r1-2,yc-r1-2,xc+r1+2,yc+r1+2);
for i:=1 to n2 do
putpixel(m2[i].x,m2[i].y,10);
setcolor(12);
circle(xc+round(r2*cos(u)),yc+round(r2*sin(u)),2);
setfillstyle(1,12);
floodfill(xc+round(r2*cos(u)),yc+round(r2*sin(u)),12);
for i:=1 to n1 do
putpixel(m1[i].x,m1[i].y,14);
setcolor(9);
circle(xc+round(r1*cos(u)),yc-round(r1*sin(u)),2);
setfillstyle(1,9);
floodfill(xc+round(r1*cos(u)),yc-round(r1*sin(u)),9);
delay(100);
u:=u+0.1;
if u>2*pi then u:=0;
until keypressed;
end.
Добавлено через 1 час 35 минут
То же, более грамотно, без мерцания.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
uses wincrt,graph;
var xc,yc,r1,r2,s1,s2:integer;
    p1,p2:pointer;
    u:real;
begin
initgraph(xc,yc,'');
xc:=getmaxX div 2;
yc:=getmaxY div 2;
r1:=100;
r2:=80;
outtextXY(xc-50,30,'Exit - any key');
setcolor(14);
circle(xc,yc,r1);
setcolor(10);
circle(xc,yc,r2);
{создадим 1 шарик}
setcolor(9);
circle(2,2,2);
setfillstyle(1,9);
floodfill(1,1,9);
s1:=imagesize(0,0,4,4);
getmem(p1,s1);{выделим память по него}
getimage(0,0,4,4,p1^);{запомним эту область экрана}
putimage(0,0,p1^,xorput);{сотрем изображение}
{также 2 шарик}
setcolor(12);
circle(2,2,2);
setfillstyle(1,12);
floodfill(1,1,12);
s2:=imagesize(0,0,4,4);
getmem(p2,s2);
getimage(0,0,4,4,p2^);
{стираем 2}
putimage(0,0,p2^,xorput);
{основной цикл вращения шариков}
u:=0; {начальный угол=0}
repeat
{рисуем шарики}
{1 против часовой стрелки}
putimage(xc+round(r1*cos(u)),yc-round(r1*sin(u)),p1^,xorput);
{ 2 по часовой стрелке}
putimage(xc+round(r2*cos(u)),yc+round(r2*sin(u)),p2^,xorput);
delay(100);{задержка}
{стираем}
putimage(xc+round(r1*cos(u)),yc-round(r1*sin(u)),p1^,xorput);
putimage(xc+round(r2*cos(u)),yc+round(r2*sin(u)),p2^,xorput);
u:=u+0.1;{поворачиваем на 0.1 радиана и рисуем в новом месте}
if u>2*pi then u:=0;{чтобы не накапливать, на каждом обороте обнуляем}
until keypressed;{нажатие клавиши - выход}
end.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2012, 15:16

На плоскости даны две окружности. Требуется проверить, пересекаются ли они
На сайте решаю задачу, на моём компе всё работает а там не принимает пишет ошибка компиляции: На...

Проверить, сколько точек (нуль, одна или две) принадлежит внутренности окружности
Заданы координаты двух точек р=(р1;р2), F=(f1;f2) и окружность радиуса r с координатой центра...

Найти две самые удалённые точки
Один очень сильный мальчик по имени Тима поймал Вас на переулке Манхэттена. Единственный шанс уйти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru