[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]

Файл: orig.gif -(209 KB, 500x500, orig.gif)
209 No.5087056  

Одна бака балуется программированием, и решила ради интереса написать программу, которая бы симулировала 4х-мерное пространство. А точнее проецирует его на 2х-мерный экран.
И тут понеслось...
Кватернионы, комплексные числа, степенная ассоциативность,упорядоченные пары, неассоциативные числа и т.д. и т.п.
Как глупой фее сделать такое?

>> No.5087061  

>>5087056
Мне всегда казалось, что вероятность нашего понимания устройства четырёхмерности и вообще того, что больше наших родных трёх стремится к нулю, а то что есть лишь несостоятельные, ввиду невозможности практического изучения, теории да догадки. И вообще возможны ли они в нашем трёхмерном пространстве.

>> No.5087063  

Математика не нужна!

>> No.5087064  

>>5087061
В математике возможно всё. Компьютеру чтобы спроецировать 4D модель, не нужно это 4D пространство понимать.
Но вот как это сделать..?

>> No.5087065  

>>5087064
Линейная алгебра. Первый курс.

>> No.5087066  

>>5087065
Забавное совпадение. Я как раз на первом курсе учёбу и бросил

>> No.5087067  

Чисто технически, чтобы спроецировать тебе не нужно ни кватерионов, ни даже матриц, а достаточно банальной тринонометрии. Просто вычисления будут не такими красивыми.

>> No.5087068  

>>5087067
Как?

>> No.5087070  

>>5087064
У каждой точки по четыре координаты. Думай, как их спроецировать на две. Это сложнее, чем три, но проще, чем пять.

>> No.5087071  
Файл: IMG_20200812_190802.jpg -(2067 KB, 2498x3127, IMG_20200812_190802.jpg)
2067

>>5087068
Ну вот например какая-то, хрен пойми какая, проекция гиперкуба. Но если долго и упорно чертить, то можно вывести все нужные формулы в явном виде.

>> No.5087072  
Файл: IMG_20200812_190809.jpg -(1717 KB, 2469x3127, IMG_20200812_190809.jpg)
1717

Например, та же матрица поворота полностью эквивалентна тому, что просто построить, что куда проецируется в двумерном пространстве. Хотя если ОП дошёл до кватерионов, то с матрицами должен был уже разобраться.

>> No.5087073  

>>5087071
Я кажется, всё-таки потерял несколько линий, простите.

>> No.5087074  

>>5087072
Ну, матрица это такой квадратик, куда записывается много чисел. А ещё, чтобы умножить одну матрицу на другую, надо вторую перевернуть.
Это всё, что я знаю о матрицах.
И "Дошёл до квантерионов" - не значит "Понял хоть слово из написаного"

>> No.5087075  

Тут тред есть, где сырно с математическими степенями всё рассказывает и разъясняет.

>> No.5087076  

>>5087075
А я думал он уже давно скрылся в пучинах глубоких вод. Пойду поищу. Надеюсь та Сырно до сих пор там

>> No.5087077  

>>5087075
Не бывает сырн с степенями, сидящий и расьясняющих на ычане. Просто человек знает.

>> No.5087079  

>>5087074
Вообще, для того, чтобы нарисовать куб (и не только куб), не важно какой размерности, все эти слова, которые в ОП-посте не шибко-то нужны. Вот матрицы да. Но на самом деле матрицы, которые используются в графике, — это просто такой краткий способ записывать несколько формул, преобразующих координаты. Так что на самом деле там никакой хитрой математики и нет. Только синусы, да косинусы.

>> No.5087080  

>>5087077
Тут бывали сырны мэры городов, ГМы преподаватели в институтах. Чому бы не быть сырнам с степенями по математическим наукам?

>> No.5087084  

>>5087080
>>5087077
Тут даже Сырны, работающие в Чернобыле бывали. А это гораздо более редкое явление, чем степень по математике

>> No.5087087  

>>5087084
Степан не очень сырно.

>> No.5087089  

>>5087087
Да, я слышал у него даже семья вроде как есть. Но тем не менее, на Ы он сидит, сначит Сырно

>> No.5087090  

>>5087080
Что не месяц, то новое открытие об родном.

>> No.5087122  

