Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: помогите изменить программу Добавлено: 20.05.11 09:49  

Автор вопроса:  Екатерина | ICQ: 601762324 
физическая задача:Опыт Резерфорда
поток частиц летит на заряженную неподвижную частицу и летящие частицы откланяются от неподвижной на некоторый угол альфа.У меня частицы вылетают сразу все, а мне нужно чтоб по одной:одна вылетела отклонилась и скрылась из зоны видимости,затем вылетает следующая и так далее.
Помогите пожалуйста.Вот код моей задачи:(количество частиц вводится с помощью скрола,а также длина источника из которого вылетают частицы)
Dim c(249, 3) As Single
Dim q As Integer
Dim q1 As Integer
Dim dt As Single

Private Sub Command1_Click()
Command2_Click
q = 1
q1 = 1
v = HScroll4.Value / 10
While i < CInt(Text5)
    c(i, 0) = -90
    c(i, 1) = HScroll1.Value * (Rnd - 0.5)
    c(i, 2) = v
    c(i, 3) = 0
    i = i + 1
    Wend
Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
Picture1.Cls
Timer1.Enabled = False
Picture1.Circle (0, 0), 1
Picture1.Line (-90, HScroll1.Value / 2)-(-90, -HScroll1.Value / 2)
Picture2.Cls
End Sub

Private Sub Command3_Click()
End
End Sub

Private Sub Form_Load()
Picture1.BackColor = vbWhite
Picture1.AutoRedraw = True
Picture1.Height = Picture1.Width
HScroll1.Min = 1
HScroll1.Max = 25
HScroll1.Value = 5
HScroll4.Min = 5
HScroll4.Max = 15
HScroll4.Value = 12
HScroll5.Min = 1
HScroll5.Max = 250
HScroll5.Value = 210
Text1 = HScroll1.Value
Text4 = HScroll4.Value
Text5 = HScroll5.Value
Picture1.Scale (-110, 100)-(90, -100)
Picture1.FillColor = &HFF&
Picture1.FillStyle = 0
Picture1.Circle (0, 0), 1
Picture1.Line (-90, HScroll1.Value / 2)-(-90, -HScroll1.Value / 2)
Randomize
Timer1.Enabled = False
Timer1.Interval = 10
dt = 1
End Sub

Private Sub HScroll1_Change()
Picture1.Cls
Picture1.Circle (0, 0), 1
Picture1.Line (-90, HScroll1.Value / 2)-(-90, -HScroll1.Value / 2)
Text1 = HScroll1.Value
End Sub
Private Sub HScroll4_Change()
Text4 = HScroll4.Value
End Sub

Private Sub HScroll5_Change()
Text5 = HScroll5.Value
End Sub

Private Sub Timer1_Timer()
While i < CInt(Text5)
    r = Sqr(c(i, 0) * c(i, 0) + c(i, 1) * c(i, 1))
    If r > 100 Then graf

Ответить

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

Номер ответа: 1
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #1
Добавлено: 20.05.11 10:31
Здесь не весь код. Лучше выложила бы где нить архив проекта.

Ответить

Номер ответа: 2
Автор ответа:
 Екатерина



ICQ: 601762324 

Вопросов: 2
Ответов: 2
 Профиль | | #2 Добавлено: 20.05.11 10:53
ой извиняюсь,вот весь код:
Dim c(249, 3) As Single
Dim q As Integer
Dim q1 As Integer
Dim dt As Single

Private Sub Command1_Click()
Command2_Click
q = 1
q1 = 1
v = HScroll4.Value / 10
While i < CInt(Text5)
    c(i, 0) = -90
    c(i, 1) = HScroll1.Value * (Rnd - 0.5)
    c(i, 2) = v
    c(i, 3) = 0
    i = i + 1
    Wend
Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
Picture1.Cls
Timer1.Enabled = False
Picture1.Circle (0, 0), 1
Picture1.Line (-90, HScroll1.Value / 2)-(-90, -HScroll1.Value / 2)
Picture2.Cls
End Sub

