Форум программистов, компьютерный форум, киберфорум
Наши страницы
3D моделирование
Войти
Регистрация
Восстановить пароль
Другие темы раздела
3D моделирование Чертежи для тренировки навыков моделирования по чертежам в Blender http://www.cyberforum.ru/3d-modeling/thread1425963.html
Привет! Я недавно сделал планировку квартиры в 3D по этому туториалу и пистолет по этому Хочется дальше тренироваться с моделированием по чертежам. Мне бы хотелось, чтобы вы прикрепляли к своим...
3D моделирование Cinema 4d: видеокурс по моделированию Кто знает хорошый какой то видеокурс по моделированию в C4D? http://www.cyberforum.ru/3d-modeling/thread1421934.html
Ускорение обучения моделирования персонажей в maya 3D моделирование
Вопрос к опытным моделерам! дело в том что я обучаюсь в онлайн школе на 3д моделировании в maya всего 6 недель и мне нужно больше дополнительной информации так как хочу стать моделером персонажей....
Создание Нормал Мапов 3D моделирование
Суть проблемы такова, у меня диплом - игра (гонки). Диплом по программированию, делаю их в Unity. с программной часть проблем пока не получал а вот работа с моделями.... завис.... мозги кипят......
3D моделирование 3Dmax, непонятки с мягким выделением http://www.cyberforum.ru/3d-modeling/thread1405521.html
Здравствуйте! надо чуть расширить спираль (htlix) методом мягкого выделения (софт селекшен) применяю к спирали модификатор эдит сплан, выбираю все точки верхних витков, хочу применить софт...
3D моделирование Анимация ядерной энергии и распада ядра Привет! Необходим сделать или дать готовую анимацию в Blender. Анимацию нужно по следующим темам: 1) Радиоактивность 2) Ядерные силы и ядерная энергия. Можно уже готовую (я не нашел на... подробнее
Constantius24
67 / 67 / 42
Регистрация: 30.03.2015
Сообщений: 371
23.04.2015, 19:17  [ТС] 0

Как математически зная только вектор вычислить кватернион?

23.04.2015, 19:17. Просмотров 4596. Ответов 154
Метки (Все метки)

Ответ

Вот это да, сейчас попробую.

Добавлено через 28 минут
Вот, что получилось, пришлось отказаться от вкусного Matrix3D в пользу двумерного массива.
C#
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
            Vector3D xAxis = Direction;
            xAxis.Normalize();
 
            Vector3D zAxis = Vector3D.CrossProduct(Origin, xAxis);
            zAxis.Normalize();
 
            Vector3D yAxis = Vector3D.CrossProduct(zAxis, xAxis);
            yAxis.Normalize();
 
            double[,] m = new double[4,4];
 
            m[0, 0] = xAxis.X;
            m[0, 1] = yAxis.X;
            m[0, 2] = zAxis.X;
 
            m[1, 0] = xAxis.Y;
            m[1, 1] = yAxis.Y;
            m[1, 2] = zAxis.Y;
 
            m[2, 0] = xAxis.Z;
            m[2, 1] = yAxis.Z;
            m[2, 2] = zAxis.Z;
 
            m[3, 0] -= Vector3D.DotProduct(xAxis, Position);
            m[3, 1] -= Vector3D.DotProduct(yAxis, Position);
            m[3, 2] -= Vector3D.DotProduct(zAxis, Position);
            m[3, 3] = 1;
 
            Quaternion quat = new Quaternion();
 
            double tr, s;
            double[] q = new double[4];
            int i, j, k;
 
            int[] nxt = { 1, 2, 0 };
 
            tr = m[0, 0] + m[1, 1] + m[2, 2];
 
            if (tr > 0)
            {
                s = Math.Sqrt(tr + 1);
                quat.W = s / 2;
                s = 0.5 / s;
                quat.X = (m[1, 2] - m[2, 1]) * s;
                quat.Y = (m[2, 0] - m[0, 2]) * s;
                quat.Z = (m[0, 1] - m[1, 0]) * s;
            }
            else
            {
                i = 0;
                if (m[1, 1] > m[0, 0]) i = 1;
                if (m[2, 2] > m[i, i]) i = 2;
                j = nxt[i];
                k = nxt[j];
 
                s = Math.Sqrt((m[i, i] - (m[j, j] + m[k, k])) + 1);
 
                q[i] = s * 0.5;
 
                if (s != 0) s = 0.5 / s;
 
                q[3] = (m[j, k] - m[k, j]) * s;
                q[j] = (m[i, j] + m[j, i]) * s;
                q[k] = (m[i, k] + m[k, i]) * s;
 
                quat.X = q[0];
                quat.Y = q[1];
                quat.Z = q[2];
                quat.W = q[3];
            }


Вернуться к обсуждению:
Как математически зная только вектор вычислить кватернион?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2015, 19:17
Готовые ответы и решения:

Как отправить файл на сервер через FTP не зная имени а зная только расширение файла?
Доброго времени суток! Очень нужна ваша помощь форумчане.. Пытаюсь отправить файл через FTP на...

Найти вектор x,зная что вектор x перпендикулярен вектору a
3)Найти вектор x,зная что вектор x перпендикулярен вектору a,a=(1;0;1),вектор x перпендикулярен...

вычислить площадь и периметр равнобедренного треугольника зная только его катеты
задача очень лёгкая но у меня не получается))) я начинающий тока..... вычислить площадь (S) и...

Как найти вектор направления тела, зная угол поворота?
Как найти вектор направления\смещения по осям тела, зная угол его поворота.

Вычислить и отнормировать вектор, полученный как произведение матрицы A на вектор B
Вычислить вектор , равный произведению матрицы А(15,15) и вектора B(b1,..b15) полученный вектор...

154
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru