Калькулятор центра тяжести плоской фигуры

Угол X°
Угол Y°
Угол Z°
Скорость
Площадь, мм²—
Периметр, мм—
Центр X,Y плоскость—
Центр X,Y,Z объём—
Вершины—

Онлайн-инструмент поможет быстро и точно получить геометрические параметры плоской фигуры, нарисованной произвольно в редакторе, и увидеть её в объёме. Результаты вычисляются в миллиметрах и показываются сразу в таблице. Параллельно вы видите трёхмерную модель с осями координат и пометкой центра тяжести. Программа работает на ПК и мобильных телефонах, без установки.

Что рассчитывает калькулятор

  • площадь фигуры в мм²
  • периметр в мм
  • координаты центра тяжести в плоскости X, Y в мм
  • координаты центра тяжести в объёме X, Y, Z в мм после применения ориентации по осям
  • список вершин с координатами, округлённый до двух знаков после запятой
  • 3D-визуализация с осями X, Y, Z и маркером центра тяжести

Обзор интерфейса

  • Поле рисования. Нажмите чтобы добавить вершину. Перетаскивайте вершины для правки. Двойной клик пустой — отключён.
  • Ползунки Угол X, Угол Y, Угол Z. Меняют ориентацию детали в объёме. Порядок применения поворотов: X затем Y затем Z.
  • Ползунок Скорость. Управляет автоповоротом фигуры в объёме.
  • Кнопки Очистить и Скачать. Очистка сбрасывает фигуру. Скачать делает скриншот рабочего блока.
  • 2D-центр отмечен жирной точкой на плоскости. 3D-центр показан шариком другого цвета. Оси в 3D фиксированы.

Формулы и методика вычислений

Все расчёты основаны на координатах вершин в пикселях на холсте и преобразуются в миллиметры через соотношение мм на пиксель по осям X и Y. Панель считается прямоугольником с заданными физическими размерами по X и Y в мм. Для перевода используются линейные масштабы.

Преобразование пикселей в миллиметры

mm_per_px_x = panel_width_mm / canvas_width_px
mm_per_px_y = panel_height_mm / canvas_height_px

Координата в мм (центр панели как начало) вычисляется так:

X_mm = (x_px / canvas_width_px − 0.5) × panel_width_mm
Y_mm = (0.5 − y_px / canvas_height_px) × panel_height_mm

Например, точка в середине холста x_px = canvas_width_px/2 даёт X_mm = 0.

Площадь по формуле Гаусса

Для вершины i с координатами xi, yi (в пикселях) промежуточное значение a = Σ (xi * y_{i+1} − x_{i+1} * yi) по циклу.

Площадь в пикселях area_px = |a| / 2. Площадь в миллиметрах area_mm2 = area_px × (mm_per_px_avg)², где mm_per_px_avg = (mm_per_px_x + mm_per_px_y) / 2.

Периметр фигуры

sum_px = Σ sqrt( (x_{i+1} − xi)² + (y_{i+1} − yi)² )

Периметр в мм = sum_px × mm_per_px_avg

Центр тяжести в плоскости

Cx_px = (1 / (6Apx)) × Σ ( (xi + x_{i+1}) × (xi * y_{i+1} − x_{i+1} * yi) )
Cy_px = (1 / (6Apx)) × Σ ( (yi + y_{i+1}) × (xi * y_{i+1} − x_{i+1} * yi) )

Apx — ориентированная площадь без модуля; при вычислении берём значение usedA = Apx/2 и по модулю если нужно. Перевести Cx_px, Cy_px в мм по формуле выше.

Центр тяжести в объёме

Плоская фигура лежит в локальной плоскости z = 0, центроид в мм равен V = (X_mm, Y_mm, 0). После задания углов rx, ry, rz в градусах применяется поворот в порядке X, затем Y, затем Z. Результат R = Rz × Ry × Rx × V.

Матрицы поворота в компактной форме. Rx(α): поворот вокруг X. Ry(β): поворот вокруг Y. Rz(γ): поворот вокруг Z. Реализовано в коде как последовательное применение формул: сначала действуем Rx, затем Ry, затем Rz. Итоговый координатный вектор в мм даёт X, Y, Z объёма, который выводится в таблице.

Практический пример расчёта

  1. Холст 330 x 330 пикселей, панель 300 x 300 мм. Тогда mm_per_px_x = 300 / 330 = 0.90909 мм на пиксель. Аналогично по Y. mm_per_px_avg = 0.90909.
  2. Пусть три вершины в пикселях: A(165, 60), B(70, 220), C(260, 220).
  3. Площадь по shoelace: a = 165×220 + 70×220 + 260×60 − (70×60 + 260×220 + 165×220). a вычисляется как значение, area_px = |a| / 2. Допустим area_px = 8000 пикселей, тогда area_mm2 = 8000 × 0.90909² ≈ 6611.57 мм².
  4. Центроид в пикселях вычислен формулой выше, допустим Cx_px = 165, Cy_px = 166. Перевод в мм даёт X_mm = 0, Y_mm ≈ (0.5−166/330)×300 = −13.64 мм.
  5. Поверните по оси X на 30°, по Y на 20°, по Z на 0°. Результат rotateXYZ_mm даст координаты X,Y,Z в мм, например X = 0.00, Y = −11.79, Z = −6.82 мм. Эти три числа появляются в поле Центр X,Y,Z объём.

Таблица результатов

Параметр Что показывает
Площадь, мм² Площадь поверхности фигуры
Периметр, мм Длина контура
Центр X,Y плоскость Координаты центроида в плоскости панели
Центр X,Y,Z объём Координаты центра после поворота в объёме
Вершины Список вершин, координаты X,Y в пикселях

Технические замечания и контроль точности

  • Масштаб mm_per_px по X и по Y может отличаться если холст не квадратный или panel размеры не равны. Код использует среднее mm_per_px_avg для площадей и периметров. Это даёт адекватное приближение для большинства приложений. Если вам нужна точность лучше, используйте не среднее, а отдельные преобразования по осям.
  • Порядок поворотов важен. В коде используется порядок XYZ. Изменение порядка изменит итоговые координаты.
  • Округление выполняется только при выводе. Внутренние вычисления делаются в плавающей точке, чтобы минимизировать накопление погрешности.

Примеры с числами

  1. Холст 330 px, панель 300 mm. mm_per_px ≈ 0.90909.
  2. Вершины: (165,60), (70,220), (260,220).
  3. area_px = 7920, area_mm2 ≈ 7920 × 0.90909² = 6538.8 мм².
  4. centroid_px ≈ (165, 166) px. centroid_mm ≈ (0.00, −13.64) мм.
  5. Поворот Rx 30, Ry 20, Rz 0. rotated ≈ (0.00, −11.79, −6.82) мм.

Итого, программа даёт быстрый рабочий инструмент для анализа плоских контуров и их поведения при размещении в объёме. В интерфейсе видны все ключевые параметры. Формулы, использованные здесь, стандартные для CAD типа расчётов: площадь, центроид через ориентированную площадь, повороты через последовательные матрицы Rx, Ry, Rz.

Оцените материал:

5 / 5. Рейтинг: 2

Может подскажете что улучшить?