Private Sub Command3_Click()
End
End Sub

Private Sub Form_Load()
Picture1.BackColor = vbWhite
Picture1.AutoRedraw = True
Picture1.Height = Picture1.Width
HScroll1.Min = 1
HScroll1.Max = 25
HScroll1.Value = 5
HScroll4.Min = 5
HScroll4.Max = 15
HScroll4.Value = 12
HScroll5.Min = 1
HScroll5.Max = 250
HScroll5.Value = 210
Text1 = HScroll1.Value
Text4 = HScroll4.Value
Text5 = HScroll5.Value
Picture1.Scale (-110, 100)-(90, -100)
Picture1.FillColor = &HFF&
Picture1.FillStyle = 0
Picture1.Circle (0, 0), 1
Picture1.Line (-90, HScroll1.Value / 2)-(-90, -HScroll1.Value / 2)
Randomize
Timer1.Enabled = False
Timer1.Interval = 10
dt = 1
End Sub

Private Sub HScroll1_Change()
Picture1.Cls
Picture1.Circle (0, 0), 1
Picture1.Line (-90, HScroll1.Value / 2)-(-90, -HScroll1.Value / 2)
Text1 = HScroll1.Value
End Sub
Private Sub HScroll4_Change()
Text4 = HScroll4.Value
End Sub

Private Sub HScroll5_Change()
Text5 = HScroll5.Value
End Sub

Private Sub Timer1_Timer()
While i < CInt(Text5)
    r = Sqr(c(i, 0) * c(i, 0) + c(i, 1) * c(i, 1))
    If r > 100 Then graf
    ax = q * q1 * (c(i, 0)) / r ^ 3
    ay = q * q1 * (c(i, 1)) / r ^ 3
    c(i, 2) = c(i, 2) + ax * dt
    c(i, 3) = c(i, 3) + ay * dt
    c(i, 0) = c(i, 0) + c(i, 2) * dt
    c(i, 1) = c(i, 1) + c(i, 3) * dt
    Picture1.PSet (c(i, 0), c(i, 1))
    i = i + 1
Wend
End Sub

Public Sub graf()
Dim gr(360)
Timer1.Enabled = False
Picture2.Scale (-180, 10)-(180, 0)
While i < CInt(Text5)
    alfa = Atn(c(i, 1) / c(i, 0)) * 180 / 3.145
    If c(i, 0) < 0 And c(i, 1) > 0 Then alfa = 180 + alfa
    If c(i, 0) < 0 And c(i, 1) < 0 Then alfa = -180 + alfa
    gr(alfa + 180) = gr(alfa + 180) + 1
    i = i + 1
