Разработка программы, моделирующая муаровый эффект

Автор работы: Пользователь скрыл имя, 26 Января 2014 в 14:29, курсовая работа

Краткое описание

Цель исследования: изучение и разработка программного обеспечения для моделирования электронно-проекционного метода. В процессе исследования и разработки модели электронно-проекционного метода использовались следующие программные приложения: Visual Basic 2005, DirectX 9.0с SDK, MathCAD 13, 3D Studio Max 6.0. Была разработана программа по моделированию муарового эффекта. Были получены различные муаровые картины. Область применения: данная разработка может быть использована в исследовании муаровых методов, демонстрации муарового эффекта, определения деформаций на различных поверхностях.

Содержание

Введение 5
1 Муаровый эффект 6
1.1 Природа муарового эффекта 6
1.2 Классификация муаровых методов 7
1.3 Муаровые методы 10
1.4 Математическая модель исследования топологии поверхностей электронно-проекционным муаровым методом 14
2 Выбор аппаратно-программных средств разработки 18
3 Разработка программного обеспечения для моделирования муарового эффекта 19
3.1 Основной алгоритм программы, модулирующий муаровый эффект 19
3.2 Интерфейс программы 22
Заключение 31
Список использованных источников 32

Прикрепленные файлы: 1 файл

Курсовой.doc

— 1.84 Мб (Скачать документ)

        If CheckBox1.Checked Then

            createcameraview = True

        End If

        refreshwindow = True

    End Sub

 

    Private Sub TrackBarCZ_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBarCZ.Scroll

        SomeChange = True

        NumericUpDownCZ.Value = TrackBarCZ.Value

        If CheckBox1.Checked Then

            createcameraview = True

        End If

        refreshwindow = True

    End Sub

 

    Private Sub NumericUpDownCZ_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDownCZ.ValueChanged

        SomeChange = True

        TrackBarCZ.Value = NumericUpDownCZ.Value

        NumericUpDownCH.Value = Math.Sqrt(NumericUpDownCX.Value ^ 2 + NumericUpDownCY.Value ^ 2 + NumericUpDownCZ.Value ^ 2)

        NumericUpDownCA.Value = Math.Acos(NumericUpDownCZ.Value / Math.Sqrt(NumericUpDownCX.Value ^ 2 + NumericUpDownCY.Value ^ 2 + NumericUpDownCZ.Value ^ 2)) * 180 / Math.PI

        If CheckBox1.Checked Then

            createcameraview = True

        End If

        refreshwindow = True

    End Sub

 

    Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll, TrackBar3.Scroll, TrackBar2.Scroll

        refreshwindow = True

    End Sub

 

    Private Sub NumericUpDownMRS1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDownMRS1.ValueChanged, NumericUpDown.ValueChanged, NumericUpDownMRA.ValueChanged, NumericUpDownWRA.ValueChanged

        SomeChange = True

    End Sub

 

    Private Sub CB_Pov_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CB_Pov.SelectedIndexChanged

        SomeChange = True

        Face = CB_Pov.SelectedIndex

        If (Face = 6) And (Resel) Then

            OFD.ShowDialog()

            Dim FName As String = OFD.FileName

            If (FName = "") Then

                Face = 0

                CB_Pov.SelectedIndex = 0

                Return

            End If

            Dim fs As IO.FileStream = New IO.FileStream(FName, IO.FileMode.Open)

            'создание(файла)

            Dim r As IO.BinaryReader = New IO.BinaryReader(fs)

            'открытие файла на запись

            SurSize.X = r.ReadInt32()

            SurSize.Y = r.ReadInt32()

            Dim ix, iy As Integer

            For iy = 0 To SurSize.Y

                For ix = 0 To SurSize.X

                    UserSur(ix, iy) = r.ReadInt32()

                Next

            Next

            r.Close() ' закрытие файла.

            fs.Close()

            LProba.Text = Path.GetFileNameWithoutExtension(FName)

            OFD.FileName = ""

        End If

        If (Face = 7) Then

            LSyn.Visible = True

            NUDSyn.Visible = True

        Else

            LSyn.Visible = False

            NUDSyn.Visible = False

        End If

 

    End Sub

 

    Private Sub CB_Res_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CB_Res.SelectedIndexChanged

        SomeChange = True

        fWidth(0) = fWidth(CB_Res.SelectedIndex + 1)

        fHeight(0) = fHeight(CB_Res.SelectedIndex + 1)

        NewResolution = True

        refreshwindow = True

    End Sub

 

    Private Sub NumericUpDownMRS_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDownMRS.ValueChanged

        SomeChange = True

        NumericUpDownMRS1.Value = NumericUpDownMRS.Value \ 2

    End Sub

 

    Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OFD.FileOk

 

    End Sub

 

    Private Sub BCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BCreate.Click

        Randomize()

        Dim FName As String = TBFileName.Text & ".txt"

       Dim MaxH As Integer = NUDH.Value

        Dim X As Integer = NUDX.Value

        Dim Y As Integer = NUDY.Value

        Dim ix, iy As Integer

        Dim h As Integer

        Dim fs As IO.FileStream = New IO.FileStream(FName, IO.FileMode.Create)

        ' создание файла

        Dim w As IO.BinaryWriter = New IO.BinaryWriter(fs)

        ' открытие файла на запись

        w.Write(X)

        w.Write(Y)

        Dim Sur(X, Y) As Integer

        If (RBRnd.Checked) Then

            For iy = 0 To Y

                For ix = 0 To X

                    Randomize()

                    Sur(ix, iy) = MaxH * Rnd()

                Next

            Next

        End If

        If (RBRndOff.Checked) Then

            For iy = 0 To Y

                Sur(0, iy) = 0

                For ix = 1 To X

                    Randomize()

                    h = Sur(ix - 1, iy) + (-1) ^ (CInt(2 * Rnd()))

                    Sur(ix, iy) = h

                    If (h < 0) Then Sur(ix, iy) = 0

                    If (h > MaxH) Then Sur(ix, iy) = MaxH

                Next

            Next

        End If

        If (RBRndOff2.Checked) Then

            For iy = 0 To Y

                Sur(0, iy) = 0

            Next

            For ix = 1 To X

                Randomize()

                h = Sur(ix - 1, 0) + (-1) ^ (CInt(2 * Rnd()))

                Sur(ix, 0) = h

                If (h < 0) Then Sur(ix, 0) = 0

                If (h > MaxH) Then Sur(ix, 0) = MaxH

                For iy = 1 To Y

                    Sur(ix, iy) = Sur(ix, 0)

                Next

            Next

        End If

        If (RBRndOff3.Checked) Then

            Sur(0, 0) = 0

            For ix = 1 To X

                Randomize()

                h = Sur(ix - 1, 0) + (-1) ^ (CInt(2 * Rnd()))

                Sur(ix, 0) = h

                If (h < 0) Then Sur(ix, 0) = 0

                If (h > MaxH) Then Sur(ix, 0) = MaxH

            Next

            Dim Offs As Integer

            For iy = 1 To Y

                Randomize()

                Offs = (-1) ^ (CInt(2 * Rnd()))

                For ix = 0 To X

                    h = Sur(ix, iy - 1) + Offs

                    Sur(ix, iy) = h

                    If (h < 0) Then Sur(ix, iy) = 0

                    If (h > MaxH) Then Sur(ix, iy) = MaxH

                Next

            Next

        End If

        If (RBSyn.Checked) Then

            For ix = 0 To X

                h = MaxH * Math.Cos((ix - SurSize.X / 2) * Math.PI / 50) + MaxH

                Sur(ix, 0) = h

                If (h < 0) Then Sur(ix, 0) = 0

                For iy = 1 To Y

                    Sur(ix, iy) = Sur(ix, 0)

                Next

            Next

        End If

        If (RBSyn2.Checked) Then

            For ix = 0 To X

                Sur(ix, 0) = MaxH * Math.Cos((ix - SurSize.X / 2) * Math.PI / 50) + MaxH

            Next

            Dim Offs As Integer

            Dim S0, S1 As Integer

            For iy = 1 To Y

                S0 = MaxH * Math.Cos((iy - 1) * Math.PI / 50) + MaxH

                S1 = MaxH * Math.Cos((iy) * Math.PI / 50) + MaxH

                Offs = S1 - S0

                For ix = 0 To X

                    h = Sur(ix, iy - 1) + Offs

                    Sur(ix, iy) = h

                    If (h < 0) Then Sur(ix, iy) = 0

                Next

            Next

        End If

        For iy = 0 To Y

            For ix = 0 To X

                w.Write(Sur(ix, iy))

            Next

        Next

        w.Close() ' закрытие файла.

<span class="dash041e_0431_044b_0447_043d_044b_0439__Char" style=" font-size: 14pt; text-decoration: non


Информация о работе Разработка программы, моделирующая муаровый эффект