Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 3

Создание поверхности по заданой функции

04.12.2013, 17:58. Показов 1360. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать поверхность в Visual Basic по заданой функции
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2013, 17:58
Ответы с готовыми решениями:

Вычисление значений по заданой функции
Составить приложение для вычисления 10 значений функции по заданной формуле. Диапазон изменения аргумента задан. Величину шага изменения...

Создание поверхности сдвига сплайн функции Безье. Вай
Ух ребята. Контрольная работа тут у меня. Но не стоит паниковать. Я тут уже чего спрограммулил.. В общем я тоже долго курил что от...

Проблема с поиском корня заданой функции ( с использованием функции типа void с параметрами массива)
Доброго времени суток. Суть задания в том, что используя только функцию типа void в параметрах которой указан массив ( внутри которого...

1
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
04.12.2013, 21:52
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Option Explicit
 
Private Type Point
    X As Single
    Y As Single
    z As Single
    c As Long
End Type
 
Private Const Segments As Long = 30     ' Количество сегментов поверхности
 
Dim Vertex() As Point                   ' Узлы поверхности
Dim ort As Boolean                      ' Ортогональная/перспективная проеция
Private Function GetPoint(X As Single, Y As Single) As Single   ' Получить узел поверхности
    If Abs(X + Y) <= 2 Then GetPoint = X * X - 2 * Y * Y Else GetPoint = X - Y
    'GetPoint = Sin(Sqr(X * X + Y * Y) * 4) ' Волны
End Function
Private Sub ChangeProjection()          ' Изменить тип проекции
    ort = Not ort: Me.Caption = IIf(ort, "Ортогональная", "Перспективная"): Render Vertex
End Sub
Private Sub CreateSurface()             ' Создание поверхности
    Dim X As Single, Y As Single, s As Single, i As Single
    s = 4 / Segments: ReDim Vertex((Segments + 1) * (Segments + 1))
    For X = -2 To 2 Step s: For Y = -2 To 2 Step s
        Vertex(i).X = X: Vertex(i).Y = Y: Vertex(i).z = GetPoint(X, Y)
        Vertex(i).c = Abs(Vertex(i).z) * 30: Vertex(i).c = RGB(Vertex(i).c, 0, 255 - Vertex(i).c): i = i + 1
    Next: Next
End Sub
Private Function Rotate(Pt As Point, X As Single, Y As Single, z As Single) As Point ' Поворот точки
    Dim cx As Single, sx As Single, cy As Single, sy As Single, cz As Single, sz As Single
    sx = Sin(X): sy = Sin(Y): sz = Sin(z): cx = Cos(X): cy = Cos(Y): cz = Cos(z)
    Rotate.X = Pt.X * (cz * cy + sz * sx * sy) + Pt.Y * (-sz * cy + cz * sx * sy) + Pt.z * (cx * sy)
    Rotate.Y = Pt.X * (sz * cx) + Pt.Y * (cz * cx) - Pt.z * sx
    Rotate.z = Pt.X * (-cz * sy + cy * sz * sx) + Pt.Y * (sz * sy + cz * sx * cy) + Pt.z * (cx * cy)
    Rotate.c = Pt.c
End Function
Private Sub Render(Points() As Point)                    ' Рендеринг
    Dim Pt As Point, i As Long, n As Long, col As Long, sw As Single, sh As Single, s As Long, s2 As Long
    Me.Cls: sw = Me.ScaleWidth / 2: sh = Me.ScaleHeight / 2: s = Segments + 1: s2 = s * s
    For n = 0 To UBound(Points)
        Pt = Points(n): Pt.z = Pt.z + 10    ' Отодвигаем от себя поверхность на 10 единиц
        If ort Then Pt.X = Pt.X / 7: Pt.Y = Pt.Y / 7 Else Pt.X = Pt.X / (Pt.z * 0.9): Pt.Y = Pt.Y / (Pt.z * 0.9)
        If n Mod s Then Me.Line -(Pt.X * sw + sw, Pt.Y * sh + sh), Pt.c _
        Else Me.PSet (Pt.X * sw + sw, Pt.Y * sh + sh)
    Next
    For n = 0 To UBound(Points)
        i = ((n * s) Mod s2) + n \ s: Pt = Points(i): Pt.z = Pt.z + 10
        If ort Then Pt.X = Pt.X / 7: Pt.Y = Pt.Y / 7 Else Pt.X = Pt.X / (Pt.z * 0.9): Pt.Y = Pt.Y / (Pt.z * 0.9)
        If n Mod s Then Me.Line -(Pt.X * sw + sw, Pt.Y * sh + sh), Pt.c _
        Else Me.PSet (Pt.X * sw + sw, Pt.Y * sh + sh)
    Next
    Me.Refresh
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Then ChangeProjection  ' Переключить проекцию
End Sub
Private Sub Form_Load()
    Me.ScaleMode = vbPixels: Me.AutoRedraw = True: Me.BackColor = vbWhite: CreateSurface: ChangeProjection
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Static dx As Single, dy As Single
    Dim i As Long, ax As Single, ay As Single, az As Single
    If Button Then
        ax = -(Y - dy) / 100: ay = (X - dx) / 100: If Shift Then az = ay: ax = 0: ay = 0    ' При Ctrl|Shift|Alt вращать по Z
        For i = 0 To UBound(Vertex)
            Vertex(i) = Rotate(Vertex(i), ax, ay, az)
        Next
        Render Vertex
    End If
    dx = X: dy = Y
End Sub
Private Sub Form_Resize()
    Render Vertex
End Sub
По Enter'у переключать тип проекции, мышкой вертеть в пространстве с зажатой кнопкой.
Миниатюры
Создание поверхности по заданой функции  
Вложения
Тип файла: rar Surface.rar (2.1 Кб, 12 просмотров)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2013, 21:52
Помогаю со студенческими работами здесь

Построение функции заданой неявно
Подскажите пожалуйста как в Scilab-е построить график функции y(x) такой что y^2+x^2-c*x*y = 1, где с - некая константа.

расчет функции, заданой формулой
помогите решить эту не большую проблему)))) Большая трудность во второй часть задания (область определения) За ранее спасибо!!!

Иследование функции, заданой параметрически
Провести полное иследование функции и построить график функции заданой параметричиски. x(t)=ln(t) , y(t)=arcctg(t). Кому не сложно...

програма для вычисления заданой функции
Скласть програму для вычисления заданой функции: =(((((

Построить график неявной заданой функции
Что-то не строится именно этот. Но другие строятся. Что не так?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru