Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Anton.
0 / 0 / 0
Регистрация: 26.01.2011
Сообщений: 2
#1

Перемещение линии по радиусу.

29.01.2011, 12:04. Просмотров 795. Ответов 3
Метки нет (Все метки)

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

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program radar;
    uses graph;
  var
      grdriver,grmode:integer;
 begin
      grdriver:=detect;
         initgraph(grdriver,grmode,'c:\program files\schoolPak\pak\bp\vga256.bgi');
 setcolor(2);
circle(330,235,233);
circle(330,235,137);
circle(330,235,71);
    line(329,2,329,468);
     line(98,233,563,233);
       line(179,58,480,410);
        line(180,415,475,55);
   setcolor(white);
 lineto(280,459);{ вот эту линию нужно заставить перемещаться по радиусу, как в часах короче}
readln;
closegraph;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2011, 12:04
Ответы с готовыми решениями:

По заданному радиусу R найти объем шара и площадь его поверхности
Помогите пожалуйста с задачей по информатике . Тема Турбо Паскаль. Вот задача:...

Вместо квадрата сделать шар и чтобы он крутился посередине по определенному радиусу
прога рабочая, нужно вместо квадрата сделать шар и чтобы он крутился посередине...

площадь кольца, ширина которого равна h, а отношение радиуса большей окружности к радиусу меньшей окружности равно d
Помогите пожалуйста с задачей Вычислите площадь кольца, ширина которого...

Перемещение линии по оси х
Подскажи ,пожалуйста. Есть нарисованная линия по двум точкам. Как можно...

Перемещение нарированный линии с клавиатуры
Как мне переместить линию клавишами t,f,g,h с зажатой клавишей shift и как...

3
Puporev
Модератор
54405 / 41978 / 28996
Регистрация: 18.05.2008
Сообщений: 98,886
29.01.2011, 13:06 #2
Вот так по часовой стрелке, если наоборот, поменять синус и косинус при вычислении координат конца линии, скорость вращения зависит от задержки(delay) и от приращения угла а.
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
program radar;
uses graph,crt;
var grdriver,grmode,xc,yc,a,x,y,r:integer;
begin
grdriver:=detect;
initgraph(grdriver,grmode,'c:\program files\schoolPak\pak\bp\vga256.bgi');
xc:=getmaxX div 2;
yc:=getmaxY div 2;
r:=230;
a:=0;
repeat
setcolor(2);
circle(xc,yc,r);
circle(xc,yc,r-100);
circle(xc,yc,r-160);
line(xc,yc-r,xc,yc+r);
line(xc-r,yc,xc+r,yc);
line(xc+round(r*cos(pi/4)),yc-round(r*sin(pi/4)),xc-round(r*cos(pi/4)),yc+round(r*sin(pi/4)));
line(xc-round(r*cos(pi/4)),yc-round(r*sin(pi/4)),xc+round(r*cos(pi/4)),yc+round(r*sin(pi/4)));
setcolor(white);
x:=xc+round(r*sin(a*pi/180));
y:=yc-round(r*cos(a*pi/180));
line(xc,yc,x,y);
delay(50);
setcolor(0);
circle(xc,yc,r);
circle(xc,yc,r-100);
circle(xc,yc,r-160);
line(xc,yc-r,xc,yc+r);
line(xc-r,yc,xc+r,yc);
line(xc+round(r*cos(pi/4)),yc-round(r*sin(pi/4)),xc-round(r*cos(pi/4)),yc+round(r*sin(pi/4)));
line(xc-round(r*cos(pi/4)),yc-round(r*sin(pi/4)),xc+round(r*cos(pi/4)),yc+round(r*sin(pi/4)));
line(xc,yc,x,y);
a:=a+1;
until keypressed;
end.
1
Anton.
0 / 0 / 0
Регистрация: 26.01.2011
Сообщений: 2
29.01.2011, 22:23 #3
а вот еще вопросик...
в 25 строке вашей версии программы там где setcolor я изменил цвет на green. изменил delay и поставил 1. теперь при перемещении линии она закрашивает область всего круга...как сделать чтобы после полного оборота область круга очищалась, т.е первый оборот круг закрашен,второй оборот чистая область и так через каждый оборот.спасибо.
0
Puporev
Модератор
54405 / 41978 / 28996
Регистрация: 18.05.2008
Сообщений: 98,886
30.01.2011, 07:34 #4
Считайте обороты и меняйте цвет закраски, например нечетные-зеленый, четные черный(0).
Pascal
1
2
3
4
5
6
7
8
k:=0;
repeat
k:=k+1;
if odd(k) then c:=2
else c:=0;
Setcolor(c);
все делаем
until keypressed or (k>1000);//ограничение по к не обязательно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2011, 07:34

Осуществить вращение линии и ее перемещение
есть линия, которая является спицей колеса. как сделать так, чтобы она...

Как сделать перемещение линии на канве?
Допустим есть линия, которая соединяет два каких то объекта. Как сделать чтобы...

Перемещение точки по линии из 1 обьекта в другой
Предположим есть область (А и Б ) из области А в область Б лежит кривая или...


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

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

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