Расширенный поиск вписанных квадратов

Инструменты рисования

Математические данные

Данные о кривой отсутствуют

О поиске вписанных квадратов

Математические основы

Формула шнурка

Мы используем формулу шнурка (также известную как формула землемера) для расчета площади многоугольника, образованного кривой:

A=12i=1n1(xiyi+1+xny1)i=1n1(xi+1yi+x1yn)A = \frac{1}{2}\left|\sum_{i=1}^{n-1} (x_i y_{i+1} + x_n y_1) - \sum_{i=1}^{n-1} (x_{i+1} y_i + x_1 y_n)\right|

Где (xi, yi) - координаты i-й вершины многоугольника.

Реализация алгоритма

Поиск вписанного квадрата

Этот алгоритм использует метод Монте-Карло, пробуя случайные точки внутри кривой для поиска наибольшего вписанного квадрата.

function findInscribedSquare(curve) {
  const minX = Math.min(...curve.map(p => p.x));
  const maxX = Math.max(...curve.map(p => p.x));
  const minY = Math.min(...curve.map(p => p.y));
  const maxY = Math.max(...curve.map(p => p.y));

  let bestSquare = [];
  let maxSize = 0;

  for (let i = 0; i < 1000; i++) {
    const center = getRandomPointInside(curve);
    let low = 0;
    let high = Math.min(maxX - minX, maxY - minY);

    while (high - low > 1) {
      const mid = (low + high) / 2;
      const square = [
        { x: center.x - mid / 2, y: center.y - mid / 2 },
        { x: center.x + mid / 2, y: center.y - mid / 2 },
        { x: center.x + mid / 2, y: center.y + mid / 2 },
        { x: center.x - mid / 2, y: center.y + mid / 2 },
      ];

      if (square.every(p => isPointInside(p, curve))) {
        if (mid > maxSize) {
          maxSize = mid;
          bestSquare = square;
        }
        low = mid;
      } else {
        high = mid;
      }
    }
  }

  return bestSquare;
}

Этот алгоритм использует метод Монте-Карло, пробуя случайные точки внутри кривой для поиска наибольшего вписанного квадрата.

Поиск описанного квадрата

Этот алгоритм находит ограничивающий прямоугольник кривой и создает квадрат, который полностью ее охватывает.

function findExtendedSquare(curve) {
  const minX = Math.min(...curve.map(p => p.x));
  const maxX = Math.max(...curve.map(p => p.x));
  const minY = Math.min(...curve.map(p => p.y));
  const maxY = Math.max(...curve.map(p => p.y));

  const centerX = (minX + maxX) / 2;
  const centerY = (minY + maxY) / 2;
  const size = Math.max(maxX - minX, maxY - minY);

  return [
    { x: centerX - size / 2, y: centerY - size / 2 },
    { x: centerX + size / 2, y: centerY - size / 2 },
    { x: centerX + size / 2, y: centerY + size / 2 },
    { x: centerX - size / 2, y: centerY + size / 2 },
  ];
}

Этот алгоритм находит ограничивающий прямоугольник кривой и создает квадрат, который полностью ее охватывает.

Введение

Добро пожаловать в поиск вписанных квадратов, интерактивный инструмент, исследующий увлекательный мир геометрии и математических гипотез.

Это приложение позволяет рисовать замкнутые кривые и находить вписанные в них квадраты, оживляя вековую математическую проблему.

Ключевые концепции

Замкнутые кривые

Замкнутая кривая - это непрерывная петля на плоскости, как круг или любая форма, которая заканчивается там, где начинается.

Вписанные квадраты

Вписанный квадрат - это квадрат, который идеально вписывается внутрь замкнутой кривой, причем все четыре угла касаются кривой.

Описанные квадраты

Описанный квадрат - это наименьший квадрат, который полностью охватывает замкнутую кривую.

Расчет площади

Площадь кривой и квадратов рассчитывается с использованием продвинутых геометрических алгоритмов.

Длина кривой

Общее расстояние вокруг кривой, измеряемое в килопикселях.

Как использовать

1

Выберите инструмент рисования на панели инструментов.

2

Нарисуйте замкнутую кривую на холсте.

3

Нажмите 'Найти вписанный квадрат', чтобы найти вписанный квадрат.

4

Нажмите 'Найти описанный квадрат', чтобы найти охватывающий квадрат.

5

Просмотрите математические данные для вашей кривой и квадратов.

6

Используйте кнопку 'Очистить', чтобы начать заново с новой кривой.

7

Экспериментируйте с различными формами и сравнивайте результаты!

Дальнейшее исследование

Проблема вписанного квадрата открывает множество путей для математического исследования:

Исследуйте, как часто идеально круглые кривые дают вписанные квадраты.

Изучите различные алгоритмы для более эффективного поиска вписанных квадратов.

Изучите связь между площадью кривой и ее вписанным квадратом.

Рассмотрите, как эта проблема может быть расширена до трех измерений с вписанными кубами.

Приятного исследования, и пусть ваше математическое любопытство никогда не угасает!

Создано Луисом, веб-разработчиком из Мексики

Посмотреть исходный код