>>5087077
Х-к, например.

>> No.5087173  

>>5087080
Помню, слушаю как-то запись одной лекции на ютубе, а там вдруг лектор упоминает, что посиживает на бордах и начинает объяснять про сорта трollей. А я сижу и думаю, вот дожили. Раньше всё одно было, разве что на тонких и толстых делили, а теперь вот академики тут всякие классификации разводят.

>> No.5087262  

>>5087080
А можно про Сырну-мэра поподробнее?

>> No.5087266  

Все просто.

Пусть например у нас в 4-x мерном пространстве точки.

Эти точки могут быть вершины кубика, например:

(1,1,1,1)
(1,1,1,-1)
(1,1,-1,1)
(1,1,-1,-1)
(1,-1,1,1)
...
просто взять все комбинации из 1 и -1 в четыре элемента.
Потом можно будет связать их линиями чтобы получить фигуру.

Ну вот, теперь чтобы спроецировать в 2д, нужно перемножить каждую точку на какую-нибудь матрицу которая переносит 4-х мерные вектора в 2д, например:

(1,0) (1)
(0,1) * (-1)
(0,0) (1)
(0,0) (-1)

(Слева матрица, справа одна из точек).

Ну и все, готово.

Но это конечно довольно скучная проекция -- она полностью игнорирует половину измерений.

Что-бы повертеть, мы можем использовать матрицу для поворотов:

(cos(t) -sin(t))
(sin(t) cos(t))

Только нужно эту матрицу как-то умножить на 4-х мерные точки/вектора. Тут мы просто фиксируем два направления, и изменяем только оставшиеся направления.

Например:

(1 0 0 0)
(0 cos(t) -sin(t) 0)
(0 sin(t) cos(t) 0)
(0 0 0 1)

умноженная на любую 4-x мерную точку будет поворачивать только вторую и третью координату, оставляя первую и четвертую нетронутой.

И потом мы опять используем скучную матрицу

(1,0)
(0,1)
(0,0)
(0,0)

что-бы перейти в 2д.

>> No.5087297  
Файл: изображение.png -(48 KB, 1172x601, изображение.png)
48

>>5087266
Спасибо. Даже кажется, получилось что-то похожее на правду (Правда очек пока всего 8, как у трёхмерного куба) С умножением матриц я вроде понял.
А что там за sin(t), и cos(t)?
Что такое t? Это какой-то угол? Угол чего?

И ещё, в случае с кубом - как можно найти ближайшие точки, с которыми образуются грани? Вот на этой картинке я делал просто точки. И какая точка с какой соединяются - вроде интуитивно понятно. Но если их будет больше? Тогда ведь вообще нифига будет не разобрать. Есть какой-то математический способ найти те точки, которые с отдельно взятой точкой образуют грани?

>> No.5087307  

И ещё, мне совсем не понятно, как такой куб крутить в пространстве. Наверное через какие-то там синусы косинусы, но это так сложна!!!

>> No.5087309  

>>5087262
На моей памяти был только один. Из Прибалтики. Говорил, что самый молодой мэр в стране или что-то такое. Впрочем, ни конкретики ни пруфов не предоставил, поэтому считается полумифическим персонажем.

>> No.5087314  

>>5087297

> Что такое t?

t это угол поворота в плоскости (в том примере эта плоскость которая проходит через (0,0,0,0), (0,1,0,0) и (0,0,1,0)).

> Есть какой-то математический способ найти те точки, которые с отдельно взятой точкой образуют грани?

Ну, например, для обычного куба/квадрата, это ближайшие точки. Т.е. для каждой точки можно посчитать расстояния до других точек, найти минимальное, и взять все точки которые отстают от заданной точки на это расстояние.

В большем количестве измерений принцип тот же.

И это не единственный метод.

>> No.5087316  

>>5087297
Точки, которые отличаются только по одной координате, соединяешь отрезками.
t — угол, да. Угол поворота относительно каких-нибудь двух осей. В двумерном случае возможно только одно вращение, в трёхмерном три (для каждой пары координат).
Если у тебя 4 измерения, то будет 6 возможных базовых осей вращения и 6 углов.

