6 Równanie poprawki dla kąta ostatnie


Przykład 6 Równanie poprawki dla kąta.

Projekt:

Obiekty mają zmienione następujące wartości cech:

Położenie i wielkość obiektów (w przybliżeniu) zgodnie z wyglądem w oknie programu

Cecha NAME: okno ma nazwę P6

Dodane przyciski mają nazwy odpowiednio - CZYTAJ_PRZ, UTWÓRZ_PRZ i ZAPISZ_PRZ

Przycisk ZAPISZ_PRZma cechę ENABLED wyłączoną (=FALSE)

a przycisk WSPÓŁCZYNNIKI_PRZ włączoną (zastępuje dotychczas wykonywane obliczenia przez przyciski: AZYMUT_PRZ, KAT_PRZ, DŁUGOŚĆ_PRZ i WSPÓŁCZYNNIKI_PRZ)

Dodajemy obiekty typu ComboBox (czyli lista rozwijana) - L_LST, C_LST i P_LST.

Zmiany koloru tła i koloru napisu, oraz zmiany czcionki według własnego uznania. Pozostałe cechy obiektów zachowują wartości początkowe.

Obliczenia azymutu przenosimy do FUNCTION AZYMUT (jest odpowiednio wywoływana dla obliczenia' z odpowiednimi parametrami, azymutu lewego i prawego).

Kod programu:

Wpisujemy kod oznaczony kolorem czarnym, pozostała część jest tworzona automatycznie przez VB.

` Kolor zielony (poprzedzony Apostrofem) oznacza tekst komentarza.

Zamieszczono nowe i zmienione procedury

Public Class p6

Dim xl, xc, xp, yl, yc, yp As Single

Dim azymut_l, azymut_p, kąt, długość_l, długość_p As Single

Dim dxl, dyl, dxp, dyp As Single

Dim al, ap, bl, bp As Single

Dim ro As Single = 200 / Math.PI

Dim grad, metr As Integer 'przeliczniki jednostek

Dim scieżka, t, tm, tg As String

Structure punkty

Dim nr As Integer

Dim x, y As Single

End Structure

Dim punkt() As punkty

Dim ile, lp As Integer ' ilość punktów, numer równania v

Private Sub koniec_prz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles koniec_prz.Click

FileClose()

End

End Sub

Private Sub wyczyść_prz_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles wyczyść_prz.Click

xl_txt.Text = "" : yl_txt.Text = ""

xc_txt.Text = "" : yc_txt.Text = ""

xp_txt.Text = "" : yp_txt.Text = ""

kąt_ety.Text =”" : długośćL_ety.Text = "" : długośćP_ety.Text = ""

AL_ety.Text = ”” : BL_ety.Text = "" : AP_ety.Text = "" : BP_ety.Text = "":

End Sub

Function azymut(ByVal dx As Single, ByVal dy As Single) As Single

If dx = 0 And dy > 0 Then

azymut = 100

ElseIf dx = 0 And dy < 0 Then

azymut = 300

ElseIf dx > 0 And dy = 0 Then

azymut = 0

ElseIf dx < 0 And dy = 0 Then

azymut = 200

ElseIf dx <> 0 And dy <> 0 Then

azymut = Math.Atan(dy / dx)

azymut = azymut * 200 / Math.PI

If azymut < 0 Then azymut = -azymut

If dx < 0 And dy > 0 Then azymut = 200 - azymut

If dx < 0 And dy < 0 Then azymut = 200 + azymut

If dx > 0 And dy < 0 Then azymut = 400 - azymut

End If

End Function

Private Sub współczynniki_prz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles współczynniki_prz.Click

If kontrola_danych() Then Exit Sub

xl = Val(xl_txt.Text) : xc = Val(xc_txt.Text)

xp = Val(xp_txt.Text) : yl = Val(yl_txt.Text)

yc = Val(yc_txt.Text) : yp = Val(yp_txt.Text)

dxl = xl - xc : dyl = yl - yc

azymut_l = azymut(dxl, dyl)

dxp = xp - xc : dyp = yp - yc

azymut_p = azymut(dxp, dyp): kąt = azymut_p - azymut_l

If kąt < 0 Then kąt = kąt + 400

kąt_ety.Text = Format(kąt * grad, tg): długość_l = (dxl ^ 2 + dyl ^ 2) ^ 0.5: długość_p = (dxp ^ 2 + dyp ^ 2) ^ 0.5

długośćL_ety.Text = Format(długość_l * metr, tm): długośćP_ety.Text = Format(długość_p * metr, tm)

al = dxl / długość_l ^ 2 * ro : AL_ety.Text = Format(al / metr, " 0.00000 ")

ap = dxp / długość_p ^ 2 * ro : AP_ety.Text = Format(ap / metr, " 0.00000 ")

bl = dyl / długość_l ^ 2 * ro ; BL_ety.Text = Format(bl / metr, " 0.00000 ")

bp = dyp / długość_p ^ 2 * ro ; BP_ety.Text = Format(bp / metr, " 0.00000 ")

End Sub

Private Sub metr_opc_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles metr_opc.CheckedChanged

tg = " 0.0000 ": tm = " 0.000 "

grad = 1: metr = 1: ro = 200 / Math.PI

współczynniki_prz_Click(sender, e)

End Sub

Private Sub milimetr_opc_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles milimetr_opc.CheckedChanged

tm = " 0 ": tg = " 0 "

grad = 10000: metr = 1000: ro = 2000000 / Math.PI

współczynniki_prz_Click(sender, e)

End Sub

Private Sub centymetr_opc_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles centymetr_opc.CheckedChanged

tm = " 0.0 ": tg = " 0 "

grad = 1000: metr = 100; ro = 2000000 / Math.PI

współczynniki_prz_Click(sender, e)

End Sub

Private Sub p6_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

scieżka = "E:\md\foliogramy\vb.net\vb express\ćwiczenia nowe\ćw p4c\" ` wstawiamy własna ścieżkę do pliku „PUNKTY.TXT” - pobieramy plik

lp = 0: ile = 0 ` z katalogu prowadzącego „DLA STUDENTÓW”

End Sub

Private Sub L_lst_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles L_lst.SelectedIndexChanged

Dim numer, i As Integer

numer = L_lst.SelectedItem ' aktualnie wybrana wartość z listy dla punktów "Lewy" (numer punktu)

For i = 1 To ile

If punkt(i).nr = numer Then Exit For

Next ' znaleziony indeks w tabli punktów dla wybranego numeru

xl_txt.Text = punkt(i).x ' przekazanie współrzędnej X do odpowiedniego pola tekstowego

yl_txt.Text = punkt(i).y ' przekazanie współrzędnej Y do odpowiedniego pola tekstowego

End Sub

Private Sub C_lst_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles C_lst.SelectedIndexChanged

Dim numer, i As Integer

numer = C_lst.SelectedItem

For i = 1 To ile

If punkt(i).nr = numer Then Exit For

Next

xc_txt.Text = punkt(i).x: yc_txt.Text = punkt(i).y

End Sub

Private Sub P_lst_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles P_lst.SelectedIndexChanged

Dim numer, i As Integer

numer = P_lst.SelectedItem

For i = 1 To ile

If punkt(i).nr = numer Then Exit For

Next

xp_txt.Text = punkt(i).x: yp_txt.Text = punkt(i).y

End Sub

Private Sub Czytaj_prz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Czytaj_prz.Click

Dim i As Integer

FileOpen(1, scieżka + "punkty.txt", OpenMode.Input) ' otwarcie pliku tekstowego do odczytu

i = 0 : Input(1, t) : Input(1, t)

Do

If EOF(1) Then Exit Do

i += 1

ReDim Preserve punkt(i)

Input(1, punkt(i).nr) 'Wczytanie z pliku numeru punktu

Input(1, punkt(i).x) 'Wczytanie z pliku współrzędnej X punktu

Input(1, punkt(i).y) 'Wczytanie z pliku współrzędnej Y punktu

Loop

FileClose() 'Zamknięcie pliku

ile = i

Dim listaL, listaC, listaP As New ArrayList()

If ile = 0 Then

t = ("Lista jest pusta")

listaL.Add(t): listaP.Add(t); listaC.Add(t)

Else

For i = 1 To ile

listaL.Add(Str(punkt(i).nr))

listaP.Add(Str(punkt(i).nr))

listaC.Add(Str(punkt(i).nr))

Next i

End If

L_lst.DataSource = listaL

P_lst.DataSource = listaP

C_lst.DataSource = listaC

End Sub

Private Sub utwórz_prz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles utwórz_prz.Click

Zapisz_prz.Enabled = True

FileOpen(7, scieżka + "URP.txt", OpenMode.Output)

PrintLine(7, " Lista współczynników kierunkowych dla wybranych spostrzeżeń ")

Print(7, " punkt L punkt C punkt P ")

End Sub

Private Sub Zapisz_prz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Zapisz_prz.Click

lp += 1

Print(7, lp) ' Zapisanie do pliku numeru równania

PrintLine(7, Val(L_lst.SelectedItem), SPC(10), Val(C_lst.SelectedItem), Val(P_lst.SelectedItem))

Print(7, SPC(4), al, bl, -ap, -bp, (al - ap), (bl - bp))

PrintLine(7); PrintLine(7)

End Sub

End Class



Wyszukiwarka

Podobne podstrony:
ROWNANIE BERNOULLIEGO DLA CIECZY RZECZYWISTEJ 2
17 równanie Eulera dla plynu niescisliwegoid 17345
Calka i równane Eulera dla cieczy
Równanie Eulera dla plynu scisliwego
Równanie Bernouliego dla jednowymiarowego stacjonarnego przeplywu strugi
Całka i równane Eulera dla cieczy, mechanika plynów
17 równanie Eulera dla płynu nieściśliwego, mechanika plynów
Równanie Bernoulliego dla przepływu stacjonarnego płynu nieściśliwego, mechanika plynów
Dla Ewy ostatnie ćwiczenia
ROWNANIE BERNOULLIEGO DLA CIECZY RZECZYWISTEJ (1)
biochemia poprawiona dla macka
Kolokwium sesja poprawkowa dla III IMD24 luty 2009, Technologia chemiczna, semestr 2, Zarządzanie ja
RÓWNANIA FIZYCZNE DLA KOMPOZYTÓW, NANOKOMPOZYTY
wiewiórska, maszyny przepływowe, Równanie Eulera dla maszyn przepływowych
Równanie Bernoulliego dla płynu ściśliwego, mechanika plynów
Ułożyć równania węzłowe dla obwodu rezystancyjnego jak na ry
Równanie przeplywu dla strugi
Rownanie Bernoulliego dla plynu idealnego
Calka i równane Eulera dla cieczy

więcej podobnych podstron