Декларация ЕНВД за год в действительности представляет собой документ, создаваемый за другой период. О том, почему так происходит и каковы особенности оформления отчета, формируемого по завершении 2020 года, читайте в нашем материале.
Подробнее ...
Если рандомно ответить на вопрос теста, какой шанс угадать ответ?
Какова вероятность выиграть в лотерею? Исследователи подсчитали: один на восемь миллионов. «Или выиграю, или проиграю», — решаю я, покупая лотерейный билет. Так понятие вероятности преследует нас в обычной жизни. И не только в лотерее. Давайте разберемся подробнее.Подробнее ...
формула вычисления длины спирали? известен шаг витков, диаметр и длина участка подскажите. оч надо
Ученик
(234),
закрыт
10 лет назад
rafael ahmetov Высший разум
(122431)
11 лет назад
Длина одного витка вычисляется элементарно по теореме Пифагора: L^2=(Пи*d)^2 +t^2, где L – длина 1 витка, d – диаметр витка, t – шаг витка. Количество витков n=l/t, где n – количество витков, l – длина намотанного участка. Общая длина спирали получается L(общ.) = (l/t)*sqrt((Пи*d)^2 +t^2).Подробнее ...
Нахождение точки пересечения двух прямых (и отрезков)
Время на прочтение
3 мин
Количество просмотров 41K
Введение
Довольно часто при разработке игр возникает необходимость находить точку пересечения прямых, отрезков, лучей и т.д. О том, как реализовать это максимально простым способом, в этой статье.
Популярные способы и их критика
Возможно, многие вспомнят способ из школьной алгебры — составить уравнения двух прямых, приравнять их правые части, найти x, и подставить его в уравнение прямой, чтобы найти y (Подробнее здесь).
Однако данный способ становится достаточно громоздким при написании кода (возможно поэтому вы сейчас читаете эту статью), к тому же, он не является универсальным: если одна из прямых параллельна оси Y, мы получим ошибку деления на ноль при вычислении углового коэффициента, и нам придётся прописать код на этот случай; если две прямые перпендикулярны осям, требуется повозиться с обработкой и этого случая. Такой код становится длинным и некрасивым.
В поисках более элегантного решения данной проблемы я наткнулся на весьма интересные способы, основанные на векторном умножении ( habr.com/ru/post/267037 ) и ray castinging’е ( ru.wikipedia.org/wiki/Ray_casting#Концепция ). Но на мой взгляд, они неоправданно сложные в вычислительном плане. Поэтому представляю вашему вниманию (и критике) мой способ.
Мой способ
Задача
Даны координаты двух отрезков. Нужно узнать, пересекаются ли отрезки, и если да, в какой точке. Для этой цели напишем функцию.
Решение
Условные обозначения для исключения недопониманий: a — вектор a, a(y) — проекция вектора a на ось Y, a{x1,y1} — вектор a, заданный координатами x1,y1.
Представим наши отрезки в виде двух векторов: a{x2-x1; y2-y1} и b{x3-x4; y3-y4}. Обратите, внимание, что вектор b имеет противоположное от ожидаемого направление. Введём вектор c{x3-x1; y3-y1}. Заметим, что a*k+b*n=c, где k,n — некоторые коэффициенты. Таким образом, получаем систему уравнений:
a(x)*k+b(x)*n=c(x)
a(y)*k+b(y)*n=c(y)
Наша задача сводится к нахождению этих коэффициентов (правда сказать, достаточно найти лишь один из них).
Предлагаю домножить обе части нижнего уравнения на q= -a(x)/a(y). Так после сложения двух уравнений, мы сразу избавимся от k. Нахождение n сведётся к решению обыкновенного линейного уравнения. Важно обратить внимание, что у n может не быть решения.
Внимательный читатель заметит, что при a(y)=0, мы получим ошибку. Пропишем ветвление на этапе нахождения a(y). Этот случай ещё проще, ведь мы сразу получаем уравнение с одной неизвестной.
Рекомендую попробовать вывести n самостоятельно, так будет понятнее, что откуда берётся в коде ниже.
Зная n, можно найти точку пересечения, для этого мы отнимем от координаты точки (x3,y3) вектор b*n
Падающий мяч при отсутствии сопротивления воздуха ускоряется, то есть движется все быстрее и быстрее.
Ускоре́ние (обычно обозначается латинскими буквами a (от лат. acceleratio) или w) — физическая величина, определяющая быстроту изменения скорости тела, то есть первая производная от скорости по времени. Ускорение является векторной величиной, показывающей, на сколько изменяется вектор скорости тела при его движении за единицу времени:
Подробнее ...
Силу натяжения определяют как равнодействующую сил $(bar{R})$, приложенных к нити, равную ей по модулю,
но противоположно направленную. Устоявшегося символа (буквы), обозначающего силу натяжения нет. Ее
обозначают и просто $bar{F}$ и
$bar{T}$, и
$bar{N}$ . Математически определение для силы натяжения нити можно записать как:Подробнее ...
1. Как победить и вызвать первого босса Эйктюра (Eikthyr) — где найти «трофей: олень»
2. Как победить и вызвать второго босса Древнего (Elder) — где найти древнее семя
3. Как победить и вызвать третьего босса Массу костей (Bonemass) — где найти иссохшие кости
4. Как победить и вызвать четвёртого босса Моудера (Moder)
5. Как победить и вызвать пятого босса Яглута (Yagluth)
6. Как найти и победить шестого босса Королеву (The Queen)
Valheim — экшен с элементами выживания. Главный герой исследует мир, занимается строительством, крафтом экипировки и сражается с различными существами. Самые опасные из них — это боссы. Разберёмся, как победить Эйктюра, Древнего, Массу костей, Моудера, Яглута и Королеву.Подробнее ...
Множество предпринимателей считают грузоперевозки на «Газели» весьма выгодным бизнесом. Но его правильная организация требует немалого вложения физических и моральных сил.
Транспортировка продукции на «Газели» является достаточно быстро развивающейся сферой, поэтому ее участникам приходится постоянно «держать руку на пульсе». Предприниматель, занимающийся доставкой грузов, должен владеть всей необходимой информацией.Подробнее ...