Строишь для каждой оси матрицу поворота, как в >>5087266, и умножаешь по очереди. Ну либо подсмотри эти матрицы, например, здесь: http://kennycason.com/posts/2009-01-08-graph4d-rotation4d-project-to-2d.html И там, кстати, и код очень простой и понятный, хоть и немного усложнённый лишним ООП.
Ну и затем матрицу проекции.

>> No.5087378  
Файл: изображение.png -(13 KB, 745x375, изображение.png)
13

>>5087316
А если куб в пространстве повёрнут? тогда не получится по координате смотреть
>>5087314
Ну вот я сделал (Пока на 3d кубе) и он чего-то работать не желает. Обрезал по дистанции 800 и получилось то, что справа

>> No.5087379  
Файл: изображение.png -(3 KB, 630x35, изображение.png)
3

>>5087378
Хотя формула вроде правильно.
((X1+X2)^2 + (Y1+Y2)^2 + (Z1+Z2)^2) И из всего этого корень квадратный

>> No.5087381  

>>5087378
Смотришь по изначалным координатам, до трансформации. Ну либо вообще можно просто завести заранее набор пар, какая точка с какой соединена. Например, для двумерного квадрата 4 точки: точка 0 — (0, 0), 1 — (0, 1), 2 — (1, 0), 3 — (1, 1). Список отрезков будет (0, 1), (0, 2), (1, 3), (2, 3). После поворота или другой трансформации координаты изменятся, но соединения останутся такимм же.
Для большей размерности то же самое, только больше точек и отрезков.

>> No.5087406  

>>5087379

Ну похоже на куб. Только помимо ребер рисуются еще диагонали на сторонах и через центр куба.

Наверное неправильно отфильтровались отрезки в коде.

А так, можешь попробовать давать разный цвет отрезкам, в зависимости от их длинны.

И да, в формуле я думаю нужны минусы для разности:

((X1-X2)^2 + (Y1-Y2)^2 + (Z1-Z2)^2)

(вообще если numpy юзаешь, там есть функции для вычисления длинны)

Ну можешь еще завернуть это все в функцию и потестить на известных примерах.

>> No.5087441  

ITT: Сколько нужно сырен чтобы нарисовать куб.
https://jsfiddle.net/0f197jrm/show

>> No.5087462  

>>5087441

.....________
..../|....../|
.../.|...../.|
../..|..../..|
./...|___/___|
/_______/..../
|../....|.../
|./.....|../
|/......|./
|-------|/

>> No.5087463  
Файл: 1588013992635.jpg -(25 KB, 500x500, 1588013992635.jpg)
25

>>5087462

>> No.5087487  

>>5087441
https://jsfiddle.net/vkmpcq4o/show
+графон и оптимизация

>> No.5087502  

>>5087487

Круто!

>> No.5087517  

We need to go deeper
https://jsfiddle.net/mfb8q2ou/show

>> No.5087526  
Файл: Runner 2016-09-24 22-50-44-495.webm -(566 KB, 800x576, Runner 2016-09-24 22-50-44-495.webm)
566

Вот это маленькое круговое движение башенки танка на корпусе, пока тот вращается, имеет внутри себя функции синуса и косинуса! Со времён контрольных по матеше, ни до, ни после этого кусочка кода, синус и косинус мне в жизни не пригождались ни разу.

Это моё высшее интеллектуальное достижение, наверное, за всю жизнь. [i]Сырна 33 лёт, две вышки.[/i]

>> No.5087528  

>>5087526

> Сырна

Еще никогда Штирлиц не был так близок к провалу.

>> No.5087529  

>>5087528

Ничего-то у меня в жизни не получается!

>> No.5087553  

>>5087517
очень красиво!

>> No.5087559  

Скучная задача. Потом удивляются, отчего люди математику не любят. А что любить-то, пустые и бессодержательные кубы?

>> No.5087560  

>>5087517
Без всяких быблиотек, на формулах и матицах. Ух умные вы. Или накопировано таки откуда-то?

>> No.5087563  
Файл: keikumusume-11.png -(113 KB, 240x240, keikumusume-11.png)
113

>>5087559
Я люблю деньги и сложный процент.

>> No.5087572  

>>5087559

Рисуйте утку.

>> No.5087613  
Файл: изображение.png -(5 KB, 380x368, изображение.png)
5

Тыыыкс... Сырно с новыми силами продолжает кодить
>>5087406
Вот я дурак... Вобщем получилось у меня

>> No.5087614  
Файл: изображение.png -(10 KB, 475x503, изображение.png)
10

Поздравьте меня! У меня наконец-то вышло ввести в программу формулы, и вот он - Четырёхмерный куб!

>> No.5087630  

>>5087614
Выглядит правдоподобнее, чем эта стандартная модель четырёхмерной фигуры с повтором фигуры внутри фигуры.

>> No.5087632  

>>5087517
Вот много таких картинок видел, но точки и грани сбивают с толку. Как бы это выглядело, если бы грани были непрозрачны?

>> No.5087635  

>>5087632
Непрозрачные поверхности мы, существа трёх измерений, ни увидеть ни понять не смогли бы. Ты бы увидел только куб, из которого как и было сказана составлена эта проекция.

>> No.5087637  

Мне вот больше всего нравится такое объяснение 4х-мерных объектов, что их тень будет трёхмерной проекцией в виде их трёхмерных собратьев.

>> No.5087638  

>>5087630
В ОП-посте перспективная проекция, а у ОПа параллельная.

>> No.5087639  

>>5087632>>5087635
Ну почему сразу куб, в зависимости от угла увидили бы что-то такое же восьмиугольное как на картинке, только закрашенное. Чтобы правильно покрасить, нужно сначала упорядочить точки по одной перпендикулярной координате, а потом по другой.

>> No.5087642  
Файл: изображение.png -(8 KB, 413x382, изображение.png)
8

И так. Вот наконец-то я закончил.
Если кто захочет покрутить, вот ссылочка на код
https://pastebin.com/APWkiDhT
Только установите Python, PyGlet и NumPy
Управление - ZXC - крутить куб в человеческих трёх измерениях. ASD - крутить куб в остальных трёх измерениях

А ещё у меня вопрос к матеиатикам:
Вот когда я проецирую всё это на матрицу
[0,1]
[1,0]
[0,0]
[0,0]
То по осям ZU (Тыкаю кнопку D) она вообще не крутится. Я кстати, пол часа искал ошибку в коде, пока не решил попробовать спроецировать на что-нибудь другое
А когда я проецирую на матрицу
[0,0]
[1,0]
[0,1]
[0,0]
То всё крутится. Почему так происходит? Это явно не програмный баг, а какая-то особенность математики. Но я ваще не понимаю, как так может быть. Есть какое-то умное объяснение этому феномену?

>> No.5087650  
Файл: subaru.png -(61 KB, 500x500, subaru.png)
61

>>5087572
https://jsfiddle.net/1wrvo6t9/show

>> No.5087651  
Файл: __emilia_re_zero_kara_hajimeru_isekai_se(...).jpg -(107 KB, 850x1039, __emilia_re_zero_kara_hajimeru_isekai_se(...).jpg)
107

>>5087650
Субару?

>> No.5087654  

>>5087441
Смотря на правый холст иногда можно увидеть медленно шагающую с боку на бок усеченную пирамиду.

>> No.5087873  

>>5087517

https://en.wikipedia.org/wiki/Tesseract#2D_orthographic_projections

>> No.5089411  

https://jsfiddle.net/dmb37hs5/show

Кто не знает ничего об HTML, наверное, и не поймёт, в чём соль моей версии и почему она так тормозит.

Хочется на самом деле попробовать как-нибудь текстурировать, только уже в каком-нибудь более адекватном виде.

>> No.5089652  
Файл: circir.jpg -(683 KB, 2048x3640, circir.jpg)
683

>>5087075
Я тут, но тот тред вести не буду (пока что). А тут вопросов нет особо
>>5087642
Ну конечно, ты же меняешь только те координаты, которые не видны в проекции. По аналогии как если бы ты крутил (обычный) куб в плоскости ОXY и смотрел бы на ось OZ, ты бы тоже увидел просто отрезок который не меняется никак.
В случае с
[0,0]
[1,0]
[0,1]
[0,0]
не крутится будет XU

>> No.5089672  

>>5089652

О!

Поймала Сырну.




[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]