Russian Qt Forum
Ноябрь 25, 2024, 13:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 20 21 [22] 23 24   Вниз
  Печать  
Автор Тема: Геометрия (задачки)  (Прочитано 226660 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #315 : Сентябрь 19, 2018, 12:38 »

30) Обратная задачка - вот есть чайник и матрица его (аттач). Что делает эта матрица?

Ну ясно, матрица - формальный аппарат, может использоваться для чего угодно. Но мы рассматриваем лишь самый простой (и самый популярный) случай - перевод из одной СК в другую. Поэтому вопрос можно ставить и так: из какой СК в какую эта матрица переводит? Или: какие координаты должны на нее умножаться и какие ожидаются после умножения?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #316 : Сентябрь 21, 2018, 10:03 »

это задача для первокурсников на понимание матрицы перехода между базисами? Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #317 : Сентябрь 21, 2018, 15:25 »

это задача для первокурсников на понимание матрицы перехода между базисами? Улыбающийся
Базис - это "как направлены оси мировой СК" причем формулируется это словами. Напр
Цитировать
ось X идет слева направо, Y - снизу вверх и Z - на нас
пожалуй самый популярный, но возможны и другие. Напр AutoDesk направляет вверх Z - и отлично себя чувствует. Часто просто предъяаляют рисунок - но это же не значит что нарисованные оси - обязательно базис Улыбающийся Здесь просто визуализированы оси матрицы, что Вы можете о ней сказать?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #318 : Сентябрь 26, 2018, 04:59 »

Используем базовые знания/понятия. Мы знаем что умножение точки/координаты на матрицу СК сводится к проецированию на записанные в ней оси, Здесь эти оси нарисованы - ну так проецируем. Возьмем точку A на носике чайника и опустим из нее перпендикуляр на красную ось (X). Длина (знаковая) красного отрезка от упавшей точки до пересечения осей и есть новая координата X что получается в рез-те умножения на матрицу. Точно так же спроецируем точку A на зеленую и синюю оси, получим новые Y и Z. Вот они, "суть косинусы" (так сейчас учат в ВУЗе). Попробуем сделать то же самое для чайника на картинке предыдущего поста. Для точки A получим те хе самые X>0, Y>0, Z = 0. Точка пересечения осей всегда будет иметь координаты (0, 0, 0) после умножения.

Отсюда вывод - мы видим локальную СК чайника, эта матрица переводит в... локальную СК (да, масло масляное Улыбающийся) где точки (вертексы) остаются неизменными как бы чайник ни крутили и как бы ни облетали камерой.

Примечание: хотя термин "локальная СК" вполне корректен, чаще говорят "модельные координаты", а то и просто "в модель". При этом часто имеется ввиду что это те самые координаты что записаны в файле модели, напр в .obj файле, хотя это и не всегда так.

Ну вот, с "куда" ясно, осталось разобраться с "откуда". Или: какие координаты должны множиться на эту матрицу?

А чтобы лучше понять/прочувствовать полезно поиграть в "почемучку", позадавать самому себе вопросы, пусть они и звучат наивно. Ну например
Цитировать
А чего это "X = длине красного отрезка"? Разве точка пересечения осей нулевая в исходной СК ?
Или
Цитировать
А откуда взялась эта "локальная СК"? Почему у нее центр на донышке чайника, а не, скажем, в его центре или на крышке или еще где? "Кто так сказал?" Улыбающийся
или совсем уж глуповатый(?) вопрос
Цитировать
А откуда я возьму "точку A на носике", т.е. 3 конкретных x, y, z ?
« Последнее редактирование: Сентябрь 26, 2018, 05:04 от Igors » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #319 : Ноябрь 20, 2018, 15:38 »

31) Дано то же что и в предыдущей задачке: объект и его матрица (QMatrix4x4). Нужно написать простенький драг: юзер может (интерактивно) двигать объект вдоль одной из осей. Напр тыкнул он на синюю ось и тащит, а мы пересчитываем матрицу так чтобы объект "скользил" вдоль этой оси как по рельсу.

Как решать - дело вкуса, я бы разбил на 2 подзадачки:

a) получить нужное смещение (QVector3D), а то с мыши мы имеем только пыксели
b) как-то присобачить это смещение к матрице, ну ясно что просто вызовом translate здесь не отделаться
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #320 : Апрель 18, 2019, 16:09 »

Поехали дальше, потренируемся  в алгебре

32) Даны 2 прямые в пр-ве, каждая задана точкой (p) и направлением (dir), пусть нормированным. Требуется

a) Определить что прямые
   a1) параллельны
   a2) пересекаются
   a3) скрещиваются

b) Найти минимальное расстояние между прямыми

с) Найти точки минимального отрезка (напр A и B) соединяющего эти прямые.

Возможная ностальгия
Цитировать
Ах, вот когда я был студентом, я так эти задачки щелкал! А сейчас... ничего уже не помню! и.т.п.
А помнить ничего и не надо, весь инструментарий есть в любом классе "вектор", напр QVector3D.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #321 : Ноябрь 21, 2020, 12:46 »

Да, с математикой совсем мрачно. Ну ладно, попробуем так

Вчера видел какой-то детектив (глупейший), и там снайпер застрелил жертву через окно. И сыщики поняли что это должен быть снайпер высокого класса, т.к. он стрелял через стеклопакет и должен был это учесть. Ну наверно имеется ввиду что стекло преломляет лучи.

Насколько трудна была задача снайпера? Какую поправку он должен был сделать? Параметры, напр толщина и число стекол придумайте сами, просто чтобы были разумные
Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #322 : Ноябрь 21, 2020, 12:56 »

т.к. он стрелял через стеклопакет и должен был это учесть.
Эта задача корректного решение не имеет. В случае одного выстрела. Причём тут мало учитывания преломления, нужно ещё брать во внимание, что стеклопакет - это несколько стёкол. Пуля, при пробивании пакета, наверняка сместится.
В реальности, если снайпер всё-таки высокого класса и хочет ушатать жертву, то он будет стрелять 2 раза с короткими интервалами. Первая пуля пробъёт стеклопакет, вторая - ушатает жертву.
Записан

Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #323 : Ноябрь 21, 2020, 12:58 »

В реальности, если снайпер всё-таки высокого класса и хочет ушатать жертву, то он будет стрелять 2 раза с короткими интервалами. Первая пуля пробъёт стеклопакет, вторая - ушатает жертву.
Один раз он будет стрелать, когда жертва выйдет на открытое место. Улыбающийся
Не один профи не будет так рисковать, вдруг стекла пуленепробиваемые. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #324 : Ноябрь 21, 2020, 13:57 »

Эта задача корректного решение не имеет. В случае одного выстрела. Причём тут мало ...
Довольно типичная реакция которую я называю "лапки кверху". Мол, это настолько сложно что нечего и пытаться, даже не дергайся. Справедливости ради заметим что основания для этого имеются - увы, обращение к "фундаментальной" обычно ничем хорошим не кончается, научные работники охотно тычут в нос интегралы и дифуры (мутить воду они мастера).

Но для всех задачек в этой теме это не так. А здесь расчет преломлений очень прост, можно даже в уме посчитать, без бумажки. Главное преодолеть барьер "это так сложно" Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #325 : Ноябрь 21, 2020, 14:21 »

Цитировать
Но для всех задачек в этой теме это не так. А здесь расчет преломлений очень прост, можно даже в уме посчитать, без бумажки. Главное преодолеть барьер "это так сложно"  Подмигивающий
Ну дык берите Monte Carlo (за основу), и вперёд и с песней.. Если качественно что-то оценить - неплохой метод.
Да, есть исключения, но они весьма специфические (типа Грассмановские переменные)
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #326 : Ноябрь 21, 2020, 14:32 »

Ну дык берите Monte Carlo (за основу), и вперёд и с песней.. Если качественно что-то оценить - неплохой метод.
Да, есть исключения, но они весьма специфические (типа Грассмановские переменные)
Вот живое подтверждение моих слов выше. Вместо того чтобы ободрить человека (у которого моск и так покалечен "собирать"), Вы напротив, сразу стремитесь его запугать незнакомыми ему вумными словами. Ну какой нафиг здесь Monte Carlo? Какой Грассман? Тут одно арифметическое действие - и все  Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #327 : Ноябрь 21, 2020, 14:47 »

Ой, если человеку нужно, или он в этом вопросе заинтересован - то он в этом разберётся!
Это совершенно нормально!
Я лишь высказываю различные подходы//т. зрения, что тоже нормально!
Представьте себе - так устроен прогресс И жизнь.
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #328 : Ноябрь 21, 2020, 20:04 »

Довольно типичная реакция которую я называю "лапки кверху".
А вы попробуйте решить. Там проблема ведь не в коэффициентах преломления (которые, как раз посчитать не сложно).
Кстати, если уж совсем заморачиваться - простая школьная задача о двух трубах м бассейне не такая уж и простая. Хотя, в идеальных условиях вполне себе решается. В учебнике. Улыбающийся
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #329 : Ноябрь 22, 2020, 13:32 »

Кстати, если уж совсем заморачиваться - простая школьная задача о двух трубах м бассейне не такая уж и простая. Хотя, в идеальных условиях вполне себе решается. В учебнике. Улыбающийся
Да, там красивая заморочка - ведь вода вытекает с разной скоростью под разным давлением

А вы попробуйте решить. Там проблема ведь не в коэффициентах преломления (которые, как раз посчитать не сложно).
Современный человек настолько развращен/растлен обилием информации, что толку от того что я просто "выложу готовое" - абсолютно никакого. Ну конечно он это знал, да и вообще это "элементарно". Вот не так уж давно пытался чего-то рассказывать, а мне типа "достаточно пройти по ссылке, там все гораздо лучше разжевано" Улыбающийся

Поэтому давайте решать вместе. Разумеется вооружимся знаниями, возьмем хотя бы викусю. Формула там есть, причем до боли простая, и ей уже 400 лет, искать какую-то другую - ну не видно смысла. Итак, мы "прошли по ссылке", и, стало быть, решение у нас в кармане? Так какую поправку должен сделать снайпер?

Ой, если человеку нужно, или он в этом вопросе заинтересован - то он в этом разберётся!
Ой ли? А если "точка невозврата" уже давно пройдена (с помощью <T>), и остается только делать вид, что, мол, "не заинтересован"? Улыбающийся
Записан
Страниц: 1 ... 20 21 [22] 23 24   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 22.