Войти
ПрограммированиеФорумОбщее

Инверсия матрицы 4x4 (комментарии) (6 стр)

Страницы: 1 2 3 4 5 6
#75
3:16, 30 янв. 2020

MrShoor
> Это же долбаный позор
:)

#76
15:47, 30 янв. 2020

"Ну, ужас, но не ужас-ужас-ужас" :)
Да, похоже студенту какому-то дали задание, он по-быстрому переколбасил код из GLScene на ООП-манер. Но хотя бы работает оно скорее всего корректно (если бы студент с нуля писал, то не факт).
По поводу deprecated - это не 1-я версия модуля, в XE8 он есть.

#77
(Правка: 15:56) 15:56, 30 янв. 2020

invis
> Но хотя бы работает оно скорее всего корректно (если бы студент с нуля писал,
> то не факт).
А всё-таки, где в 3д линейной алгебре вообще можно ошибиться? Там же большинство операций - тупые, как бомжующие алкаши. Инверсия матрицы - пожалуй, самое сложное, что там вообще есть.

Это ж не лапак какой-нибудь, где инвертируются матрицы овер 9000 измерений с денормальным детерминантом через десять разных декомпозиций и итеративное уточнение, не дай бог у результата будет погрешность больше 4 ulp. Вот тут да, с первого раза у тебя вряд ли чего получится, даже если делаешь строго по книжке.

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

#78
16:39, 30 янв. 2020

Delfigamer
> А всё-таки, где в 3д линейной алгебре вообще можно ошибиться?
Сколько лет тебе платят за работу программистом?

#79
17:25, 30 янв. 2020

Truthfinder
> Сколько лет тебе платят за работу программистом?
Нисколько, вот потому и спрашиваю. Вдруг я сам всё это время делал неправильно и даже не подозревал об этом? Ну, не считая очевидного "соорудил велосипед вместо скачивания готовой библиотеки".

#80
18:08, 30 янв. 2020

Delfigamer
> Нисколько, вот потому и спрашиваю. Вдруг я сам всё это время делал неправильно
> и даже не подозревал об этом? Ну, не считая очевидного "соорудил велосипед
> вместо скачивания готовой библиотеки".
>
>
Если ты не работаешь программистом и тебе за это не платят, никого не касается что и как ты пишешь. Это твоё личное дело и любое решение правильное.

#81
(Правка: 18:18) 18:15, 30 янв. 2020

Аха, типичный гемдев.ру - "Почему небо синее?" - "А в какой компании ты работаешь?" - "Ну ни в какой, а что?" - "Тогда можешь делать небо какого угодно цвета, никто тебе не запретит."

Truthfinder
А какие ошибки мог бы допустить студент в модуле векторов, если бы он получал за него деньги?

#82
(Правка: 31 янв. 2020, 9:49) 18:23, 30 янв. 2020

Delfigamer
> А какие ошибки мог бы допустить студент в модуле векторов, если бы он получал
> за него деньги?

Какие угодно. Ошибки допускают все и всегда вне зависимости от уровня профессионализма. В любом коде больше 1000 строк ошибки есть гарантированно. А я уже и не помню когда работал с проектами меньше нескольких миллионов строк.

Когда ты сутками напролёт делаешь одно и то же у тебя тупо глаз замыливается. По поводу того какие ошибки бывают (и реально неважно кто их сделал), почитай на хабре кучу статей хотя бы про то, что находит PVS студия в общеизвестных открытых проектах.

Ну например такая ошибка:

bool operator == (self_t const& rhs)  const { return val == rhs.val; }
bool operator != (self_t const& rhs)  const { return val == rhs.val; }

Удачи тебе искать подобные ошибки в многомиллионном в строках коде, где в подобные либы уже никто пару лет как не смотрит, потому что итак всё работает, а они фигачат контент. Особенно пока != никто не использует, и какой-то паренёк вдруг впервые за 5 лет (а то и 10, потому что эту либу ещё студент писал в начале 2010-х) написал !=. А потом приходит дамп с логом от пользователя, что если камеру повернуть вот так, что прям заморочиться надо, то в первую фазу луны цвет бликов на воде станет красный вместо зелёного, или вообще крашится.

По постановке твоего вопроса уже ясно, что ты там сидишь обычно и 10-20 строк вылизываешь до потери пульса. И над тобой не висят дедлайны, ты не сидел в кранче последний месяц, приходя в 11 утра и уходя в 23 ночи с работы. К тебе не подбегал начальник, со словами: "С хренали ты целых полчаcа по клавиатуре не стучишь? Я слышал!" (рил-ток!). Тебя не засыпали багрепортами в то время, когда надо фичи делать. В твой код не влазил внезапно левый чел, и ты вдруг внезапно получаешь багрепорт на свой код, хотя там ещё вчера всё работало, ты же проверял. Смотришь, а там кто-то уже что-то наменял. И слово выгорание для тебя это что-то там про дрова в костре, но никак не про айти. Ну и так далее.

#83
15:54, 5 фев. 2020

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

#84
(Правка: 17:03) 17:02, 5 фев. 2020

Stalker17
Ну это у меня солянка по разным конторам, коих было не мало за 20 лет. Но да, воз и ныне там по многим пунктам.

#85
18:06, 5 фев. 2020

Вопрос в тему. А под термином rigid matrix что подразумевается? То, что в ней все оси ортогональны другим - понятно, а вот если скейл !=1 это будет являться rigid matrix?

#86
(Правка: 18:18) 18:15, 5 фев. 2020

Polyflow3d
> Вопрос в тему. А под термином rigid matrix что подразумевается? То, что в ней
> все оси ортогональны другим - понятно, а вот если скейл !=1 это будет являться
> rigid matrix?

A rigid transformation is formally defined as a transformation that, when acting on any vector v, produces a transformed vector T(v) of the form T(v) = R*v + t where transpose(R) = R^-1.
A proper rigid transformation has, in addition, det(R) = 1 which means that R does not produce a reflection, and hence it represents a rotation (an orientation-preserving orthogonal transformation). Indeed, when an orthogonal transformation matrix produces a reflection, its determinant is –1.
Страницы: 1 2 3 4 5 6
ПрограммированиеФорумОбщее