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

Перемещение объекта в 3D пространстве

20.02.2012, 21:17. Показов 2723. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как написать программу для перемещения объекта в 3D пространстве?)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.02.2012, 21:17
Ответы с готовыми решениями:

Перемещение в пространстве
Первый вопрос,написал скрипт перемещения в пространстве но там просто увеличиваются\уменьшаются координаты из-за чего мой танк под наклоном...

Перемещение в пространстве
Здравствуйте, я решил написать 3д игру, вроде бы всё получается, кроме перемещения в пространстве кнопками WASD и поворотов головой....

OpenGL, перемещение в пространстве
Проблема такая. Нужно повернуть камеру на N градусов. Вместо этого поворачивается всё игровое поле. Подскажите, как исправить?

16
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
20.02.2012, 21:40
Цитата Сообщение от Серж12 Посмотреть сообщение
Как написать программу для перемещения объекта в 3D пространстве?)
Как в двух плоскостях перемещать знаешь ?? (X,Y)
0
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 19
21.02.2012, 00:18  [ТС]
да)
вот примерно даже наброски есть)


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
Dim X As Long
Dim Y As Long
Dim R As Long
Dim c As Long
Const pi = 3.1415926
 
Function draw()
Cls
R = 500
For i = 0 To 5
x1 = X + R * Cos(i * pi / 3)
y1 = Y + R * Sin(i * pi / 3)
x2 = X + R * Cos((i + 1) * pi / 3)
y2 = Y + R * Sin((i + 1) * pi / 3)
Line (x1, y1)-(x2, y2), c
Next i
End Function
 
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Cls
Select Case KeyCode
Case 49
c = RGB(255, 255, 255)
Case 50
c = RGB(0, 200, 255)
Case 51
c = RGB(255, 0, 0)
Case 52
c = RGB(0, 255, 0)
Case 53
c = RGB(0, 0, 255)
Case 54
c = RGB(0, 255, 255)
Case 55
c = RGB(255, 0, 255)
Case 56
c = RGB(255, 255, 0)
Case 57
c = RGB(200, 0, 0)
Case 58
c = RGB(0, 200, 0)
Case 37
If X > R + 300 Then
Circle (X, Y), R, Form1.BackColor
X = X - 300
End If
Case 40
If Y + 300 < Form1.Height - (2 * R + 300) Then
Circle (X, Y), R, Form1.BackColor
Y = Y + 300
End If
Case 38
If Y > (R + 300) Then
Circle (X, Y), R, Form1.BackColor
Y = Y - 300
End If
Case 39
If X < Form1.Width - (R + 300) Then
Circle (X, Y), R, Form1.BackColor
X = X + 300
End If
End Select
Call draw
End Sub
 
Private Sub Form_Load()
AutoRedraw = True
DrawStyle = 0
DrawWidth = 1
X = ScaleWidth / 2
Y = ScaleHeight / 2
Call draw
End Sub
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
21.02.2012, 00:59
1) Код проги надо надо заключать в теги - вот посмотри как меня учили:
Как отловить вводимый в IE текст. Ошибки в коде препятствуют загрузке проекта
2) Что тебе надо: что бы ЭТОТ шестигранник просто удалялся и приближался (движение в плоскости Z) или чтоб ЕГО можно было "крутить" ??
0
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 19
21.02.2012, 01:30  [ТС]
Задача стоит так :
Перемещение объекта в плоскости по всем 3м координатам(приблежение удаление,). Перемещение задаеться пользователем(пользователь задает определенное количество пикселей и он соответсвенно перемещаеться)
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
21.02.2012, 02:56
Цитата Сообщение от Серж12 Посмотреть сообщение
Задача стоит так :
Перемещение объекта в плоскости по всем 3м координатам(приблежение удаление,). Перемещение задаеться пользователем(пользователь задает определенное количество пикселей и он соответсвенно перемещаеться)
Ну добавь в Sub Form_KeyDown ещё 2 клавиши: на одну R=R+10(20,30,40.....), а на другую R=R-10. Вот и получишь приближение/удаление...

Добавлено через 11 минут
Пардон, немного не так: добавь переменную R1, в Function draw пропиши R=500+R1, а на клавиши поставь R1=R1+10 и R1=R1-10...

Добавлено через 10 минут
Проверил - очень симпатично приближается и удаляется (при +10,-10)
0
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 19
21.02.2012, 11:59  [ТС]
Цитата Сообщение от morgann55 Посмотреть сообщение
Ну добавь в Sub Form_KeyDown ещё 2 клавиши: на одну R=R+10(20,30,40.....), а на другую R=R-10. Вот и получишь приближение/удаление...

Добавлено через 11 минут
Пардон, немного не так: добавь переменную R1, в Function draw пропиши R=500+R1, а на клавиши поставь R1=R1+10 и R1=R1-10...

Добавлено через 10 минут
Проверил - очень симпатично приближается и удаляется (при +10,-10)

