Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2008, 16:37   #1
MyQwErTy
Пользователь
 
Аватар для MyQwErTy
 
Регистрация: 16.10.2008
Сообщений: 73
Вопрос движение окружности по окружности

у меня есть задание: Нарисовать упрощенную модель атома водорода, т.е. большой красный круг в центре (имитирующий протон) и вращающийся вокруг него маленький синий круг (имитирующий электрон).
кто-нибудь знает формулу по которой можно рассчитать следующее положение синего круга??
MyQwErTy вне форума Ответить с цитированием
Старый 03.11.2008, 16:43   #2
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

x=центр+округлить(радиус*cos(время) )
y=центр+округлить(радиус*sin(время) )
свободен...
wall66 вне форума Ответить с цитированием
Старый 03.11.2008, 16:50   #3
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

если нужны относительные координаты (от текущего положения) то берешь два времени и вычитаешь из координат второго координаты первого
свободен...
wall66 вне форума Ответить с цитированием
Старый 03.11.2008, 17:53   #4
MyQwErTy
Пользователь
 
Аватар для MyQwErTy
 
Регистрация: 16.10.2008
Сообщений: 73
По умолчанию

а причем тут время??
MyQwErTy вне форума Ответить с цитированием
Старый 03.11.2008, 19:42   #5
MyQwErTy
Пользователь
 
Аватар для MyQwErTy
 
Регистрация: 16.10.2008
Сообщений: 73
По умолчанию

Код:
program Project1;

{$APPTYPE CONSOLE}

 uses
  wingraph,
  graphics;
 var r,i,x1,y1,x2,y2:integer;
 j:real;
begin
r:=50;
createform('Курсовая, графическая часть',1000,700);
 j:=pi/4;
for i:=1 to 100 do
  begin
 clear;
  setbrushcolor(cLRed);
ellipse(450,300,550,400);
    setbrushcolor(cLblue);
    x1:=450+round((r+1.5)*cos((i-1)*7.2+j));
    y1:=100+round((r+1.5)*sin((i-1)*7.2+j));
    x2:=550+round((r+1.5)*cos((i-1)*7.2+j));
    y2:=200+round((r+1.5)*sin((i-1)*7.2+j));
    ellipse(x1,y1,x2,y2);
    j:=j+0.01
  end;
execute;
end.
вот текст, но результата нет, синий круг не движется, посмотрите код, если ли там ошибки
MyQwErTy вне форума Ответить с цитированием
Старый 03.11.2008, 19:59   #6
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Подобная задача уже была на форуме...
http://www.programmersforum.ru/showthread.php?t=13441
_Dmitry вне форума Ответить с цитированием
Старый 04.11.2008, 00:11   #7
MyQwErTy
Пользователь
 
Аватар для MyQwErTy
 
Регистрация: 16.10.2008
Сообщений: 73
По умолчанию

вот нашел формулы:
x:=(GetMaxX div 2)+trunc(R*sin(ToRad*alpha));
y:=(GetMaxY div 2)-trunc(R*cos(ToRad*alpha));
где R=150 это радиус
и ToRad= Pi/180
alpha:=0
кто мне может объяснить значение константы ToRAd и переменной alpha??, если можно поподробней
MyQwErTy вне форума Ответить с цитированием
Старый 04.11.2008, 06:30   #8
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Я вообще незнаю зачем искать какието исходники.
Тут нужно всеволишь знать функцию синуса и как ей пользоваться.

Глобальная тема про синус и движение по окружности находиться тут:
http://programmersforum.ru/showthread.php?t=25052

Цитата:
кто мне может объяснить значение константы ToRAd и переменной alpha??, если можно поподробней
В Делфи в качестве аргумента функции нужно подставлять угол в радианах. Но так как всем привычней работать с градусами, то делают преобразование. Собственно ToRad (уже из названия понятно) както относиться в этому преобразованию.
Что касается alpha это логично предположить что это угол поворота....

Адд:
Формулы для определения коорднинат:
Код:
x := Round(R * Sin(a * ToRad));
y := Round(R * Cos(a * ToRad));
Где
Код:
Const R = 50;
        ToRad = 3.1415926/180;

Var
  Form1: TForm1;
  a : Integer = 0;
  x, y : Integer;
Для приращения угла:
Код:
a := a + 1;
If a > 359 Then a := 0;
Рисование кружочка по точечкам:
Код:
Form1.Canvas.Pixels[x + 100,y + 100] := ClRed;
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...

Последний раз редактировалось Карась; 04.11.2008 в 07:00.
Карась вне форума Ответить с цитированием
Старый 04.11.2008, 09:58   #9
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

Цитата:
Сообщение от MyQwErTy Посмотреть сообщение
а причем тут время??
движение происходит путем изменения координат с течением времени, в качестве этой переменной подойдет любая постепенно увеличивающаяся (или уменьшающаяся) величина...

советую сначала доучиться в школе...
свободен...
wall66 вне форума Ответить с цитированием
Старый 04.11.2008, 15:17   #10
MyQwErTy
Пользователь
 
Аватар для MyQwErTy
 
Регистрация: 16.10.2008
Сообщений: 73
По умолчанию

Цитата:
советую сначала доучиться в школе...
я то ещё не доучился, в 9-ый пошел
MyQwErTy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение окружности Ensoph Помощь студентам 4 25.09.2008 12:11
Движение окружности и отрезка. Ev@ngel Компоненты Delphi 0 18.04.2008 22:16
Движение кнопки по окружности Инна Помощь студентам 10 22.04.2007 19:32
Движение по окружности Mickle Общие вопросы Delphi 3 13.04.2007 16:24
Анимация. Движение по окружности. Albenous Общие вопросы Delphi 1 11.04.2007 14:57