powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Четверговый кубик
25 сообщений из 51, страница 1 из 3
Четверговый кубик
    #39265391
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет кодеры.

Кубики заданы в левой системе координат (x,y,z) как точка центра и размер кубика.

Код: plaintext
1.
2.
3.
4.
5.
struct cube{
   double x,y,z;
   double size;
   // int attributesMask; // strength, matherial, orientation e.t.c.
}



Задан луч. С точкой начала (x1,y1,z1) и вектором направления (xv,yv,zv). Луч - бесконечен.
Но как-только он попадает в кубик - расчеты заканчиваются и дальнейшее продолжение
луча нам - неинтересно.

Код: plaintext
1.
2.
3.
4.
struct ray{
   double x1,y1,z1;
   double x1,yv,zv;
}



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

Необходим расчет пересечения луча и кубика.

Welcome.

P.S. Хардкод и асм - приветствуется.
P.P.S. Моар хардкода...
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265399
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, постыдись, такие задания студентам на лабах дают.
Просто нужно не полениться, взять ручку с бумажкой и расписать систему неравенств/уравнений, ничего сложного.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265411
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это для затравки. Чуть позже я опишу блоки кубиков.

P.S. Я пристыдился на 0.01 %
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265621
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну блин. Самоеж главное не сказал. Грани кубика ортогональны системе координат.
Тоесть кубик (0,0,0) размером 1.0 будет лежать в начале координат и иметь вершины
(0.5,0.5,0.5), (-0.5,0.5,0.5)..... (-0.5,-0.5,-0.5) соответственно.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265665
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, это облегчает твою задачу.
Подсказка: чтобы луч попал в кубик необходимо и достаточно чтобы хотя бы одна точка на луче оказалась внутри кубика. У луча всего одна степень свободы, поэтому достаточно одной переменной (любой координаты), остальные выражаются через нее. Таким образом получаем систему из 3-х двойных неравенств (положение между гранями куба) и одного простого (направление луча).
Продолжать?
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265673
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжай :)
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265676
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265684
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
далее находится пересечение интервалов всех неравенств. Оно будет либо пустым (луч летит мимо), либо односвязным интервалом (луч попадает), причем границы интервала будут соответствовать точкам входа/выхода. Где какая - надеюсь разберешься.
Вроде все, дальше нужно учебник математики брать за 7 класс.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265689
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OMG! Да не будьте такими сердитыми. Кубик-то - четверговый. Это раз.

Второе - где ваш хардкод и ассЭмблер? Это два.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265696
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хардкор на работе. Завтра "прототип" сдавать инвестору, но одной из требований ивестора, что бы прототип работал в режиме 24x7 )))

Ни ТЗ, ни дизайна, ни нормального тестирования/мониторинга т.к. "прототип", но 24x7 )))
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265698
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно. Нелетает кубик. Попрошу дневального закрыть топик.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265709
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevХардкор на работе.
+1
mayton, дело не в кубиках, просто неправильный четверг выбрал: последний день месяца/квартала/полугодия - этож дедлайн у многих, а тут еще сезон отпусков в разгаре - за себя трудись и за отдыхающего
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265717
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну извини. У меня тот долгий джоб компилируется....
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265832
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevХардкор на работе. Завтра "прототип" сдавать инвестору, но одной из требований ивестора, что бы прототип работал в режиме 24x7 )))

Ни ТЗ, ни дизайна, ни нормального тестирования/мониторинга т.к. "прототип", но 24x7 )))

А что прототип не проработает неделю без рестарта ?

:)
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265852
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kА что прототип не проработает неделю без рестарта ?
Он бы два дня проработал (((

1) Он с I-net через tor данные тянет, tor и источник имеет тенденцию периодически отваливаться.
2) тянет данные в over 150 потоков на один исходный запрос и примерно в таком же кол-ве и считает ))) секунд по 30-60

Т.ч. повесить - раз плюнуть. Пару раз на релоад нажать и на мой взгляд под виснуть должно надолго и качественно )))

