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

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

20.02.2012, 21:17. Показов 2717. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru