Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Уважаемые знатоки! Добавлено: 22.01.08 15:51  

Автор вопроса:  Папоторник
Уважаемые знатоки, внимание вопрос:
есть код:


Dim a, b, c, d As Single
Dim Hyp As Single
Dim cHyp As Single

Private Sub Command1_Click()
Randomize
a = 200
b = 200
c = Rnd * 20 - 10
d = Rnd * 20 - 10
Form1.Circle (a + c, b + d), 2
Timer1.Enabled = True
End Sub

Private Sub Form_Activate()
Form1.scalemode=3
Form1.autoredraw = true
Circle (200, 200), 100
End Sub

Private Sub Timer1_Timer()
Form1.Circle (a, b), 2, Form1.BackColor
a = a + c
b = b + d
Hyp = Sqr((a - 200) ^ 2 + (b - 200) ^ 2)
    If Hyp > (100 - 2) Then
    cHyp = Hyp / (100 - 2)
    Else
    cHyp = 1
    End If
        a = (a - 200) / cHyp + 200
        b = (b - 200) / cHyp + 200
Form1.Circle (a, b), 2
End Sub

Как сделать, чтобы маленькая окружность при соприкосновении с большой окружностью, начинала двигаться по периметру большой окружности с постонной скоростью.

Ответить

  Ответы Всего ответов: 24  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 23.01.08 02:30
Периметр окружности? Кто-то из нас явно прогуливал математику в школе :)

Ответить

Номер ответа: 2
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 23.01.08 20:28
Приколите! Из википедии:

-> Периметр многоугольника равен сумме длин всех его сторон.
-> Периметр круга (длина окружности): P = 2πr = πd

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 23.01.08 20:30
тфу блин=) опять я туплю! Всё правильно.. периметр круга, а не окружности. сори

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 23.01.08 20:44
Кароче, я показывал как запретить запретить выход за пределы. Пускай у тебя x,y увеличиваются, а круг тупо не выходит за пределы заданного радиуса

Ответить

Номер ответа: 5
Автор ответа:
 Папоторник



Вопросов: 6
Ответов: 22
 Профиль | | #5 Добавлено: 25.01.08 00:47
А если сделать еще один массив с логическими значенями и присваивать 1,если дошел дл круга и 0, если нет, а потом добавлять значения вращения к тем которые со значением 1. Можно так?

Ответить

Номер ответа: 6
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #6
Добавлено: 25.01.08 04:52
Да блин, после столкновения находи координаты каждой точки большой окружности и пихай туда кружочек =) Или в школе не учили тригонометрические функции и параметрическое представление координат окружности? =)
Dim r As Single
Dim fi As Single
Dim x0 As Single, x As Single
Dim y0 As Single, y As Single
Const pi = 3.141592

Me.ScaleMode = 3
Me.AutoRedraw = True

r = 100
x0 = 200
y0 = 200

For fi = 0 To 2 * 3.14 Step 0.001
   x = x0 + r * Sin(fi)
   y = y0 + r * Cos(fi)
   Me.PSet (x, y)
Next

код рисует окружность с центром в точке (x0;y0) радиусом r. Отсюда и пляши, все это дело можно организовать в том таймере, который у тебя уже есть. Находишь новые координаты, закрашиаешь старое, рисуешь новое.

Ответить

Номер ответа: 7
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 25.01.08 10:36
Через интегралы надо

Ответить

Номер ответа: 8
Автор ответа:
 Папоторник



Вопросов: 6
Ответов: 22
 Профиль | | #8 Добавлено: 25.01.08 19:08
Нужно сделать как Steel Brand говорит (мне кажется)...:-D

Ответить

Номер ответа: 9
Автор ответа:
 BUMM ®



Вопросов: 8
Ответов: 482
 Профиль | | #9 Добавлено: 25.01.08 22:45
Через интегралы надо

 
:)

Ответить

Номер ответа: 10
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #10
Добавлено: 26.01.08 01:33
А если сделать еще один массив с логическими значенями и присваивать 1,если дошел дл круга и 0, если нет, а потом добавлять значения вращения к тем которые со значением 1. Можно так?

Я РОЗРЕШАЮ!

Ответить

Номер ответа: 11
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #11
Добавлено: 26.01.08 02:23
Если движемся по окружности, при этом |v|=const, значит
тангенциаонльное ускорение равно нулю. Ускорение направлено по
нормали, формула величины ускорения кажется a=v/(R^2), хотя могу
ошибаться.
Ну а дальше дело техники. Скорость - интеграл ускорения, координата -
интеграл скорости.
Простейшая система дифуров, где начальные условия для задачи Коши
подставляются из значений параметров в момент столкновения (координаты
точки столкновения, скорость и ускорение в этот момент).

Вот.
Если в чем не прав - поправьте, ибо математику уже забыл напрочь,
квадратные уравнения как правило считаю в матлабе.

Ответить

Номер ответа: 12
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #12
Добавлено: 26.01.08 02:24
Папоторник, а сколько заказчик платит за эту систему физического
моделирования, если не секрет?

Ответить

Номер ответа: 13
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #13 Добавлено: 26.01.08 11:09
Павел, спасибо, ты своими словами выразил именно ту мысль которую я хотел донести до автора вопроса!

Ответить

Номер ответа: 14
Автор ответа:
 Папоторник



Вопросов: 6
Ответов: 22
 Профиль | | #14 Добавлено: 26.01.08 12:53
Заказчик - кафедра информатики, оплата - право на дальнейшее обучение.. Это прога должна быть моей т.н. "выпускной работой", которую мне нужно сдать в этот вторник.. Вижу работки у меня еще много..(
P.S.: Steel Brand, сорри, посчитал это сарказмом..

Ответить

Номер ответа: 15
Автор ответа:
 Папоторник



Вопросов: 6
Ответов: 22
 Профиль | | #15 Добавлено: 26.01.08 12:55
Если бы это был реальный заказ, какую бы цену вы назвали, Павел?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам