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

Разработать приложение, позволяющее изображать на форме имитацию сферы , куба

06.09.2016, 18:44. Показов 2035. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как эту программу сделать попроще без кода за 100 строчек ?

Разработать приложение, позволяющее изображать на форме имитацию сферы (метод Circle в цикле), куба (метод Line в цикле), закрашенный эллипс. Ввести в интерфейс приложения следующие элементы управления:
1) созданные на основе объектов HScrollBar и VScrollBar, позволяющие изменять размеры сферы, куба, эллипса;
2) управляющие автоматическим сжатием/увеличением сферы и куба (пульсирующие сфера и куб).
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.09.2016, 18:44
Ответы с готовыми решениями:

Разработать приложение сервера и приложение клиента, позволяющее общаться между клиентами в режиме online
Привет. Нужна прога на с/с++ Разработать приложение сервера и приложение клиента, позволяющее общаться между клиентами в режиме...

Разработать приложение, позволяющее задать дату рождения
Моя задача - Разработайте приложение, позволяющее задать дату рождения с выпадающим списком месяца и подсчитывает возраст пользователя. Я...

Разработать приложение, позволяющее рассчитать сумму подписки на 3 газеты
"Разработать приложение, позволяющее рассчитать сумму подписки на 3(любые)газеты, если известна стоимость подписки на 1 месяц и количество...

13
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
07.09.2016, 10:09
neokrom
пока нарисовал нечто похожее на шар. Подойдет?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Option Explicit
Dim k As Single, R As Single
Dim i As Single
 
Private Sub Command1_Click()
    Pic1.Scale (-200, 200)-(200, -200)
    Pic1.DrawWidth = 3
    R = 150
    For i = 0 To 1.5708 Step 0.261
        k = Cos(i)
        Pic1.Circle (0, 0), R, , , , k
        Pic1.Circle (0, 0), R, , , , 1 / k
    Next
End Sub
Миниатюры
Разработать приложение, позволяющее изображать на форме имитацию сферы , куба  
3
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
07.09.2016, 12:11
neokrom
Это код для куба. Потом можно все объединить.

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
Option Explicit
Dim i As Single
 
Private Sub Command1_Click()
    Const a = 70.71
    Const b = 200
    Pic1.Scale (-50, 350)-(350, -50)
    Pic1.DrawWidth = 3
    Pic1.Line (0, 0)-(b, b), , B
    Pic1.Line (0, b)-(a, b + a)
    Pic1.Line (b, 0)-(b + a, a)
    Pic1.Line (b, b)-(b + a, b + a)
    Pic1.Line (a, b + a)-(b + a, b + a)
    Pic1.Line (b + a, a)-(b + a, b + a)
    
    Pic1.DrawWidth = 1
 
    For i = 20 To 200 Step 20
        Pic1.Line (0, i)-(b, i)
    Next
 
    For i = 20 To 200 Step 20
        Pic1.Line (b, i)-(b + a, i + a)
    Next
 
    For i = 20 To 200 Step 20
        Pic1.Line (i, b)-(a + i, b + a)
    Next
End Sub
Миниатюры
Разработать приложение, позволяющее изображать на форме имитацию сферы , куба  
2
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
07.09.2016, 12:19
Лучший ответ Сообщение было отмечено echs как решение

Решение

https://www.cyberforum.ru/post5977909.html
3
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 67
07.09.2016, 18:46  [ТС]
ну вроде не чего ..как ты это рисовал на программе?
0
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
08.09.2016, 09:20
neokrom
Давайте все по-порядку. Итак шар.
1. На форму поместил объект Picture1. Но присвоил ему имя Pic1.
(В VB , где свойства объектов, в самой верхней строке есть свойство
NAME. Там написано Picture1, а вы впишите свое имя, например Pic1)
2. дальше
Установил систему координат. Это код:
Visual Basic
1
Pic1.Scale (-200, 200)-(200, -200)
То есть оси системы координат находятся в центре.
Определил толщину линии: Pic1.DrawWidth = 3
3.
ТЕПЕРЬ САМОЕ ГЛАВНОЕ.
Если на обычном шаре нарисовать окружности, которые делят его
пополам и посмотреть со стороны то мы увидим эти окружности в
виде эллипсов. Наверняка вы видели глобус и меридианы на нем.
Так вот, чтобы придать нашему шару объем, нужно нарисовать несколько
эллипсов. Это удобно сделать в цикле и не рисовать каждый эллипс отдельно.
4. Эллипсы должны располагаться равномерно на интервале 0° - 90°
Но поскольку мы имеем дело и радианами, то интервал 0 - 1.5708
(конечно мы могли ввести и градусы, но зачем на лишний код)
Шаг я ввел равным 0.261 - я просто попробовал как будет смотреться
Вы можете изменить шаг. Если шаг сделать меньше, то линий будет больше.
(Это дело вкуса. Как вам нравится так и делайте)
Если вы обратили внимание, то рисовалось две серии Эллипсов
Visual Basic
1
2
Pic1.Circle (0, 0), R, , , , k 
Pic1.Circle (0, 0), R, , , , 1 / k
Тут первый эллипс рисуется сжатым к оси икс
А второй - сжатым к оси игрек
k - коэффициент сжатия (к оси икс)(k < 1)
1/k - будет сжимать к оси игрек (1/k > 1)
2
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
08.09.2016, 11:16
Это закрашенный эллипс. Ничего другого я не придумал.

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
Option Explicit
Dim x As Single, y As Single, y2 As Single
Dim R As Single, n As Single
Dim c1&, c2&, c3&, C&
 