Wend
j = 0
While j < 361
Picture2.Line (j - 180, 0)-(j - 180, gr(j))
If gr(j) > Max Then Max = gr(j): h = j
gr(j) = 0
j = j + 1
Wend
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #3
Добавлено: 21.05.11 00:09
  1. Option Explicit
  2.  
  3. Private c(249, 3)   As Single
  4. Private q           As Integer
  5. Private q1          As Integer
  6. Private dt          As Single
  7.  
  8. Private Sub Command1_Click()
  9. Dim v As Long, _
  10.     i As Long
  11. Command2_Click
  12. q = 1
  13. q1 = 1
  14. v = HScroll4.Value / 10
  15. While i < CInt(Text5)
  16.     c(i, 0) = -90
  17.     c(i, 1) = HScroll1.Value * (Rnd - 0.5)
  18.     c(i, 2) = v
  19.     c(i, 3) = 0
  20.     i = i + 1
  21. Wend
  22. Timer1.Enabled = True
  23. End Sub
  24.  
  25. Private Sub Command2_Click()
  26. Picture1.Cls
  27. Timer1.Enabled = False
  28. Picture1.Circle (0, 0), 1
  29. Picture1.Line (-90, HScroll1.Value / 2)-(-90, -HScroll1.Value / 2)
  30. Picture2.Cls
  31. End Sub
  32.  
  33. Private Sub Command3_Click()
  34. End
  35. End Sub
  36.  
  37. Private Sub Form_Load()
  38. Picture1.BackColor = vbWhite
  39. Picture1.AutoRedraw = True
  40. Picture1.Height = Picture1.Width
  41. HScroll1.Min = 1
  42. HScroll1.Max = 25
  43. HScroll1.Value = 5
  44. HScroll4.Min = 5
  45. HScroll4.Max = 15
  46. HScroll4.Value = 12
  47. HScroll5.Min = 1
  48. HScroll5.Max = 250
  49. HScroll5.Value = 210
  50. Text1 = HScroll1.Value
  51. Text4 = HScroll4.Value
  52. Text5 = HScroll5.Value
  53. Picture1.Scale (-110, 100)-(90, -100)
  54. Picture1.FillColor = &HFF&
  55. Picture1.FillStyle = 0
  56. Picture1.Circle (0, 0), 1
  57. Picture1.Line (-90, HScroll1.Value / 2)-(-90, -HScroll1.Value / 2)
  58. Randomize
  59. Timer1.Enabled = False
  60. Timer1.Interval = 10
  61. dt = 1
  62. End Sub
  63.  
  64. Private Sub HScroll1_Change()
  65. Picture1.Cls
  66. Picture1.Circle (0, 0), 1
  67. Picture1.Line (-90, HScroll1.Value / 2)-(-90, -HScroll1.Value / 2)
  68. Text1 = HScroll1.Value
  69. End Sub
  70.  
  71. Private Sub HScroll4_Change()
  72. Text4 = HScroll4.Value
  73. End Sub
  74.  
  75. Private Sub HScroll5_Change()
  76. Text5 = HScroll5.Value
  77. End Sub
  78.  
  79. Private Sub Timer1_Timer()
  80. Static i As Long
  81. Dim r   As Long, _
  82.     ax  As Single, _
  83.     ay  As Single
  84. r = Sqr(c(i, 0) ^ 2 + c(i, 1) ^ 2)
  85. If r > 100 Then i = i + 1
  86. If i = CInt(Text5) Then
  87.     Graf
  88.     Exit Sub
  89. End If
  90. ax = q * q1 * (c(i, 0)) / r ^ 3
  91. ay = q * q1 * (c(i, 1)) / r ^ 3
  92. c(i, 2) = c(i, 2) + ax * dt
  93. c(i, 3) = c(i, 3) + ay * dt
  94. c(i, 0) = c(i, 0) + c(i, 2) * dt
  95. c(i, 1) = c(i, 1) + c(i, 3) * dt
  96. Picture1.PSet (c(i, 0), c(i, 1))
  97. End Sub
  98.  
  99. Public Sub Graf()
  100. Dim gr(360) As Long, _
  101.     i       As Long, _
  102.     alfa    As Single, _
  103.     j       As Long, _
  104.     Max     As Long, _
  105.     h       As Long
  106. Timer1.Enabled = False
  107. Picture2.Scale (-180, 10)-(180, 0)
  108. While i < CInt(Text5)
  109.     alfa = Atn(c(i, 1) / c(i, 0)) * 180 / 3.145
  110.     If c(i, 0) < 0 And c(i, 1) > 0 Then alfa = 180 + alfa
  111.     If c(i, 0) < 0 And c(i, 1) < 0 Then alfa = -180 + alfa
  112.     gr(alfa + 180) = gr(alfa + 180) + 1
  113.     i = i + 1
  114. Wend
  115. j = 0
  116. While j < 361
  117.     Picture2.Line (j - 180, 0)-(j - 180, gr(j))
  118.     If gr(j) > Max Then Max = gr(j): h = j
  119.     gr(j) = 0
  120.     j = j + 1
  121. Wend
  122. End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Екатерина



ICQ: 601762324 

Вопросов: 2
Ответов: 2
 Профиль | | #4 Добавлено: 31.05.11 10:55
огромное спасибо!!!!!!))))

Ответить

Страница: 1 |

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



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