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

RusFAQ.ru: Программирование на Basic / VBA


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

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

Чемпионы рейтинга экспертов в этой рассылке

Armad
Статус: 3-й класс
Рейтинг: 39
∙ повысить рейтинг >>
Шичко Игорь
Статус: Практикант
Рейтинг: 38
∙ повысить рейтинг >>
Megaloman
Статус: Практикант
Рейтинг: 34
∙ повысить рейтинг >>

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

Выпуск № 853
от 18.01.2009, 23:05

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

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 157620: Добрый вечер! Подскажите пожалуйста, как осуществить передвижение точки в пределах формы по заданному закону? Закон, собственно: y= 4,9 t^2(t квадрат) x= 0,5 t Зарарнее благодарю....


Вопрос № 157.620
Добрый вечер! Подскажите пожалуйста, как осуществить передвижение точки в пределах формы по заданному закону?
Закон, собственно:
y= 4,9 t^2(t квадрат)
x= 0,5 t

Зарарнее благодарю.
Отправлен: 13.01.2009, 22:47
Вопрос задал: Vovano (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: HookEst
Здравствуйте, Vovano!
Изменяете по таймеру T, на небольшую величину, на каждой итерации вычисляете X и Y, и рисуете точку в нужном месте...
Только обратите внимание, что на форме ось Y направлена вниз, а начало координат в верхнем левом углу, если нужен "привычный" вид (с осью Y, направленной вверх) надо будет просто задать начальный Y, и MY сделать отрицательным...

Например, для VB6:
Создаете форму, "ложите" на нее Timer с именем Timer, а в модуль формы:
Код:

Option Explicit
'для наглядности
Private Const MX = 10 'масштаб по оси X
Private Const MY = 1 'масштаб по оси Y

Private Const TIMER_INTERVAL = 10 'интервал таймера в милисекундах
Private Const STEP = 0.01 'шаг изменения T на каждой итерации

Private CurX As Single 'текущее значение X
Private CurY As Single 'текущее значение Y
Private CurT As Single 'текущее значение T

Private Sub Form_Load()
Me.ScaleMode = 3 'pixels(обязательно)

Timer.INTERVAL = TIMER_INTERVAL

Calculate 'вычисляем начальные значения
Timer.Enabled = True 'запускаем таймер
End Sub

Private Sub Timer_Timer()
Draw False 'удаляем старую точку, если закомментировать эту строку, получим график
CurT = CurT + STEP 'изменяем T
Calculate 'вычисляем X,Y
Me.Caption = "T = " & CurT & "; X = " & CurX/MX & "; Y = " & CurY/MY
If CurX < 0 Or CurX > ScaleWidth Or CurY < 0 Or CurY > ScaleHeight Then 'если достигли границ формы, значит все...
Timer.Enabled = False 'останавливаем таймер
MsgBox "Done!" & vbCrLf & "T = " & CurT & vbCrLf & "X = " & CurX/MX & vbCrLf & "Y = " & CurY/MY
Else
Draw True 'рисуем точку в новом месте
End If
End Sub

'вычисляет X,Y
Private Sub Calculate()
CurX = MX * 0.5 * CurT
CurY = MY * 4.9 * (CurT ^ 2)
End Sub

Private Sub Draw(ByVal Show As Boolean)
Me.PSet (CurX, CurY), IIf(Show, RGB(255, 0, 0), BackColor) 'для наглядности, вместо точки, можно рисовать окружность: Me.Circle (CurX, CurY), 3, IIf(Show, RGB(255, 0, 0), BackColor)
End Sub

Успехов.
Ответ отправил: HookEst (статус: Специалист)
Ответ отправлен: 14.01.2009, 03:30

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 241142 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

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

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

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

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

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


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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное