Кружок

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
VINNY-PYX
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 125
Зарегистрирован: 02.02.2004 (Пн) 17:24
Откуда: из роддома

Кружок

Сообщение VINNY-PYX » 26.06.2004 (Сб) 20:58

люди, у меня возникла проблемка - необходимо, чтобы определенный объект двигался по нарисованному кругу. Как это вооплотить в жизнь (если используете тригонометрические функции, то знайте, что я тригонометрию только начал изучать - так что с объяснениями)

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 27.06.2004 (Вс) 13:38

Все просто, смотри!

x это cos
y это sin

Например чтобы на форме нарисовать круг надо вот что сделать:

for i=0 to 100 step o.1
me.pset (cos(i)*20,sin(i)*20)
next i

то есть если мы хотим двигать кнопку по форме то надо сделать так:

for i=0 1000 step 0.1
command1.left=cos(i)*20
command1.top=sin(i)*20
next i

А лучше через таймер! через таймер медленей двигаться будет
удачи" :wink:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

#HammeR#
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.01.2004 (Чт) 12:09
Откуда: г.Краснодар

Сообщение #HammeR# » 27.06.2004 (Вс) 13:52

Можно и без тригонометрии!
Уравнение окружности y=(r^2-x^2)^0.5

areh
Постоялец
Постоялец
 
Сообщения: 530
Зарегистрирован: 02.12.2002 (Пн) 12:28
Откуда: РОССИЯ, Салехард

Сообщение areh » 27.06.2004 (Вс) 14:21

#HammeR# писал(а):Можно и без тригонометрии!
Уравнение окружности y=(r^2-x^2)^0.5
Лучше всётаки воспользоваться тригонометрией, т.к. приведенный тобой способ не совсем верен... т.е. он описывает только полуокружность, т.к. при вычислении корня компутре выдает тольно положительный результат, а следовательно получаеться, что y не может быть менбше 0...

а что касаеться приведенного ещё выше примера, то там не учитыветься центр окружности...

вот доработанный вариант для таймера:

создай на форме Timer1 (Enabled = True, Interval = 5), Command1 и вот этот код:

'Радиус окружности
Dim r As Integer

'Сентр окружности
Dim CenterX As Integer
Dim CenterY As Integer

'угол поворота по окружности, ну или что-то типа того...
Dim ang As Double

Private Sub Form_Load()
CenterX = 1500
CenterY = 1500
r = 500
End Sub

Private Sub Timer1_Timer()
ang = ang + 0.01
If ang >= 2 * 3.14 Then ang = 0

Command1.Left = CenterX + Cos(ang) * r
Command1.Top = CenterY + Sin(ang) * r
End Sub

#HammeR#
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.01.2004 (Чт) 12:09
Откуда: г.Краснодар

Сообщение #HammeR# » 27.06.2004 (Вс) 15:40

Ну вообще ты прав. Полукружность потому, что квадратного корня из отрицательного числа нет

Конечно лучше через тригонометрию, но Винни сказал, что он с ней плохо знаком

VINNY-PYX
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 125
Зарегистрирован: 02.02.2004 (Пн) 17:24
Откуда: из роддома

Сообщение VINNY-PYX » 27.06.2004 (Вс) 19:06

Огромное Медвежачье СПАСИБО!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 6

    TopList