Спасибо
А скелет программы остается таким же?)
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
21.02.2012, 12:33
Цитата Сообщение от Серж12 Посмотреть сообщение
Спасибо
А скелет программы остается таким же?)
Ты САМ писал прогу или это какой-то учебный пример ??
0
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 19
21.02.2012, 23:13  [ТС]
Цитата Сообщение от morgann55 Посмотреть сообщение
Ты САМ писал прогу или это какой-то учебный пример ??
Сам, у меня перед 3d графикой была реализация 2d - вот эта прога для 2d графики)
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
21.02.2012, 23:42
Цитата Сообщение от Серж12 Посмотреть сообщение
Сам, у меня перед 3d графикой была реализация 2d - вот эта прога для 2d графики)
Значит поймёшь что к чему ??
""Пардон, немного не так: добавь переменную R1, в Function draw пропиши R=500+R1, а на клавиши поставь R1=R1+10 и R1=R1-10...""

Добавлено через 7 минут
PS Естесственно скелет этот...
0
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 19
22.02.2012, 10:59  [ТС]
Цитата Сообщение от morgann55 Посмотреть сообщение
Значит поймёшь что к чему ??
""Пардон, немного не так: добавь переменную R1, в Function draw пропиши R=500+R1, а на клавиши поставь R1=R1+10 и R1=R1-10...""

Добавлено через 7 минут
PS Естесственно скелет этот...

Спасибо, Да как нибудь попытаюсь понять.

Добавлено через 1 минуту
Цитата Сообщение от Серж12 Посмотреть сообщение
Спасибо, Да как нибудь попытаюсь понять.
А если не сложно, я бы не отказался от примера)
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
22.02.2012, 12:20
Цитата Сообщение от Серж12 Посмотреть сообщение
я бы не отказался от примера
Держи
Вложения
Тип файла: rar Pr21.rar (159.7 Кб, 16 просмотров)
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
22.02.2012, 12:35
Или вот. Управление мышкой и клавишами вверх, вниз, влево, вправо. Пробел- выход.
Вложения
Тип файла: rar Pr22.rar (159.7 Кб, 24 просмотров)
0
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 19
22.02.2012, 15:50  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Или вот. Управление мышкой и клавишами вверх, вниз, влево, вправо. Пробел- выход.
Спасибо.Очень благодарен)
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
22.02.2012, 15:51
Цитата Сообщение от Серж12 Посмотреть сообщение
Спасибо, Да как нибудь попытаюсь понять.

Добавлено через 1 минуту


А если не сложно, я бы не отказался от примера)
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
Dim X, Y, R, c As Long
Dim R1 As Long ' сдесь добавили переменную R1
Const pi = 3.1415926
 
Function draw()
Cls
R = 500 + R1 'здесь прописали что R будет считаться с учётом R1 
For i = 0 To 5
X1 = X + R * Cos(i * pi / 3)
Y1 = Y + R * Sin(i * pi / 3)
X2 = X + R * Cos((i + 1) * pi / 3)
Y2 = Y + R * Sin((i + 1) * pi / 3)
Line (X1, Y1)-(X2, Y2), c
Next i
End Function
 
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Cls
Select Case KeyCode
Case 49 
'здесь я забил на клавиши "1" и "2" увеличение и уменьшение R1 (ты поставишь это на свои клавиши)
'c = RGB(255, 255, 255)
R1 = R1 + 10
Case 50
'c = RGB(0, 200, 255)
R1 = R1 - 10
'..................................... дальше всё без изменений
0
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 19
22.02.2012, 15:59  [ТС]
morgann55, Спасибо, огромное)
0
525 / 487 / 99
Регистрация: 25.12.2011
Сообщений: 1,176
23.02.2012, 01:38
Тут кнопка под сообщением есть "+1 Спасибо").

 Комментарий модератора 
Об этом не стоит говорить, человек сам решает, нажать на кнопку или нет.
Если он говорит "Спасибо", это еще не означает, что он готов добавить балл к репутации
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.02.2012, 01:38
Помогаю со студенческими работами здесь

Свободное перемещение в пространстве
Подскажите пожалуйста как можно реализовать свободное перемещение в пространстве(x,y,z) контроллеру? ..Я новичок, только изучать начинаю

Перемещение в пространстве XYZ
Здравствутйе! Есть задачка: определить перемещение в пространстве по 3 осям. Почему-то я решил, что MPU-6050 - акселерометр+гироскоп должен...

Как сделать перемещение камеры в пространстве по типу FPS шутера
Как сделать перемещение камеры в пространстве по типу FPS шутера? Без тормозов. Даже без вращения, просто анимировать перемещение камеры к...

Движение объекта в пространстве
Есть объект Mesha, он находится в пространстве... как его можно сдвинуть по осям?

Движение объекта в ограниченном пространстве
Разработать программу, имитирующую движение одного или нескольких объектов в ограниченном пространстве. Рассмотреть случаи: а) когда объект...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru