Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Вопрос по переобразованием Лоренца ?

Вопрос по переобразованием Лоренца ?

Поделиться
Страницы: 1 2 3 4 Следующая »
werasaimonПостоялецwww27 ноя. 201723:19#0
Помогите разобраться тупому человеку с  преобразованиями Лоренца  в  (СТО)
Квадрат любого четырехвектора (интервал) ,
в пространстве  минковского , то бишь пространство с  метрикой минковского должен оставаться не изменим в любой ИСО . Движующюся с любой скоростю
ds = c^2 * (t0 - t1)^2- (x0 - x1)^2 - ( y0 - y1)^2 - (z0 - z1)^2
Это и есть метрика минковского , правило для вычисления ростояния между точками
  _________________________________________________
Теперь давайте сделаемь переобразования лоренца  из ИСО
К в ИСО  ‘К движующюся с скоростю v

'K.x = ( K.x - v * t ) / sqrt( 1 - v^2 / c^2)
'K.y = K.y
'K.z = K.z
'K.t = ( K.t - v * K.x / c^2) / sqrt( 1 - v^2 / c^2)

тут y и z не меняеться , мы кабы занимаемся 2- мерными случаемь где одна кордината время , а другая координата пространственая позиция. Остальное игноруруем .
P.S: Координат время, тоже позиция на оси время


Вот мы сделали переобразования, и у нас должен был сохранитца интервал |K|
Четерхвектор K= это позиция в начальный момент времени  K=(x,y,z,t)  ,
а ’K=(‘x,’y,’z,’z) это координаты четерехвектора после переобразования лоренца .
как нам говорит СТО интервал ( длина вектора ) , после переобразования лоренца должна оставаться не иземенвм , то бишь |K| == |’K| ....
______________________________________________________
Но если возмьмь компютер, и проверим числиным методом , или ровны интервалы до и после переобразования Лоренца  , то увидим что не ровны
P.S: скорей всего конечно это я где то тупанул


"Вот картинка для самых умных" ( сарказм ..!)
Loretz | Вопрос по переобразованием Лоренца ?

#include <stdio.h>
#include <math.h>

float c = 1;// light speed 

struct vector2
{
    float x;
    float t;
    
    vector2():x(0),t(0){}
    vector2( float _x , float _t ):x(_x),t(_t){}
    
    float length2() const
    {
         return fabs(c*c*t*t - x*x);
    }
    
};



int main(int argc, char *argv[])
{
    vector2 K0(0,1);  //  ИСО_0
    vector2 K1(0,1);  //  ИСО_1
    
    float v  = 0.5; // velocity 
    float dt = 0.1; // Dt 
    
    int count_iteration = 5;
    for( float t = 0; t < count_iteration*dt; t += dt )
    {
       float betta = (v/c);
       float gamma = sqrt( 1.0 - (betta*betta) );//loretz factor ^ -1
       
       K1.x = (K0.x + v * t)/ gamma;
       K1.t = (t + v * K0.x / (c*c)) / gamma;

       printf( "|K0|:%f |K1|:%f \n",K0.length2(),(K1).length2());
   
    }
    
    printf( " \n\n\n what a fack ? " );
    
    return 0;
}

Мы видимь что интервалы не ровны |K| != |’K| ....?
Теперь вопрос , что я делаю не так в коде , почему интервал не остается неизменым ?
P.S: (Сарказм) Либо я тупой , либо Лоренц тупанул !
Кароче объясните, помогите дураку , что не так  ?


> Проблема решена ...!

Вот код с правильными переобразованиями Лоренца , с помощю метода Гергллцема, и методом матрицы буста Лоренца .
Если вы розрабатываете физический-движок на основе СТО
, эти переобразования вам пригодиться!

P.S: хотя я уверен на 100% что код правильный, может есть кто боле умный , чтоб доказать обратное ! Кароче говоря я могу быть на 100% уверен что код верен , или нет .....????

+ Показать

Правка: 12 дек. 2017 0:17

=A=L=X=Постоялецwww28 ноя. 20173:49#1
werasaimon
> (v*K1.x/c*c)

Как это будет посчитано?

SuslikМодераторwww28 ноя. 20174:29#2
werasaimon
> // operator() + in space minkowskii
> vector2 operator + ( const vector2 &u )
> {
> return vector2( x + (u.x / c) * u.t ,
> t + (u.x / c) * x);
> }
чё это вообще такое?
=A=L=X=Постоялецwww28 ноя. 20174:42#3
werasaimon
> K1.t = (K1.t - (v*K1.x/c*c) * dt) / gamma;
> K1.x = (K1.x - v * dt) / gamma;

Пригляделся - тут дичь написана в нескольких местах не соответствующая формулам преобразований.
Держи постоянно перед глазами смысл преобразований - для пары чисел (x,t) и скорости v они дают другую пару чисел (x',t'), не надо выдумывать ничего нового в этих действиях и добавлять в них переменные от балды.

werasaimonПостоялецwww28 ноя. 201720:07#4
Suslik
Это переобразования для любых четерех-векторов
, в пространстве минковского ! Так пишет в книги (тензоры  для чайниковь)

=A=L=X=
Ты имеешь ввиду что мне надо было сделать так
К1.x = ( 'K1 + v * dt ) / gamma
K1.t = ( 'dt - v * 'K1.x / c*c ) / gamma;
dt = const
А почему не t , а потому что это интегральная функция ! Это 100% переобразования лоренца

P.S : В моёмь релетивиском физ-движке я использую  матрицы буста лоренца 4x4 , и движок на 100% гемеоморфен СТО ! И интеграл который я тут написал в коде даёт точно такие данные как движок! Так что скорей всего интеграл в коде правильный ! Ну или я с матрицами тоже тупанул ,
Но скорей всего нет , так как все испытания движка дают адекватный результат .

  |'K|= |K| Но этого понять , не могу ?

  -------------------------------------------------------------
  Если есть кто шарит мат_физику подскажите помогите :
  У меня есть ещё один вопрос по ОТО ,
  Для того чтоб перейти от СТО на ОТО , я заминяю
  B(u) = матрица буста лоренца над полем u = ускорения . Ну тобишь вторая производная силы ровна  F = ''X = ('B(u)B(v) * massa )) это в СТО !
в ОТО B(u) заминяю на тензор инергии импульса енштейна T(ij)(u('i)u('j)) , тут ' = это контервариятный индекс , а без штриха коварятный индекс , и само собой подразумиваемь правило енштейна про суммирования индексов , чтоб ни писать каждый раз оператор сумы .
Вопрос это всё что мне надо сделать, или что ещё ,
чтоб движок стал гемеоморфен ОТО ?

Правка: 29 ноя. 2017 21:40

=A=L=X=Постоялецwww29 ноя. 20177:40#5
werasaimon

Преобразования Лоренца переводят пару чисел (x,t) - это пространственная и временная КООРДИНАТЫ в пару чисел (x',t'), которые тоже пространственная и временная КООРДИНАТЫ в другой системе отсчёта. Для вычислений используются две дополнительных величины - скорость света (c) и скорость системы отсчёта относительно первой (v). Не должно быть какого то еще третьего времени в этой формуле (ни тем более РАЗНИЦЫ времени).
В общем просто собери мозги в кучу, выпиши формулу сперва на бумажке и помедитируй на неё, пойми смысл каждой участвующей в ней величины чётко и ясно.
После этого проблем не возникнет.

А рандомное программирование - когда от балды всякие величины в формулы подставляешь, надеясь угадать, ведь типа похоже на правду, в чём то или как то - оно довольно таки бесплодная штука.

P.S.

А в ОТО сразу скажу - зря суёшься. Это не такая штука чтобы от СТО взять и перепрыгнуть в одно действие - совершенно не так. Напротив, ОТО это в 10 раз более сложная охренительно вещь, с кривым пространство-временем и потому радикально иной математикой в которой только величина локального интервала и похожа на СТО, но это капля в море совсем новых концепций.

Правка: 29 ноя. 2017 7:44

SuslikМодераторwww29 ноя. 20177:55#6
=A=L=X=
что ты ему рассказываешь, если у него в самых элементарных вещах даже проблемы жуткие. сколько уже тем было с его участием по азам ньютоновской физики. его это никогда не останавливало.
=A=L=X=Постоялецwww29 ноя. 20178:31#7
Suslik
> сколько уже тем было с его участием по азам ньютоновской физики

Ааа, я не в курсе.

MANABПостоялецwww29 ноя. 201715:02#8
=A=L=X=
> > (v*K1.x/c*c)
тоже сразу ошибку в скобках начал искать)
werasaimonПостоялецwww29 ноя. 201721:39#9
=A=L=X=
Так я всё понимаю что СТО  все ИСО равно правны!
Но я россматриваую систему с точки зрения не подвижного наблюдателя тоесть V = v !
V = относительная скорость K 'K
Переобразования на 100 % правильные , ну если не брать внимания кофициенты !
P.S : Я же написал релетивский движок , который гемеоморфен СТО на 100%, я прекрасно понимаю СТО и прекрасно понимаю  динамику движения в СТО !
Я просто хочу понять  это |'K| = |K| ? Движок готовь ,это я сам для себя понять хочу ?

А на щёт ОТО , ты же понимаешь что мне ненадо выводить всю теорию , мне нужна только динамика движения  , смотри скорость это перемещения с точки в новую 'точку  .
в ОТО скорость это касательная к искревльоному пространства-время в данной точки , то есть например чтоб описать всю геозедичискую линию перемещения  я должен взять нормаль направленный по оси время y(0,0,0,1* с) потом умножить на симетричную матрицу M4×4 в которую мы вели кофициенты символами кристофеля , задали Метрику Риманна!
Потом наш тензор сварачиваемь  в тензор Риччи . И собственно мы получили тензор енштейна , " тензор енштейна это частный случай тензора риччи " . тепеь беремь наш
Нормаль и сворачиваемь с тензером енштейна
V = T(ij)y('i)('j) , это есть 4-скорость в 4-мерном пространстве , её длина всегда ровна 1 * с ,
То есть в 4-мерном пространстве мы всегда движемся с скоростю 1 * с , та еще и по прямой линии ( геозедической прямой ) .
То есть если пространство не было искревльоным , мы бы двигались только по оси времени "и только старели" , и не перемищались в 3-мерном вещественом пространстве . Ето следсвия того что геозедическая всегда прямая линия . Но в искревлёном пространстве-время прямая линия ,
Это линия которая описываеть самый короткий путь от точки (а) к точки (b) , то бишь задаёт метрику |a - b| ! И это искревлёное пространство-время изменят нашу 3-мерную скорость , потому что 3-мерная скорость это ортогональная проекция (тенни) 4-мерной скорости на 3-мерное пространство . По сути это и есть динамика ОТО !

Но нам надо ещё искривлять саму геометрию тел (меш-сетку) для этого мы каждую точку меш-сетки умножить на тензор енштейна , но сам тензор натягиваемь на вектора  u , v  , каждого треугольника !  (u , v) это такие вектора что эсли мв сделаемь так u×v = n то получимь нормаль треугольника !
У нас група ли  SU(1,3)

Сворачиваемь = делаемь матричные умножения !
Тензор = метрический тензор !

MANAB
Нету там ошибки!

Suslik
Все когда-то ошибаются,  тем не менее я преодолел нютоновскую физику , за ней релетивискую , и думаю скоро перейду в ОТО !


Пожалуста давайте ответы, матиматический . Я понимаю только формулы !

Правка: 1 дек. 2017 23:57

=A=L=X=Постоялецwww30 ноя. 20179:31#10
werasaimon
> Я просто хочу понять это |'K| = |K| ?

Да, они должны быть равны при правильных вычислениях по формуле Лоренца.

werasaimonПостоялецwww30 ноя. 201721:19#11
=A=L=X=
Я в шапки , переписал код чтобы было боле понятно ! И переобразовния верны . Но даное
условия |K| == |'K| не вополняеттся . ?
P.S : у меня и без этого всё роботает , но очень хочется понять что это значит ?
MrShoorУчастникwww30 ноя. 201721:39#12
werasaimon
> Нету там ошибки!
Тогда зачем ты сначала делишь на c а потом тут же умножаешь c:
(v*K1.x/c*c)
=A=L=X=Постоялецwww30 ноя. 201721:43#13
werasaimon
Ну потому что ты просто от балды подставляешь переменные в уравнения без понимания что они означают. Перечитай мои комментарии.
werasaimonПостоялецwww1 дек. 201723:50#14
Люди вы что издиваетесь , я даже картинку поставил которая демонстрирует переобразования лоренца !


MrShoor
уже поставил душки !

=A=L=X=
Я как раз всё очень хорошо понимаю , я переписал уравнения  так чтоб было остальным понятно . Уравнения какими были таким и остались!
Я даже картинку там поставил .
Уравнения на 100% соответствуют картинки !
Всё как было сначала  так и осталось .
Не чего там от болды я не делал , потумучто я по сути ни чего не изменил просто замисть += умножайю на i = время !

Правка: 2 дек. 2017 0:00

Страницы: 1 2 3 4 Следующая »

/ Форум / Программирование игр / Физика

2001—2017 © GameDev.ru — Разработка игр