1 | |||||||||||
Соединить точки 3D Куба в BuilderC++15.12.2014, 01:31. Показов 4077. Ответов 29
Собственно такое задание: Создать 3D куб или любую другую фигуру без использование OpenGl + поворот фигуры за счет нажатия и удержание ЛКМ.
Задание выполнено , но вот отображаются только точки 3D Куба Помогите сделать отрисовку линий от точек таким образом чтоб был полноценный Куб Я пытался сделать что то но не получалось , рисовалось от всех точек к 1 координате вот код
0
|
15.12.2014, 01:31 | |
Ответы с готовыми решениями:
29
Определить взаимное расположение точки и куба соединить 2 точки Нужно соединить точки Соединить точки на canvas |
SatanaXIII
|
18.12.2014, 15:55
Соединить точки 3D Куба в BuilderC++
#21
|
Не по теме: День сто восемьдесят второй от создания темы. gunslinger дописывает Блендер. Х)
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
18.12.2014, 16:06 | 22 |
Перемножением матриц естествеенно.
Ты как будто в детстве с выводом математики для 3D поворота не не наигрался ей богу. матрицу сделай не 3x3 а 4x4 а координаты куба в 4-ой строке.
0
|
gunslinger
|
18.12.2014, 16:09
#23
|
Не по теме: SatanaXIII
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
18.12.2014, 16:43 | 24 |
1
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|||||||||||
18.12.2014, 18:44 | 25 | ||||||||||
пример использования:
Position - TVector Пример пересчета матрицы, только тут не вращение а полет вокруг объекта по синусоиде:
1
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
20.12.2014, 03:05 | 26 |
gunslinger, Да кстати, функции проецирования Perspective и PerspectiveFOV малехо кривоваты (не совсем универсальны) - внутри вбиты константы для перспективного проецирования соответствующего реальному под размеры и DPI конкретного монитора и определенного расстояния головы пользователя до экрана, при этом считается что unit задания размеров 1 метр.
0
|
случайный прохожий
2955 / 1966 / 609
Регистрация: 20.07.2013
Сообщений: 5,208
|
|||||||||||
20.12.2014, 17:21 | 27 | ||||||||||
Сделал по-своему и немного проще (используя возможности исходной программы).
Кликом ПКМ выбираем угловую точку (она меняет цвет) и изменяем параметры для ее перемещения (при смещении мышью параметры было сложно считать, поэтому выбрал способ "задом наперед"). cpp:
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
||||||
21.12.2014, 12:22 | 28 | |||||
gunslinger, Где то точка подгуляла, причем одна. То ли где то цикл не до конца считает, то ли наложение адресов хотя здесь нечему, все статическое...
Добавлено через 6 минут gunslinger, Выложи скомпилированную в статике, а то у меня VCL другой версии. или хотя бы несколько скринов, чтоб понять по какой траектории ота подгулявшая точка движется. Добавлено через 13 минут Тьфу ты блин оно так задумано.. а я думал там в проекциях что то поехало... да кстати, если одну из координат оставлять постоянной то и координаты просто пересчитываются. разложение координаты мыши P по проекции осей(i,j);
Добавлено через 7 часов 48 минут Да кстати,на принципы расчета хоты бы намекни плиз. А то получается 2 известных значения на три уравнения. Меня собственно этот вопрос на форум и привел https://www.cyberforum.ru/grap... 29295.html
1
|
случайный прохожий
2955 / 1966 / 609
Регистрация: 20.07.2013
Сообщений: 5,208
|
|
21.12.2014, 12:39 | 29 |
Сложность в том, что пытаясь использовать код исходной программы и применяя некоторые свои "мысли" (например, учитывая разницу по х и по у после перемещения и как-то пробуя связать это с z, хотя почти не сомневаюсь, что нужно "смотреть" и на угол поворота фигуры), я различными способами пытался выяснить "обратную связь" между смещениями и параметрами px[i], py[i], pz[i] (каждого по восемь). Прямая зависимость прослеживается по коду, но наоборот сделать не получилось.
В итоге сделал менее "интуитивным", но более понятным, простым (и очевидным в итоге) способом. Так что нет никаких принципов расчета по твоему вопросу, а то, что пытался использовать, ничего общего не имеет со "строгой математикой".
0
|
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
|
|
21.12.2014, 12:59 | 30 |
Прямой связь - решение уравнение разложения точки по базису системы координат. код который я тебе написал (функция Basis), если внимательно присмотришсья именно и есть решение уравнения методом Крамера, но оно работает только для 2D случая, потому что если добавить z система имеет бесконечное множество решений.. поэтому прийдется исакть пересечение луча проходящего через координаты курсора с какой либо плоскостью, а координаты мыши в этой плоскости находятся тривиально. Другое дело что к примеру в 3DMax так же как и в SolidWorks, перемещения идут по всем сразу координатам. как вариант используют плоскость в которой лежит последняя выбранная грань.
0
|
21.12.2014, 12:59 | |
21.12.2014, 12:59 | |
Помогаю со студенческими работами здесь
30
Как соединить точки линией? Соединить точки на плоскости. QPaint Соединить точки плавной кривой Как соединить 2 точки доступа Wi-Fi? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |