Калькулятор уклонов
Чтобы посчитать уклон кровли, крыши, трубопровода, пандуса, лестницы, дороги, реки и т.п. воспользуйтесь нашим очень удобным онлайн калькулятором:
Онлайн калькулятор
Посчитать уклон
Расстояние L =
Превышение h =
Посчитать превышение
Уклон α =
Расстояние L =
Посчитать расстояние
Уклон α =
Превышение h =
Просто введите значения и выберите единицы измерения уклона.
Теория
Как посчитать уклон
Для того чтобы посчитать уклон вам, для начала, необходимо знать расстояние (L) и превышение (h). Далее следуйте формулам:
В процентах:
Уклон в % = h / L ⋅ 100
В промилле:
Уклон в ‰ = h / L ⋅ 1000
В градусах:
Уклон в ° = arctg ( h /L)
Пример
Для примера рассчитаем уклон дороги в процентах: на дистанции в L = 500 м дорога поднимается на h = 30 м:
Уклон дороги = 30/500 ⋅ 100 = 6%
Как посчитать превышение
Чтобы вычислить превышение (h), надо знать расстояние (L) и уклон (в процентах, в промилле или в градусах).
Если уклон в процентах (%):
h = L ⋅ Уклон в % /100
Если уклон в промилле (‰):
h = L ⋅ Уклон в ‰ /1000
Если уклон в градусах (°):
h = L ⋅ tg(α) , где α — уклон в градусах
Пример
Для примера найдём превышение h, если расстояние L= 5м, а угол уклона α=45°:
h = 5 ⋅ tg(45) = 5 ⋅ 1 = 5 м
Как посчитать расстояние
Для того чтобы посчитать расстояние (L) необходимо знать превышение (h) и уклон (в процентах, в промилле или в градусах).
Если уклон в процентах (%):
L = h / Уклон в % ⋅ 100
Если уклон в промилле (‰):
L = h / Уклон в ‰ ⋅ 1000
Если уклон в градусах (°):
L = h / tg(α) , где α — уклон в градусах
Пример
Для примера посчитаем расстояние (L), которое потребуется железной дороге, чтобы подняться на (h =) 6 м при угле подъёма 30‰:
L = 6 / 30 ⋅1000 = 200 м
Как вычислить угол отскока?
Я играл с этим некоторое время, но просто не могу разобраться. Я создал танк, который запускает ракеты, и когда ракеты попадают в стены, я хочу, чтобы они отскакивали, но я хочу, чтобы они отскакивали в правильный угол. В настоящее время у меня нет никаких препятствий, ракеты просто отскакивают, когда они выходят за пределы viewportRectangle , который я создал. Является ли решение, которое я ищу, довольно продвинутым? Есть ли относительно простой способ сделать это? c# xna physics
Поделиться Источник 21 февраля 2009 в 14:11
10 ответов
Вы можете подумать, что, поскольку ваши стены выровнены по координатным осям, имеет смысл писать специальный код случая (для вертикальной стенки, отрицайте x-координату скорости; для горизонтальной стенки, отрицайте y-координату скорости). Однако, как только вы получите игру, хорошо работающую с вертикальными и горизонтальными стенками, вероятно, следующее, что вы подумаете, это: «Что же с стенами с произвольными углами?» Поэтому стоит подумать об общем случае с самого начала. В общем случае, предположим, что ваша ракета имеет скорость v и попадает на стенку с поверхностным нормальным n. Разделите v на компоненты u перпендикулярные к стене и w параллельные ей.
Где: u = (v * n / n * n) n
w = v — u Здесь, v * n является точечным продуктом векторов v и n. См. ссылку для объяснения, как это вычислить. Точечный продукт n * n оценивается в квадрат длины нормального вектора; если вы всегда сохраняете свои нормальные значения в виде единичных векторов, то n * n = 1 и вы можете опустить деление. После отскока, компонент движения, параллельный стене, подвержен воздействию трения f, а компонент, перпендикулярный стене, подвержен воздействию эластичности, которая может быть приведена в виде коэффициента реституции r. Таким образом, скорость после столкновения равна v’ = f w — r u. В идеально эластичном, нетретичном столкновении, v’ = w — u; то есть, движение отражается в нормальном состоянии в точке столкновения, как показано на схеме, приведенной в ответе Билла. Этот подход работает точно так же в трех измерениях. (Очевидно, это очень упрощенное понятие отскока; оно не учитывает угловой динамики или деформации. Но для многих видов видео игр подобное упрощение идеально подходит.)
Поделиться 21 февраля 2009 в 15:17
- Если ракета попадает в верхнюю или нижнюю границу, то обратный знак yVelocity .
- Если ракета попадает в левую или правую границу, то обратный знак xVelocity .
Это сохранит движение в противоположной оси.
С учетом образа из ответа КрисФи, предположим, что ракета начинает движение в позиции I.
С xVelocity и yVelocity положительными (в 2D графике справа и вниз обычно положительны), ракета будет двигаться в указанном направлении. Давайте просто присвоим значения
xVelocity = 3 yVelocity = 4
Когда ракета попадает на стену в позиции C, ее xVelocity не должен меняться, но ее yVelocity должен быть обращен к -4 так, чтобы она двигалась в направлении назад вверх, но продолжала двигаться вправо.
Преимущество этого метода заключается в том, что вам нужно отслеживать только xPosition , yPosition , xVelocity и yVelocity ракеты. Используя только эти четыре компонента и скорость обновления вашей игры, ракета всегда будет перерисовываться в правильной позиции. Как только вы столкнетесь с более сложными препятствиями, которые не находятся в прямых углах или перемещаются, будет намного проще работать со скоростями X и Y, чем с углами.
Поделиться 21 февраля 2009 в 14:25
У меня была эта проблема, единственный способ, который я нашел, это разделить оси столкновения!
x += velocity * Math.cos(angle * Math.PI /180); y += velocity * Math.sin(angle * Math.PI /180); if (x < 0 || x >canvas.width) < angle = 180 - angle; >else if (y < 0 ||y >canvas.height)
Надеюсь, это поможет вам!
Поделиться 18 июня 2015 в 01:43
Для идеальных частиц (и света) угол отражения равен углу частоты, как показано на этой диаграмме (из commons.wikimedia.org).
Страница Википедии по отражению довольно хорошо объясняет, как это работает.
Это немного сложнее, если принять во внимание эластичность и материалы объекта и препятствия, но это, вероятно, достаточно хорошо для большинства приложений.
Поделиться 21 февраля 2009 в 14:18
В дополнение к конкретному вопросу о физике, который вы задаете, я бы рекомендовал книгу «Начало математики и физики для игровых программистов» от Wendy Stahler. Я нашел ее довольно полезной для моих проектов в области программирования игр/физики.
Код, который сопровождает эту книгу, — это C++, но если вы знаете C#, то будет довольно легко сделать преобразование.
У вас есть хороший!
Поделиться 21 февраля 2009 в 15:51
180-а не будет работать во всех случаях, если вы просто не работаете над отскоком на верхней поверхности, когда X увеличивается.
Одним из направлений вверх являются форумы XNA или выборка кода XNA. Это C# и это для создания игр. Я не утверждаю, что вы хотите создавать свои игры в XNA, но это отличный инструмент и он бесплатный.
Поделиться 21 февраля 2009 в 14:27
где:
a => результирующий угол
w => угол стены или пола или потолка
b => угол шара
Это то, что я придумал после попытки найти простейшую формулу для вычисления только результирующего угла шарика, отскакивающего от стен, потолка и пола. Результат может выйти за пределы +360 или -360 градусов, но они все еще являются эквивалентным углу.
Например, если угол потолка 270 градусов, а угол шара 30 градусов, результирующий угол 510 градусов, что эквивалентно +150 градусам или -210 градусам. Если вы используете 90 градусов для потолка вместо 270 градусов, результат все еще 150 градусов.
Поделиться 19 октября 2020 в 04:37
Вообще не сложный — псевдокод:
angleObjectHitWall = a; bounceAngle = 180-a;
Конечно, это очень простое вычисление и совершенно не имеет значения, как только вы начнете учитывать такие факторы, как материал, гравитация, непрямые стены и т.д.
Поделиться 21 февраля 2009 в 14:14
Это действительно вопрос физики, поэтому если вы не являетесь физиком (и так как вы задаете этот вопрос, я собираюсь считать, что это не так), для того, чтобы правильно это сделать, потребуется много чтения и мозговой штурмовики.
Я предлагаю прочитать эту запись на Википедии, чтобы получить базовую идею о глубине вашего вопроса.
Если вы хотите сделать его только «выглядеть правдоподобным», то я бы не слишком беспокоился об этом и использовал ответ Bill the Lizard, однако если вы хотите сделать это правильно, у вас будет довольно приключение. Не позволяйте этому напугать вас! Удачи!
Поделиться 21 февраля 2009 в 14:45
if(!Collide(Missle, Mainchar))
Это работает и просто, удачи.
Расчет уклонов — онлайн-калькулятор
Расчет уклонов через превышение и длину при помощи онлайн-калькулятора — рассчитайте сколько угол наклона крыши, лестницы, трубопровода и др.
Все калькуляторы
Также можно рассчитать
- Расчёт
- Сохранить
- Справка
- Партнерские скидки
- Виджет на сайт
- Комментарии
Калькулятор загружается.
Выберите способ сохранения
Скачать PDF
Скачать расчёт с выбранными параметрами в формате PDF — чертежи + данные.
Поделиться
Поделиться ссылкой на расчёт в Facebook, ВКонтакте, Google+ и т.д.
Сканировать QR-код
Получить ссылку на расчет с параметрами через сканирование QR-кода
Разместите калькулятор у себя на сайте БЕСПЛАТНО
Калькулятор уклонов онлайн
Уклон (наклон) — это отношение проекции рассматриваемой линии на вертикальной плоскости (превышение) к проекции этой же линии горизонтальную поверхность (длина), или иначе, отношение вертикального превышения к горизонтальному проложению, или иначе, отношение разности высот двух точек к расстоянию между ними. Нахождение наклона является обязательным при проведении геодезических, дорожных, строительно-монтажных и ряда других работ. Уклон измеряется в градусах (°), сотых/процентах (%) и тысячных/промилле (‰). В повседневной жизни наиболее часто с уклоном можно столкнуться на предупреждающих дорожных знаках, например, на знаках 1.13 «Крутой спуск» и 1.14 «Крутой подъем». Значение 10% обозначает, что каждые 100 метров дорога будет опускаться/подниматься на 10 метров.
При помощи калькулятора уклонов можно рассчитать величину уклона через превышение и расстояние, определить превышение между двумя точками, выполнить расчет расстояния наклонной поверхности. Инструмент помогает определить угол наклона кровли, лестницы, пандуса, трубопровода, канализации и любых линейных объектов. Длину поверхностей следует указывать в одинаковых единицах измерения (мм, см, м. ), размерность уклона обозначается одним из трех предложенных способов. Обращаем ваше внимание, что зависимость при переводе процентов/промилле в градусы и обратно не прямая.
Уклон в % = h / L × 100
Уклон в ‰ = h / L × 1000
Уклон в ° = arctg (h / L)
- h — превышение;
- L — расстояние, длина.
Как рассчитать угол наклона (уклон)?
- Выберите параметр, который требуется найти.
- Укажите в каких единицах измерения указывается уклон.
- Введите превышение/расстояние/уклон, в зависимости от типа расчета.
- Нажмите кнопку «Рассчитать»
Смежные нормативные документы:
- СП 82.13330.2016 «Благоустройство территорий»
- СП 17.13330.2017 «Кровли»
- СП 32.13330.2018 «Канализация»
- СП 34.13330.2012 «Автомобильные дороги»
- СП 122.13330.2012 «Тоннели железнодорожные и автодорожные»
Как рассчитать угол отскока
Нужно реализовать метод для расчета угла отскока шарика от стены. Считайте, что угол падения равен углу отражения, то есть можно пренебречь всеми физическими эффектами, связанными с кручением шаров, трением шара об стенку и т.п.
Скажите пожалуйста с помощью какой формулы это высчитать?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Интересует расчет угла отскока шарика от горизонтальных, вертикальных и произвольных стен
интересует расчет угла отскока шарика от горизонтальных, вертикальных и произвольных стен, угол.
Определить угол отскока шарика от преграды
Здравствуйте, имеется задача моделирования движения шарика в прямоугольнике с учетом силы тяжести.
Вычисление угла отскока теннисного мяча
Помогите, пожалуйста, решить задачу по физике. Теннисный мяч (масса — 58,5 г; диаметр — 6,6 см).
Формула для расчёта угасания (затухания или ослабления) радиосигнала через стены, двери, окна.
Здравствуйте. Может кто-нибудь знает математическую формулу, отражающую зависимость угасания.
201 / 119 / 85
Регистрация: 15.12.2016
Сообщений: 235
Если пренебрегая всякими физическими эффектами, то формула простая:
201 / 119 / 85
Регистрация: 15.12.2016
Сообщений: 235
Недеюсь, это то, что нужно
Регистрация: 08.07.2017
Сообщений: 11
похоже на правду, спасибо
Регистрация: 26.04.2016
Сообщений: 42
Вдруг кому понадобится
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
///Угол пунктирной линии от OX в радианах /// Угол падения на стену в радианах /// Угол поворота стены в радианах public static double BounceWall(double directionRadians, double wallInclinationRadians) double direction = (directionRadians * 180) / Math.PI; double wallInclination = (wallInclinationRadians * 180) / Math.PI; double wallAngle = 90+wallInclination; double ballAngle = 180+direction; double diff = wallAngle - ballAngle; double angle = ballAngle + 2 * diff + 360 * 5; angle %= 360; if (angle > 180) angle -= 360; > return (angle*Math.PI)/180; >
программирование. c# . помогите кто знает)
Реализуйте метод для расчета угла отскока шарика от стены. Считайте, что угол падения равен углу отражения, то есть можно пренебречь всеми физическими эффектами, связанными с кручением шаров, трением шара об стенку и т. п.
Вот код:
namespace Billiards
public static class BilliardsTask
public static double BounceWall(double directionRadians, double wallInclinationRadians)
//TODO
return 0.0;
>
>
>
Лучший ответ
// Вот как написано в учебнике http://vedy.by/Vedy/Home/PartitionView/17259
// но для программирование это не подойдет
// Будем считать, что угол отражения равен 180 градусов — угол удара (уо = 180 — уу)
// А так как у нас стена поворачивается на угол поворота (уп), сперва необходимо вычесть
// угол поворота из угла удара, затем прибавить угол поворота к результату
// уо = 180 — (уу — уп) + уп = 180 — уу + уп + уп = 180 — уу + 2 * уп
// здесь пример перевода градусов в радианы и обратно http://www.flasher.ru/forum/showthread.php?t=66057
using System;
namespace Billiards
public static class BilliardsTask
static double radToDeg (double rad)// радианы в градусы
return (rad * 180) / Math.PI;
>
static double degToRad(double deg)// градусы в радианы
return (Math.PI * deg) / 180;
>
public static double BounceWall(double directionRadians, double wallInclinationRadians)
//TODO 180 — уу + 2 * уп
return degToRad(180.0 — radToDeg(directionRadians) + 2.0 * radToDeg(wallInclinationRadians));
>
static void Main(string[] args)
Console.WriteLine(radToDeg(BounceWall(degToRad(45.0), degToRad(0.0))));
Console.WriteLine(radToDeg(BounceWall(degToRad(45.0), degToRad(90.0))));
Console.ReadLine();
>
>
>
Unity как рассчитать угол отскока мяча от стены?
делаю простую игру 2D понг(думаю все знают как она выглядит), нужно рассчитать угол отскока мяча, когда он врезается в стену(или ракетку), кто-нибудь знает формулу?
- Вопрос задан более года назад
- 747 просмотров
Комментировать
Решения вопроса 1
если относительное положение стенок паралельно осям координат (т.е. либо препятствие вертикальное либо горизонтальное) то при ударе о горизонтальную стенку, скорость по Y меняется на противоположную (меняется знак) а по X не меняется, ну а при горизонтальной стенке наоборот, по Y не меняется а по X меняется знак на противоположный (умножить на -1)
если препятствия произвольный угол имеют то. формулы можешь посмотреть тут
Отскок от стен
Это 3-й этап из 10 Gamedev Canvas tutorial (en-US) . Вы можете найти исходный код как он должен выглядеть после завершения этого урока в Gamedev-Canvas-workshop/lesson3.html.
Приятно наблюдать за нашим мяч, но он быстро исчезает с экрана, удовольствие длится недолго! Чтобы продлить, мы реализуем некоторое очень простое обнаружение столкновений (о которых будет рассказано далее (en-US) более подробно), чтобы сделать отскок мяча от четырёх краёв холста.
Простое обнаружение столкновений
Для обнаружения столкновения мы будем проверять — касается ли мяч стены, и если это так, изменим направление его движения в нужную сторону.
Чтобы сделать расчёты проще, давайте определим переменную ballRadius , что задаст радиус нарисованного круга и будет использоваться для вычислений. Добавьте это в ваш код, где-то ниже существующих переменных:
var ballRadius = 10;
Теперь обновите строку, которая рисует шарик, внутри функции drawBall() :
.arc(x, y, ballRadius, 0, Math.PI * 2);
Отскакивание от верхней и нижней стены
Есть четыре стены, от которых мяч будет отскакивать — давайте сначала сосредоточимся на верхней. При каждом кадре нужно проверять, коснулся ли мяч верхней границы — если да, то будет обратное движение мяча, поэтому он начнёт двигаться в противоположном направлении и остановится в пределах видимой границы. Вспомнив, что система координат начинается с левого верхнего угла, мы можем придумать что-то вроде этого:
if (y + dy 0) dy = -dy; >
Если значение y положения шара ниже нуля, изменить направление движения по оси y установив его с тем же значением но с другим знаком. Если мяч движется вверх со скоростью 2 пикселя на кадр, теперь он будет двигаться «вверх» со скоростью -2 пикселя, что на самом деле означает движение вниз со скоростью 2 пикселя.
Приведённый выше код описывает отражение только от верхней границы, так что теперь давайте думать о нижнем крае:
if (y + dy > canvas.height) dy = -dy; >
Если положение мяча по оси y больше, чем высота полотна (помните, что мы рассчитываем значения y от верхнего левого, чтобы верхний край начинался с 0, а нижний край — 480 пикселей, высота нашего ), затем после отскока от нижней кромки обратное движение по оси y .
Мы можем объединить эти две конструкции в одну, чтобы уменьшить код:
if (y + dy > canvas.height || y + dy 0) dy = -dy; >
Если одно из двух утверждений верно, тогда направление мяча меняется.
Отскоки влево и вправо
Мы сделали отражение от верхней и нижней границ, нельзя забывать и про боковины. Задача очень похожа на самом деле, все, что вам нужно сделать, это повторить конструкцию заменив Y на X:
if (x + dx > canvas.width || x + dx 0) dx = -dx; > if (y + dy > canvas.height || y + dy 0) dy = -dy; >
На этом этапе вы должны вставить этот блок кода в функцию Draw (), непосредственно перед закрывающей фигурной скобкой.
Мяч продолжает исчезать в стене!
Проверьте сейчас свой код, и вы будете впечатлёны — теперь мяч, отскакивает от всех четырёх краёв нашего ! Однако есть некоторая проблема — когда мяч попадает в любую стену, он немного заходит за границы перед отскоком:
Это происходит потому, что мы проверяем касание стены и центра мяча, а не его края. Мяч должен отскакивать сразу после касания, а не когда он уже на половину в стене, так что давайте корректировать наш код включив в него небольшое выражение. Обновите последний код добавив к нему:
if (x + dx > canvas.width - ballRadius || x + dx ballRadius) dx = -dx; > if (y + dy > canvas.height - ballRadius || y + dy ballRadius) dy = -dy; >
Когда расстояние между центром шара и краем стены равно радиусу шарика, шарик изменит направление движения. Вычитая радиус при отскоке от одной стены и добавляя при отскоке от другой, мы получили простое обнаружение столкновений. Шарик отскакивает от стен как надо.
Сравните ваш код
Давайте ещё раз проверим готовый код для этой части, и код, что у вас есть, и играйте:
Примечание: попробуйте изменить цвет шарика на случайный цвет каждый раз, когда он попадает в стену.
Следующий шаг
Теперь мы добрались до стадии, где наш мяч одновременно двигается и остаётся на игровом поле. В четвёртой главе мы рассмотрим реализацию управления — см. Paddle and keyboard controls (en-US) .
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 3 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.