ФлеймФорумПрограммирование

как рассчитать вес, чтобы балка упала ?

Страницы: 1 2 Следующая »
#0
(Правка: 19:26) 19:22, 6 ноя 2025

Есть балка на опоре(в центре красная точка). Если на балке никого нет, она стоит ровно.
Но если персонаж(на рисунке это Х зеленая) стал на край балки, надо её правый конец опустить.
kachh | как рассчитать вес, чтобы балка упала ?
Как просчитывать силу равновесия и когда на какой-то край есть давление ?
Как я понимаю можно найти вектор между центром балки и позицией персонажа.
И если разница больше какой-то велечины, то герой находится на краю балки.
Значит к F1 либо к F2 надо прибавить массу персонажа.
Если у балки F1 не равен F2, то начать вращать балку в нужную сторону.

#1
20:14, 6 ноя 2025

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

#2
(Правка: 20:27) 20:22, 6 ноя 2025

ronniko
Просто сделай полноценный физический движок, а не вот эти полумеры.
А как у тебя тут нарисовано, то нужно считать и сравнивать моменты F*l. И из этого момента и момента инерции посчитать ускорение. Ещё нужно учесть момент от силы трения на оси/опоре балки, чтобы она не крутилась от каждой пушинки.

#3
(Правка: 20:48) 20:27, 6 ноя 2025

krkd

Просто сделай полноценный физический движок

Так же просто, как попасть монеткой с 20 этажа в стакан на земле :)
Я еще не готов к написанию полноценного физического движка. Маловато знаний.
Еще предстоит выучить нужное.
И поэтому начал с простого.

А как у тебя тут нарисовано, то нужно считать и сравнивать моменты F*l. И из этого момента и момента инерции посчитать ускорение

А подробнее и код для примера можно ?

Рассчитать где герой просто.

d = hero.ху - box.centr;
if d> 0.5 с права герой.
if d< -0.5 с лева герой.

так поймем какой F1 или F2 прибавить веса который есть у героя.

#4
20:55, 6 ноя 2025

M = (сумма произведений весов предметов, находящихся на балке, на расстояния от предметов до центра балки с учётом знака)
if (abs(M) < k) M = 0
М момент силы
a = M  / (m*l*l/12)
k коэффициент, чтобы балка не крутилась от малых масс
a угловое ускорение
m масса балки
l длина балки

#5
(Правка: 21:06) 21:00, 6 ноя 2025

на матрицу ориентации балки и после этого преобразуем в кватернион.
Полученный вектор преобразуем в кватернион, полученный кватернион нормализуем и переводчим в матрицу.

не обязательно кватернион нужен.
Есть у балки матрица3х3.
зная где герой, на левом краю балки или на правом.
делаем вращение влево или вправо.
Тупо еденичную матрицу умножаем на поворот по оси z на отрицательный или положительный коэффициент.

#6
21:01, 6 ноя 2025

ronniko
> Маловато знаний
Знаний математики и физики... Так-то физ движок простой можно сделать по статьям суслика за месяц

#7
21:04, 6 ноя 2025

Так-то физ движок простой можно сделать по статьям суслика за месяц

Изображение

То-то я смотрю все берут булет,physX,Havok :)

#8
(Правка: 21:12) 21:10, 6 ноя 2025

Хехе на том и стоим

Знаем мы как учите по статьям.
Ивашка  на метлу Юнити сел.

#9
21:10, 6 ноя 2025

ronniko
>
> То-то я смотрю все берут булет,physX,Havok :)
Графические движки тоже берут готовые. Они посложнее бывают

#10
(Правка: 21:15) 21:11, 6 ноя 2025

Мне графический движок не нужен.
Пока свой устраивает.

А вот с физикой хочется разобраться и понять. Чтобы свою физику запилить.
Потому что разные физ-движки имеют неудобства и свои особенности, что не всегда удобно в использовании.

#11
21:15, 6 ноя 2025

krkd
> Знаний математики и физики.
при том очевидных, не понимает, что кватернион нужен для накопления вращений, т.к. на балку может с разных сторон и несколько сил воздействовать, гипотетически бесконечно большое количество. И что ориентация вращения уже заключена в моменте

#12
(Правка: 21:23) 21:17, 6 ноя 2025

Суммируем веса влияющие на балку и получаем вектор направление силы.
Кватернион не нужен, если вращаем в одной или двух осях например по У и Z.

Ивашка у тебя движок твой опух от конвертаций матриц в кватернионы и обратно в матрицу :)
На полтора метра раздуло из-за конвертаций :)

Вот чем ты 9 лет занимался :)
Гонял матрицы в кватернионы.

+ Показать
#13
21:26, 6 ноя 2025

Найди центр масс суммарного полигона, если он проходит через ось вращения, то предмет останется неподвижным, если промахнулся мимо, будет вращаться в ту сторону, где масса больше, относительно оси симметрии проведённой через ось вращения

#14
(Правка: 22:24) 21:27, 6 ноя 2025

Найди центр масс суммарного полигона

как это сделать по феншую ?

http://al-vo.ru/mekhanika/centr-tyazhesti.html
Что значит в статье F=a*b ?
F это что ? не force же. force это vec3. A F как float. F это площадь что-ли ?

Но для площади юзают вообщето S.
Площадь прямоугольника вычисляется по формуле S = a * b,
где S — площадь, a — длина прямоугольника, b — ширина прямоугольника.

Страницы: 1 2 Следующая »
ФлеймФорумПрограммирование