Вопрос № 43846: Здравствуйте!
Подскажите пример перемещения маленького объекта (круг, квадрат и т.д.) по траектории эллипса с заданным центром и полуосями.
Суть в том, по какому закону его двигать, как это всё организовать.
Заранее огромное спасибо!...
Вопрос № 43.846
Здравствуйте!
Подскажите пример перемещения маленького объекта (круг, квадрат и т.д.) по траектории эллипса с заданным центром и полуосями.
Суть в том, по какому закону его двигать, как это всё организовать.
Заранее огромное спасибо!
Отправлен: 22.05.2006, 13:16
Вопрос задал: ab5ent (статус: 8-ой класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 7)
r := 10; // задать радиус круга, который будет отрисовываться.
t := 0.0;
repeat
t := t + 0.05; // число влияет на скорость движения по траектории
x := CenterX + round(a*cos(t));
y := CenterY - round(b*sin(t)); // движение против часовой стрелки. Изментие знак на +, будет движение по часовой.
// стерть круг - либо нарисовать черным, либо вообще очистить все нафиг. Т.е. что-дь типа ClrScr;
Sleep(40);
// нарисовать круг
until {условия окончания цикла, например (t > 4 * 3.14) - два полных оборота}
Я не помню, есть ли процедура Circle в Паскале. Если нет - используйте Ellipse
Circle(x,y,r) / Ellipse(x+r,y+r,x-r,y-r)
Чтобы рисовать каким-либо цветом, надо вызвать процедуру SetColor(<номер цвета>);
В зависимости от режима экрана, могут быть разные палитры. Попробуйте использовать 255 или
15 для белого и 0 для черного.
В принципе, можно объявить свою процедуру рисования Draw(x,y: integer);
и в ней рисовать круг, квадрат или что еще душе будет угодно.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: 6-ой класс)
Ответ отправлен: 22.05.2006, 14:36 Оценка за ответ: 5 Комментарий оценки: Отлично! Принцип рабочий!Всё получилось.
Отвечает: Полховский Александр Владимирович
Здравствуйте, ab5ent!
Уравнение эллипса:
(x-x0)²/a²+(y-y0)²/b²=1 x0 и y0 - координаты центра эллипса, a, b - полуоси. Выразите y через x (или наоборот).
Высчитывать координаты нужно с некоторым шагом. При этом за каждый цикл необходимо стереть предыдущее изображение, прибавить (или отнять) шаг и нарисовать новое изображение в новом месте, затем сделать паузу delay(ms).
Ну а отрисовку объекта сами придумайте. Главное - закрашивать предыдущий цветом фона и отрисовывать новый другим цветом.
--------- Спасём нашу хрупкую планету !
Ответ отправил: Полховский Александр Владимирович (статус: Практикант)
Ответ отправлен: 22.05.2006, 19:43 Оценка за ответ: 4 Комментарий оценки: Это не совсем рабочий алгоритм. Так я пробовал. Эта штуковина задаёт гиперболы ;) А чтобы работала правильно, нужно кучу условий...