Блог страдающего Лиса
Lorem ipsum hello dolor sit world amet
20 дек 2024 Пт
Три кота на мясо, да еще под корень
Суть в чем. Есть уравнение Гуkа: Fs = -kx, которое гласит, что чем сильнее ты натягиваешь сову на глоб... то есть, чем дальше оттягиваешь резину (хватит тянуть резину, давай уже!), тем больше сила, с которой пытается эта сила оттянуться по полной. Ну, до разумного предела, конечно же.
Итак, вот у нас есть некая сила, которая оттягивает. По уравнению Ньютона, F=ma, как известно, так что уравнение можно переписать так: ma = -kx. Это значит, что a = -kx/m. То есть, мы знаем, с каким ускорением пытается оттянуть обратно пружина.
Что такое ускорение? Это , и если взять за отсчет t=1, то в таком случае будет , то есть, .
Находясь на позиции x, и имея уже определенную скорость V, к этой скорости добавляется еще V + a, или V - kx/m, если так. То есть, по этому уравнению, происходит замедление скорости в обратную сторону. Чтобы рассчитать, где в следующую секунду будет маятник, надо лишь добавить x' = x + V. Вот и всё!
И получается гармоническое колебание, причем здесь не учтено еще трение воздуха, например, и трение самой пружины, так что колебание получится просто в виде не затухающей синусоиды.
Итак, вот у нас есть некая сила, которая оттягивает. По уравнению Ньютона, F=ma, как известно, так что уравнение можно переписать так: ma = -kx. Это значит, что a = -kx/m. То есть, мы знаем, с каким ускорением пытается оттянуть обратно пружина.
Что такое ускорение? Это , и если взять за отсчет t=1, то в таком случае будет , то есть, .
Находясь на позиции x, и имея уже определенную скорость V, к этой скорости добавляется еще V + a, или V - kx/m, если так. То есть, по этому уравнению, происходит замедление скорости в обратную сторону. Чтобы рассчитать, где в следующую секунду будет маятник, надо лишь добавить x' = x + V. Вот и всё!
И получается гармоническое колебание, причем здесь не учтено еще трение воздуха, например, и трение самой пружины, так что колебание получится просто в виде не затухающей синусоиды.
20 дек 2024 Пт
Технологии графики 3D: Отбрасывание теней
Вчера я задумался насчет 3Д графики и понял, что если не сделать тени, то в таком случае графика будет слишком неинтересной и пресной. Но как сделать тени? Этот вопрос мучает меня до сих пор в очень огромных масштабах.
В графических программах основным строительным блоком является треугольник, и он должен отбрасывать тень на другие треугольники, если они там есть. Есть множество различных способов высчитывать тень, но я хочу рассмотреть пока что одну из самых для меня доступных для понимания.
Допустим, что есть только 3 объекта на сцене: источник света L, треугольник A (который отбрасывает тень) и второй треугольник B (на который отбрасывается тень). Сама по себе тень образует некий треугольный конус, в который может полностью, частично или вообще не попасть треугольник, на который эта тень отбрасывается.

Задача в том, чтобы проверить, попадает ли тень на второй треугольник. Для этого надо провести из точки L через каждую точку треугольника A прямую и проверить, где именно на плоскости треугольника B попадет эта прямая. Если треугольник лежит параллельно этой прямой, то это значит что эта прямая, собственно, нигде треугольник не пересечет.
По итогу получится что-то вроде проекции на плоскость, где лежит треугольник B. Это значит, что от трехмерных координат мы переходим к двухмерным, что дает возможность определить область попадания тени на треугольник B.

Вот тут конечно, начинается самое интересное. Как видно, проекция тени A1'A2'A3' пересекла треугольник B в двух местах, раздробив изначально простые треугольнки на большое количество составляющих.
Так что я думаю, что этот подход удобен только в качестве учебного пособия, не более того. С другой стороны, этот метод является "запеканием" теней и в каком-то смысле, удобен для того чтобы сгенерировать геометрию изначально до того, как ее отрисовывать, и во время рисования очередного кадра больше не придется обсчитывать тени заново.
Единственное что может обсчитываться, так это интенсивности света, но это уже сделать гораздо проще.
Проблема может возникнуть именно с динамическими тенями, поскольку в этом случае придется считать все заново каждый раз для сцены.
В графических программах основным строительным блоком является треугольник, и он должен отбрасывать тень на другие треугольники, если они там есть. Есть множество различных способов высчитывать тень, но я хочу рассмотреть пока что одну из самых для меня доступных для понимания.
Допустим, что есть только 3 объекта на сцене: источник света L, треугольник A (который отбрасывает тень) и второй треугольник B (на который отбрасывается тень). Сама по себе тень образует некий треугольный конус, в который может полностью, частично или вообще не попасть треугольник, на который эта тень отбрасывается.

Задача в том, чтобы проверить, попадает ли тень на второй треугольник. Для этого надо провести из точки L через каждую точку треугольника A прямую и проверить, где именно на плоскости треугольника B попадет эта прямая. Если треугольник лежит параллельно этой прямой, то это значит что эта прямая, собственно, нигде треугольник не пересечет.
По итогу получится что-то вроде проекции на плоскость, где лежит треугольник B. Это значит, что от трехмерных координат мы переходим к двухмерным, что дает возможность определить область попадания тени на треугольник B.

Вот тут конечно, начинается самое интересное. Как видно, проекция тени A1'A2'A3' пересекла треугольник B в двух местах, раздробив изначально простые треугольнки на большое количество составляющих.
- Раздробилась сама проекция тени, образовав дочерние теневые треугольники 1,2 и 3
- А также раздробился исходный треугольник, разделившись на две группы — 4 и 5 (там где легла тень) и 6,7,8 там где тени нет
Так что я думаю, что этот подход удобен только в качестве учебного пособия, не более того. С другой стороны, этот метод является "запеканием" теней и в каком-то смысле, удобен для того чтобы сгенерировать геометрию изначально до того, как ее отрисовывать, и во время рисования очередного кадра больше не придется обсчитывать тени заново.
Единственное что может обсчитываться, так это интенсивности света, но это уже сделать гораздо проще.
Проблема может возникнуть именно с динамическими тенями, поскольку в этом случае придется считать все заново каждый раз для сцены.
<< Ранние записи |
Поздние записи >>