|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.12.2016, 17:03 | #1 |
Регистрация: 27.12.2016
Сообщений: 9
|
3D изменение z при вращении вокруг точки
Мне нужно после вращения вокруг одной точки сделать вращение вокруг другой точки, помогите найти новое значение z после первого вращения .
есть код: Val1 := 256; c[Angle1] - массив с косинусом углов Angle1 угол по x Angle2 угол по y x, y, z начальные значения точки nz := (-x ) *(c[Angle1]*c[Angle2]) - (y) *(s[Angle1]*c[Angle2])-z*s[Angle2]+Val1; // nz число получаемое явно не новое z nx := ((-x ) *s[Angle1]+ (curr2.y) *c[Angle1])/nz; ny := ((-x ) *(c[Angle1]*s[Angle2])- (y) *(s[Angle1]*s[Angle2])+z*c[Angle2])/nz; nz := ? ; //---Projection 3D->2D--- nx := round(nx*Zoom2) ; // новое значение точки x ny := round(ny*Zoom2) ; // y nz := ? ;
Хорошо поставленный вопрос это половина ответа.
Круг это свёрнутый в кольцо квадрат. Последний раз редактировалось кусака44; 30.12.2016 в 17:25. |
31.12.2016, 18:02 | #2 |
Регистрация: 27.12.2016
Сообщений: 9
|
вроде так надо
nz := -(nz - Val1) ;
Хорошо поставленный вопрос это половина ответа.
Круг это свёрнутый в кольцо квадрат. |
31.12.2016, 19:08 | #3 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Может быть, попробуете составить формулы через матрицы перехода просто?
Прикинул формулы (перемещение точки, повороты по 2 осям, перемещение обратно) - получились сложнее, чем у вас сейчас. Скажите, вокруг какой точки совершаете повороты?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 31.12.2016 в 19:32. |
04.01.2017, 14:17 | #4 |
Регистрация: 27.12.2016
Сообщений: 9
|
формула вращения из delphisources.ru программа - 3d_rotator
повороты вокруг любой точки
Хорошо поставленный вопрос это половина ответа.
Круг это свёрнутый в кольцо квадрат. |
04.01.2017, 17:14 | #5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Так в коде 3d_rotator поворот вокруг начала координат, а не какой-то любой точки.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
07.01.2017, 14:13 | #6 |
Регистрация: 27.12.2016
Сообщений: 9
|
Да, но этот код несложно подправить чтобы вращение было вокруг любой точки.
Хорошо поставленный вопрос это половина ответа.
Круг это свёрнутый в кольцо квадрат. Последний раз редактировалось кусака44; 07.01.2017 в 14:18. |
07.01.2017, 19:43 | #7 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
Чтобы сделать повороты вокруг 2 точек, стоит делать примерно так:
Сместить точку (x, y, z) (вычесть координаты точки поворота (x1, y1, z1)); Повернуть точку вокруг осей по формулам выше; Сместить точку обратно (добавить координаты точки поворота (x1, y1, z1)); Повторить действия выше для точки поворота (x2, y2, z2). Думаю, что просто не нужно делить nx и ny на nz, и не прибавлять к nz val1 сразу. Предположу, что это уже нужно для проецирования из 3D в 2D. То есть, для поворота оставить только работу с синусами и косинусами.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
08.01.2017, 16:36 | #8 |
Регистрация: 27.12.2016
Сообщений: 9
|
Типа того уже сделал, вращается вокруг 2 точек. Крутится, перемещается и вращается (куб) как надо (вокруг своего центра и вокруг 2 точки), правда мелькают непонятные квадраты в конце цикла, но это дело поправимое.
Zoom2 := 256 ; поэтому nx и ny восстанавливаются, пока так оставил. Всем спасибо, задача решена, особенно благодаря автору программы - 3d_rotator .
Хорошо поставленный вопрос это половина ответа.
Круг это свёрнутый в кольцо квадрат. Последний раз редактировалось кусака44; 08.01.2017 в 16:54. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переполнение стека при вращении PNG | grominfo | Мультимедиа в Delphi | 0 | 05.02.2015 19:39 |
Вращение камеры вокруг точки | GoldBuzz | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 3 | 08.01.2013 14:01 |
Flash сглаживание при вращении изображения | demon112 | Общие вопросы Web | 2 | 23.12.2012 11:17 |
Вращение камеры вокруг точки | jetei | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 2 | 11.02.2012 12:48 |
поворот точки вокруг оси | NiCola999 | Общие вопросы C/C++ | 5 | 13.08.2010 13:19 |