Private Sub Command1_Click()
    R = 200
    Pic1.DrawWidth = 3
    Pic1.Scale (-R, R)-(R, -R)
    Pic1.Circle (0, 0), 150, , , , 0.7
    Do
        n = n + 1
        x = 300 * Rnd - 150
        y2 = 105 * Sqr(1 - (x / 150) ^ 2)
        y = y2 * Rnd
        c1 = 255 * Rnd
        c2 = 255 * Rnd
        c3 = 255 * Rnd
        C = RGB(c1, c2, c3)
        Pic1.PSet (x, y), C
        Pic1.PSet (x, -y), C
    Loop Until n > 5000
End Sub
Миниатюры
Разработать приложение, позволяющее изображать на форме имитацию сферы , куба  
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
08.09.2016, 14:07
neokrom
Куб было нарисовать много проще.
1. Была задана система координат так, чтобы самый нижний
левый угол куба оказался центром этой системы.
2. Вот от этого угла и были взяты координаты всех остальных
углов куба.
3. Итак. Первым был нарисован квадрат. Он такой всего один.
4. Еще 5 линий завершили куб
5. В программе есть три цикла. Каждый цикл проводит несколько
параллельных прямых. Толщина этих прямых равна 1. Чтобы было
похоже на штриховку.
6. В целом все
примечание
Чтобы не возится с числами, которые в большом количестве
повторяются, я ввел две константы.
2
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 67
08.09.2016, 18:03  [ТС]
ок ..хорошо а в этом коде можешь помочь написать комментарий !?

Добавлено через 15 секунд
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
Option Explicit
Dim WithEvents picDisp As PictureBox, _
    WithEvents hsbSize As HScrollBar, _
    WithEvents hsbZoom As HScrollBar, _
    WithEvents tmrTime As Timer, _
    WithEvents cboType As48span> ComboBox
 
Private Sub Form_Resize()
    On Error Resume Next
    If ScaleHeight <= 1000 Or ScaleWidth <= 2000 Then Exit Sub
    picDisp.Move 100, 100, ScaleWidth - 200, ScaleHeight - 1000
    hsbSize.Move 100, ScaleHeight - 800, ScaleWidth - 200
    hsbZoom.Move 100, ScaleHeight - 400, ScaleWidth - 2000
    cboType.Move ScaleWidth - 1800, ScaleHeight - 400, 1700
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    On Error GoTo 1
    Cancel = 1: Set picDisp = Controls.Add("VB.PictureBox", "picDisp")
    Set hsbSize = Controls.Add("VB.HScrollBar", "hsbSize")
    Set hsbZoom = Controls.Add("VB.HScrollBar", "hsbZoom")
    Set tmrTime = Controls.Add("VB.Timer", "tmrTime")
    Set cboType = Controls.Add("VB.Combobox", "cboType")
    picDisp.ScaleMode = vbPixels: picDisp.FillStyle = vbSolid: picDisp.AutoRedraw = True
    hsbSize.Max = 100: hsbSize.Min = 0: hsbSize.Value = 50
    hsbZoom.Max = 100: hsbZoom.Min = 0: hsbZoom.Value = 50
    picDisp.Visible = True: hsbSize.Visible = True: hsbZoom.Visible = True
    tmrTime.Interval = 32
    cboType.AddItem "Сфера": cboType.AddItem "Куб": cboType.AddItem "Эллипс"
    cboType.ListIndex = 1: cboType.Visible = True: Form_Resize
    Exit Sub
1
End Sub
 
Private Sub tmrTime_Timer()
    Static ph As Single, cz As Single, x As Single, y As Single, d As Single, _
           p As Single, s As Long, l As Long, q As Single
           
    q = (hsbZoom.Value / 100)
    cz = Sin(ph) * q
    ph = ph + 0.03: picDisp.Cls
    s = IIf(ScaleWidth > ScaleHeight, picDisp.ScaleHeight / 4, picDisp.ScaleWidth / 4) * (hsbSize.Value / 100)
    s = s + s * cz: If s = 0 Then Exit Sub
    Select Case cboType.ListIndex
    Case 0
        picDisp.DrawStyle = 5
        d = 1.5707963267949 / s: p = 0: x = picDisp.ScaleWidth / 2: y = picDisp.ScaleHeight / 2
        For l = 0 To s - 1
            q = Exp(p - 1.5707963267949) * 255
            picDisp.FillColor = RGB(Sin(p) * 255, q, q)
            picDisp.Circle (x, y), s
            s = s - 1: p = p + d: x = x - 0.4: y = y - 0.4
        Next
    Case 1
        picDisp.DrawStyle = 0
        x = picDisp.ScaleWidth / 2 - s: y = Int(picDisp.ScaleHeight / 2 - s)
        picDisp.Line (x, y)-Step(s * 2, s * 2), &HA0A0FF, BF
        x = x + 1: y = y - 1: q = s / 2.5
        For l = 0 To q - 1
            picDisp.Line (x, y)-Step(s * 2, 0), &H323280
            picDisp.Line (Int(x + s * 2), y)-Step(0, s * 2), &H5252A0
            x = x + 1: y = y - 1
        Next
    Case Else
        picDisp.DrawStyle = 5
        x = picDisp.ScaleWidth / 2: y = picDisp.ScaleHeight / 2
        picDisp.FillColor = vbRed
        picDisp.Circle (x, y), s * 2, , , , 0.5
    End Select
End Sub
0
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
08.09.2016, 18:42
neokrom
Вы понимаете, я не знаю алгоритма этого кода.
Поэтому я не смогу объяснить, что программа
делает. Увы, я не бог программирования...
1
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 67
09.09.2016, 06:07  [ТС]
спасибо и на этом!

Добавлено через 6 часов 37 минут
Тут в общем нужно что б сфера, куб и элепс приближались и удолялись !
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
09.09.2016, 06:25
Цитата Сообщение от echs Посмотреть сообщение
я не знаю алгоритма этого кода.
Интересно, чем этот код для вас непонятен? Динамическим созданием контролов и динамической же настройкой среды?
Сам алгоритм рисования фигур- чистая математика, горячо вами любимая, ни чего необычного.
Переписать этот код в стиле "формошлёпства" не составит ни какого труда.
1
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 67
09.09.2016, 16:24  [ТС]
это если хорошо понимаешь а если я далёк и пытаюсь вникнуть !мне понятно где прописать R-? В ПРОГРАММЕ САМОЙ ?
0
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 67
24.09.2016, 17:52  [ТС]
а как сделать ..1) созданные на основе объектов HScrollBar и VScrollBar, позволяющие изменять размеры сферы, куба, эллипса;
2) управляющие автоматическим сжатием/увеличением сферы и куба (пульсирующие сфера и куб
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.09.2016, 17:52
Помогаю со студенческими работами здесь

1. Разработать VBA-приложение, позволяющее автоматически создавать сертификат
1. Разработать VBA-приложение, позволяющее автоматически создавать сертификат, удостоверяющий освоение программы профессионального модуля...

Разработать програмное приложение, позволяющее наблюдать вращение трехмерного объекта
Разработать програмное приложение, позволяющее наблюдать вращение трехмерного объекта. В качестве трехмерного объекта выбрать...

Разработать приложение, позволяющее добавлять и удалять фамилии студентов в список
Разработать приложение, позволяющее добавлять и удалять фамилии студентов в список, а также выводить в метку выбранные значения из трех...

Список: Разработать оконное приложение, позволяющее управлять элементами списка...
Всем привет, я новичок в питоне, помогите пожалуйста разобраться. Разработать оконное приложение, позволяющее: добавить элемент в конец...

Разработать приложение Windows Forms, позволяющее организовать телефонную книгу
Разработать приложение Windows Forms, позволяющее организовать телефонную книгу. Требования: 1. Данные должны сохраняться при закрытии...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru