Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 174
от 27.05.2006, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 184, Экспертов: 49
В номере:Вопросов: 1, Ответов: 2


Вопрос № 43846: Здравствуйте! Подскажите пример перемещения маленького объекта (круг, квадрат и т.д.) по траектории эллипса с заданным центром и полуосями. Суть в том, по какому закону его двигать, как это всё организовать. Заранее огромное спасибо!...

Вопрос № 43.846
Здравствуйте!
Подскажите пример перемещения маленького объекта (круг, квадрат и т.д.) по траектории эллипса с заданным центром и полуосями.
Суть в том, по какому закону его двигать, как это всё организовать.
Заранее огромное спасибо!
Отправлен: 22.05.2006, 13:16
Вопрос задал: ab5ent (статус: 8-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, ab5ent!
Вам задается a,b,centerX,centerY:integer;
var
x,y,r: integer;
t: float;

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
Комментарий оценки:
Это не совсем рабочий алгоритм. Так я пробовал. Эта штуковина задаёт гиперболы ;)
А чтобы работала правильно, нужно кучу условий...


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.33 от 25.05.2006
Яндекс Rambler's Top100

В избранное