我的博客和笔记我的博客和笔记
首页
文章
  • TurboLink
  • TinyEncrypt
  • UnrealStyleGuide
  • AxTrace
  • Cyclone
  • 数学相关
  • 图形学
  • 密码学
  • 编程语言
关于
GitHub
首页
文章
  • TurboLink
  • TinyEncrypt
  • UnrealStyleGuide
  • AxTrace
  • Cyclone
  • 数学相关
  • 图形学
  • 密码学
  • 编程语言
关于
GitHub
  • 我的文章

    • 从抛币协议到智能合约

      • Part1
      • Part2
    • JPEG算法解密

      • Part1
      • Part2
      • Part3
      • Part4
      • Part5
      • Github
    • SPH算法简介

      • Part1
      • Part2
      • Part3
      • Part4
      • Github
    • 赌博中的数学:Martingle策略
    • 如何生成一个随机的圆形
    • 一个简单的DH密钥协商算法的实现
    • 如何计算线段和圆的交点
    • 一道数学趣题
    • 斐波那契数列和1/89
    • 匀速贝塞尔曲线运动的实现

      • Part1
      • Part2
  • 开源项目

    • TurboLink
    • TinyEncrypt
    • UnrealStyleGuide
    • AxTrace
    • Cyclone
  • 学习笔记

    • 数学相关

      • 常用数学符号
      • 群
      • 数论(一)
      • 数论(二)
      • 数论(三)
      • 概率
    • 密码学

      • RSA
      • 抛币协议
      • 智能扑克协议
    • 图形学

      • 数学基础

        • 矢量
        • 矩阵
        • 立体角
        • 几何变换(一)
        • 几何变换(二)
        • 法线变换
        • 摄像机变换
      • 光照模型

        • 传统光照模型
        • 光度学
        • 双向反射分布函数(BRDF)
        • 微平面理论(一)
        • 微平面理论(二)
        • 微平面理论(三)
        • 光照方程
      • 环境光渲染

        • 环境光渲染(一)
        • 环境光渲染(二)
    • 编程语言

      • JavaScript

        • 环境搭建
        • 基本语法
        • 函数
        • 对象和类

一道数学趣题

在微博上看到一道很有意思的数学问题,原题是:如果椭圆游泳池有一英尺宽的边缘,问:边缘外围是否仍为椭圆? 这个问题背后还有个八卦故事,数学家Steven Strogatz是非线性动力学大师级人物,广为人知的是他和自己的高中数学老师Don Joffray有着深厚的友谊,这位老师是把他带入数学殿堂的引路人,一次他在接受采访时,Strogatz讲到自己和这位老师的故事,他们即使在毕业后也一直保持着联系,一开始是他写信请教老师问题,但转折点就是这个“elliptical pool”问题,老师第一次被问住了,反而是他给老师解释,这令他激动不已。
有趣的问题就是这样,看起来足够简单,却要费一番脑筋才能想清楚。这里先定义一个概念,“一英尺宽的边缘”的数学含义,是指在椭圆的每个点的法线方向上扩展一定的长度,微博上另一位博主给出了一个很相像的动态图来描述,这里直接借用一下:

这个问题有两种解决思路,一种是纯粹从数学公式入手,这里给出一个解法,首先对于任意一个椭圆,用参数函数表达:

x=acos⁡θ,y=bsin⁡θ,0≤θ≤2π

利用微分知识可知,对于平面上任意一个连续的曲线函数,如果其参数方程表达为x=x(t),y=y(t),那么在任意点P0点处的法线方程可以表达为

y−y0x−x0=−x′(t0)y′(t0)

所以对于椭圆上任意一点(x0,y0),它的法线方程是

y−y0x−x0=asin⁡θbcos⁡θ

假设轮廓的宽度为K,那么椭圆上的点(x,y)对应的外廓的点(x′,y′)的方程为

(1){x′=acos⁡θ+Kbcos⁡θ(bcos⁡θ)2+(asin⁡θ)2y′=bsin⁡θ+Kasin⁡θ(bcos⁡θ)2+(asin⁡θ)2

如果这个轮廓是一个椭圆的话,那么必然(x′,y′)满足椭圆方程

(2)(x′a+K)2+(y′b+K)2=1

把公式1代入2中既可发现只有在a=b时公式才成立,所这个轮廓不是椭圆。
当然,如果只是想知道答案的话,可以不用这么麻烦,还有一种思路就是利用极端情况。设想一下这个椭圆极其“扁”,那么它的形状像是两条紧紧贴在一起的线段,不难想象,如果在这个椭圆外扩展一个宽度,那么新的轮廓的的上下边缘类似于两条分开的平行线段,但两端却无法平滑连在一起,这个形状类似于一个圆角的矩形,显然不是椭圆,下面是一个用Mathematica模拟的动态图

Prev
如何计算线段和圆的交点
Next
斐波那契数列和1/89