增强型内接正方形查找器

绘图工具

数学数据

无可用曲线数据

关于内接正方形查找器

数学基础

鞋带公式

我们使用鞋带公式(也称为测量员公式)来计算曲线形成的多边形面积:

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

尝试不同的形状并比较结果!

进一步探索

内接正方形问题为数学探索开辟了许多途径:

研究完美圆形曲线产生内接正方形的频率。

探索更高效地查找内接正方形的不同算法。

研究曲线面积与其内接正方形之间的关系。

考虑这个问题如何扩展到三维空间中的内接立方体。

祝您探索愉快,愿您的数学好奇心永不停息!

由墨西哥网页开发者路易斯创建

查看源代码