нормальных исходных данных нет (очень много бабла стоят), приходится из Инета тянуть.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39265853
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и хостится все на паре tiny машинок из Amazon EC2 (1 GB RAM) )))
...
Рейтинг: 0 / 0
Четверговый кубик
    #39266079
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борисmayton, постыдись, такие задания студентам на лабах дают.
Просто нужно не полениться, взять ручку с бумажкой и расписать систему неравенств/уравнений, ничего сложного.

может быть тут и нет ничего сложного, но вашего решения я не увидел.
Вопрос был не о том, как определить встретит ли луч кубик, а о том, как за минимальную асимптотику найти такой кубик, если он конечно существует
...
Рейтинг: 0 / 0
Четверговый кубик
    #39266091
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисТаким образом получаем систему из 3-х двойных неравенств (положение между гранями куба) и одного простого (направление луча).Расстояния от центров кубов до прямой(луча) не быстрее будет подсчитать? А пересёкшихся(по сферам радиусом a*sqrt(3)), начиная с ближайших, уже допроверить "по-честному".
...
Рейтинг: 0 / 0
Четверговый кубик
    #39266102
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirСоколинский БорисТаким образом получаем систему из 3-х двойных неравенств (положение между гранями куба) и одного простого (направление луча).Расстояния от центров кубов до прямой(луча) не быстрее будет подсчитать? А пересёкшихся(по сферам радиусом a*sqrt(3)), начиная с ближайших, уже допроверить "по-честному".А зачем?
Вся "честная" проверка займет максимум 20 строк кода без циклов.
Теоретически нужно еще отдельно вырожденный случай проверить, когда луч направлен перпендикулярно оси X, но формулировка задания такое исключает.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39266103
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем случае луч (выстрел) пересекает 6 плоскостей (Plane[0..5]) которые образованы гранями куба.
Почему удобно начинасть с плоскостей? Ну... я так изначально задал условия. Грани всегда
будут компланарны к плоскостям XOY, XOZ,YOZ.

Из этих 6 плоскостей нас будут интересовать только от 1 до 3х которые обращены лицевой гранью
к источнику луча (x1,y1,z1). Решаем 3 уравнения пересечения луча с плоскостью Plane[i].

Из трех результирующих точек только одна будет лежать на поверхности куба.

Над последней проверкой я еще думаю. Как ее сделать с наименьшим числом операций.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39266242
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Некоторые краевые случаи. Когда луч смотрит в противоположное от куба направление - решения нет.

Когда луч - параллелен (компланарен) к плоскости ?

Я щас не могу навскидку вспомнить форумулу но три произвольных вектора компланарны, когда
их смешанное произведение равно нулю. (В данной задаче нам 0 не нужен мы можем брать очень
малую величину 0.00000001 в double и считать это нулем).

При чем здесь 3 вектора? Плоскость можно задать (емнип) 3 формами уравнений. Каноническое.
Вида Ax + By + Cz + D = 0 либо различные его варианты с нормированием коэффициентов.

Наиболее удобная на мой взгляд форма задания плоскости для нашей задачи - это 3 точки
или 2 вектора (порядок важен). Это всё одно и то-же и от одной формулы к другой можно
переходить. Единственное - договориться о порядке лицевой и изнаночной граней.

Для нашего случая (плоскости всегда компланарны к ZOX, ZOY .....) формула упрощается т.к.
из нее уходит 1 коэффициент.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39266345
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
чтобы исключить вырожденные случаи можно параметрическое задание луча использовать: x=x0+Vx*t; y=y0+Vy*t, z=z0+Vz*t, t>0.
Тогда все неравенства будут по виду одинаковыми и одинаково решаться: если соответствующий коэффициент равен нулю, проверяем попадание x0 в диапазон, если нет - находим t1/t2 на границах проверяем на положительность.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39266350
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если честно я не понял зачем нужно вводить параметр t.
...
Рейтинг: 0 / 0
Четверговый кубик
    #39266355
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сути мы ищем функцию которая вернет нам точку попадания в блок кирпичиков. Либо null если мы промахнулись.

Код: plaintext
1.
2.
3.
4.
5.
6.
point3d intersectRay(cube *pCube, ray *pRay){
     ......
     return point3d(....);
     .....
     return null;
}
...
Рейтинг: 0 / 0
Четверговый кубик
    #39266358
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
так будет работать всегда, даже если коэфициент при x нулевой.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Четверговый кубик
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]