Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Parabola - frmParabola.frm

frmParabola.frm

Caricato da: Roberto VB
Scarica il programma completo

  1. Option Explicit
  2.     'Equazione
  3.     Dim stEquazione As String
  4.     'Scala
  5.     Dim Scala As Integer
  6.     Dim stAbc() As String
  7.     'Valori dell'equazione
  8.     Dim lA As Double
  9.     Dim lB As Double
  10.     Dim lC As Double
  11.     'Delta
  12.     Dim lDelta As Double
  13.     'Coordinate vertice
  14.     Dim Xvertice As Double
  15.     Dim Yvertice As Double
  16.     'Coordinate fuoco
  17.     Dim Xfuoco As Double
  18.     Dim Yfuoco As Double
  19.     'direttrice
  20.     Dim direttrice As Double
  21.     'asse di simmetria
  22.     Dim Asse As Double
  23. Sub Punti()
  24. Dim i As Integer
  25. Dim X As Single
  26. Dim Y As Single
  27. 'INIZIALIZZO IL GRAFICO
  28.     picGrafico.Scale (-Scala, Scala)-(Scala, -Scala)
  29.     picGrafico.Line (-Scala, 0)-(Scala, 0) 'asse X
  30.     picGrafico.Line (0, Scala)-(0, -Scala) 'asse Y
  31.     'FINE INIZIALIZZO IL GRAFICO
  32. X = 1
  33. 'INIZIALIZZO LA PROGRESSBAR
  34.     ProgressBar1.Min = 0
  35.     ProgressBar1.Max = 400
  36.     'FINE INIZIALIZZAZIONE PROGRESSBAR
  37. For i = 0 To 199
  38.     X = X + 0.05
  39.     'Sostituisco all'equazione della parabola i valori di x
  40.     Y = (lA * (X ^ 2)) + (lB * X) + lC
  41.     txtPunti.Text = txtPunti.Text & "x: " & X & "       y: " & Y & vbCrLf
  42.     'Faccio i calcoli per il grafico
  43.         Select Case i
  44.             Case Is = 0
  45.                 picGrafico.Line (Xvertice, Yvertice)-(X, Y)
  46.             Case Else
  47.                 picGrafico.Line -(X, Y)
  48.         End Select
  49.     ProgressBar1.Value = i 'incremento
  50. Next i
  51. 'CALCOLO IL SIMMETRICO
  52. X = -1
  53. For i = 200 To 400
  54.     X = X - 0.05
  55.     Y = (lA * (X ^ 2)) + (lB * X) + lC
  56.     txtPunti.Text = txtPunti.Text & "x: " & X & "       y: " & Y & vbCrLf
  57.     'Faccio i calcoli per il grafico
  58.         Select Case i
  59.             Case Is = 200
  60.                 picGrafico.Line (Xvertice, Yvertice)-(X, Y)
  61.             Case Else
  62.                 picGrafico.Line -(X, Y)
  63.         End Select
  64.     ProgressBar1.Value = i 'incremento
  65. Next i
  66. 'INIZIO DISEGNO ASSE DI SIMMETRIA
  67.     picGrafico.Line (Asse, -Scala)-(Asse, Scala), vbGreen
  68.     picGrafico.Print "x"
  69.     'FINE DISEGNO ASSE DI SIMMETRIA
  70. 'INIZIO DISEGNO FUOCO
  71.     picGrafico.PSet (Xfuoco, Yfuoco), vbBlack
  72.     picGrafico.CurrentX = Xfuoco
  73.     picGrafico.CurrentY = Yfuoco
  74.     'picGrafico.Print "F"
  75.     'FINE DISEGNO FUOCO
  76. 'INIZIO DISEGNO DIRETTRICE
  77.     picGrafico.Line (-Scala, direttrice)-(Scala, direttrice), vbBlack
  78.     picGrafico.CurrentX = direttrice
  79.     picGrafico.Print "y"
  80.     'FINE DISEGNO DIRETTRICE
  81. 'INIZIO DISEGNO VERTICE
  82.     picGrafico.CurrentX = Xvertice
  83.     picGrafico.CurrentY = Yvertice
  84.     picGrafico.Print "V"
  85.     'FINE DISEGNO VERTICE
  86. End Sub
  87.  
  88. Private Sub cmdCalcola_Click()
  89. On Error GoTo errore
  90. Analizza
  91. 'INIZIO CALCOLO DEL VERTICE
  92.     Xvertice = -lB / (2 * lA)
  93.     Yvertice = (-(lDelta)) / (4 * lA)
  94.     'FORMULA ESTESA(-(lB ^ 2) + (4 * lA * lC)) / (4 * lA)
  95.     txtVertice.Text = "(" & Xvertice & " ; " & Yvertice & ")"
  96.     'FINE CALCOLO DEL VERTICE
  97. 'INIZIO CALCOLO DEL FUOCO
  98.     Xfuoco = -lB / (2 * lA)
  99.     Yfuoco = (1 - lDelta) / (4 * lA)
  100.     txtFuoco.Text = "(" & Xfuoco & " ; " & Yfuoco & ")"
  101.     'FINE CALCOLO DEL FUOCO
  102. 'INIZIO CALCOLO DELLA DIRETTRICE
  103.     direttrice = -(1 + lDelta) / (4 * lA)
  104.     txtDirettrice.Text = "y= " & direttrice
  105.     'FINE CALCOLO DELLA DIRETTRICE
  106. 'INIZIO CALCOLO DELL'ASSE DI SIMMETIRIA
  107.     Asse = Xvertice
  108.     txtAsse.Text = Asse
  109.     'FINE CALCOLO DELL'ASSE DI SIMMETRIA
  110. 'INIZIO A CALCOLARE I PUNTI CHE PASSANO PER L'ASSE X E Y
  111.     Dim Xa As Single
  112.     Dim Xb As Single
  113.     Dim A As Single
  114.     Dim B As Single
  115.     If lDelta = 0 Then
  116.         Xa = (lB + (Sqr(lDelta))) / (2 * lA)
  117.         txtA.Text = "A(" & Xa & ";0)"
  118.         txtB.Text = "B(0;0)"
  119.     ElseIf lDelta < 0 Then
  120.         txtA.Text = "Impossibile"
  121.     Else
  122.         Xa = (lB + (Sqr(lDelta))) / (2 * lA)
  123.         Xb = (lB - (Sqr(lDelta))) / (2 * lA)
  124.         txtA.Text = "A(" & Xa & ";0)"
  125.         txtB.Text = "B(" & Xb & ";0)"
  126.     End If
  127.     txtP.Text = "P(0;" & lC & ")"
  128.     'FINE CALCOLO PUNTI CHE PASSANO PER L'ASSE X E Y
  129.     Exit Sub
  130. errore:
  131.     MsgBox Err.Description, vbExclamation, "ERRORE!"
  132. End Sub
  133.  
  134. Public Sub Analizza()
  135. 'Contatore
  136. Dim i As Integer
  137. On Error GoTo errore
  138. 'INIZIO AD ANALIZZARE L'EQUAZIONE DELLA PARABOLA
  139.         'Assegno alla variabile il valore della casella di testo
  140.         stEquazione = txtParabola.Text
  141.         'Assegno alla variabile i valori dell'equazione della parabola divisi in tre parti (A, B, C)
  142.         stAbc = Split(stEquazione, "+")
  143.         'Elimino i tre punti a destra della parabola (X^2)
  144.         'Faccio la differenza fra la lunghezza di abc(0) - 5 (X^2))
  145.         Dim lenghtA As Byte
  146.         lenghtA = Len(stAbc(0)) - 5
  147.         lA = Left(stAbc(0), lenghtA)
  148.         'Idem per la lettera B
  149.         Dim lenghtB As Byte
  150.         lenghtB = Len(stAbc(1)) - 3
  151.         lB = Left(stAbc(1), lenghtB)
  152.         lC = stAbc(2)
  153.         'Calcolo il delta
  154.         lDelta = (lB ^ 2) + (-4 * lA * lC)
  155.         txtDelta.Text = lDelta
  156. 'FINE ANALISI DELL'EQUAZIONE DELLA PARABOLA
  157.     'Verifico il caso in cui lA è uguale a 0
  158.     'In tal caso si tratta di una retta
  159.     If lA = 0 Then MsgBox "Attenzione, si tratta di una retta!", vbInformation, "ATTENZIONE!"
  160.  
  161.         Exit Sub
  162. errore:
  163.         MsgBox Err.Description, vbExclamation, "ERRORE!"
  164. End Sub
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Private Sub cmdClear_Click()
  171.     picGrafico.Cls
  172. End Sub
  173.  
  174. Private Sub Command1_Click()
  175.  
  176. End Sub
  177.  
  178. Private Sub cmdNuovo_Click()
  179.     mnuFileNuovo_Click
  180. End Sub
  181.  
  182. Private Sub cmdParabola_Click()
  183. On Error GoTo errore
  184. 'CALCOLO I PUNTI APPARTENENTI ALLA PARABOLA
  185.     Punti
  186.     'FINE CALCOLO PUNTI APPARTENENTI ALLA PARABOLA
  187.     Exit Sub
  188. errore:
  189.     MsgBox Err.Description, vbExclamation, "ERRORE!"
  190. End Sub
  191.  
  192. Private Sub Form_Load()
  193.     Scala = 20
  194.     lblScala.Caption = Scala
  195.     picGrafico.Scale (-Scala, Scala)-(Scala, -Scala)
  196. End Sub
  197.  
  198.  
  199.  
  200. Private Sub mnuFileEsci_Click()
  201.     'Termino il programma
  202.     End
  203. End Sub
  204.  
  205. Private Sub mnuFileNuovo_Click()
  206.     txtParabola.Text = "a(x^2)+b(x)+c"
  207.     txtVertice.Text = ""
  208.     txtFuoco.Text = ""
  209.     txtDirettrice.Text = ""
  210.     txtDelta.Text = ""
  211.     txtAsse.Text = ""
  212.     txtPunti.Text = ""
  213.     txtA = ""
  214.     txtB = ""
  215.     txtP = ""
  216.     picGrafico.Cls
  217.     Scala = 20
  218.     lblScala.Caption = Scala
  219.     txtParabola.SetFocus
  220. End Sub
  221.  
  222. Private Sub mnuModifica10_Click()
  223.     Scala = 10
  224.     lblScala.Caption = Scala
  225. End Sub
  226.  
  227. Private Sub mnuModifica100_Click()
  228.     Scala = 100
  229.     lblScala.Caption = Scala
  230. End Sub
  231.  
  232. Private Sub mnuModifica20_Click()
  233.     Scala = 20
  234.     lblScala.Caption = Scala
  235. End Sub
  236.  
  237. Private Sub mnuModifica5_Click()
  238.     Scala = 5
  239.     lblScala.Caption = Scala
  240. End Sub
  241.  
  242. Private Sub mnuModifica50_Click()
  243.     Scala = 50
  244.     lblScala.Caption = Scala
  245. End Sub
  246.  
  247. Private Sub picGrafico_Click()
  248. '5200 x 3600
  249. End Sub
  250.  
  251. Private Sub picGrafico_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  252.     lblCoordinate.Caption = "X: " & X & "; Y: " & Y
  253. End Sub