在我上一篇博客文章中,我讨论了如何为人们的面部草图构造封闭式三角公式。使用类似的技术,Wolfram|Alpha最近添加了数百条用于脸、形状、动物、徽标和签名的闭合曲线。在今天的帖子中,我想展示一些用这些参数化曲线可以做的有趣的事情。虽然这些只是简单的曲线,但可以从中构建各种有趣的图像(和动画)。例如,这些可以用于政治漫画、脱口秀、海报、音乐专辑封面,或者仅仅是为了给高级微积分或一年级理论力学课增添趣味。我将首先讨论有趣的应用程序,然后是更数学的应用程序。
Wolfram|Alpha有数百条曲线,可以用于下面讨论的变体。下面是一些示例类别。
我将首先实现两个简单的函数。我们将处理单个曲线段,而不是一条整体曲线,因为对于下面的大多数应用程序,整个曲线的具体参数化并不重要。Wolfram|Alpha返回的参数化是一组截断的傅里叶和乘以单位阶跃函数。单位阶跃函数确保我们可以使用单个参数化,但有单独的断开线段。功能extractCurveSegments(提取曲线段)给出了构成曲线的各个曲线段的列表。以及获取段长度给出了段的长度。
与大多数Wolfram|Alpha功能一样,很容易将可计算形式的数据导入数学软件。所以,让我们导入面的参数化巴拉克·奥巴马.
我们提取各个曲线段以供进一步使用。每个曲线段都是中的一个表达式t吨绘制时t吨从0到2π,绘制段的视觉表示。
现在让我们使用分段参数化来构建原始图像的一些变体。首先,我们将线段绘制为有限厚度的3D管。虽然很简单,但这使得曲线看起来已经有点有趣了。
制作更有趣图形的另一种方法是:下一个图形将每个曲线段显示为螺旋形的源于段的重心.
如果我们对曲线段进行粗采样,并在每个曲线点定位磁盘链,我们可以构建一些类似Medusa的图像。我们在参数化曲线的每个点上放置一个圆盘,并从每个圆盘上连接一系列越来越小的圆盘。
在这里,在3D中,球体而不是圆盘也是如此。
如果我们对曲线段进行密集采样,我们可以构建所有点距离的3D图{x个,年}平面到最近的(或第二个最近的…)曲线段点。为了提高效率,我们使用最近的.
结果图像看起来比曲线本身更有趣,因为我们现在也看到了曲线之间区域的一些结构。
到目前为止,我们保留了曲线点,并在图中放置和添加了各种添加项。我们还可以更改曲线点的实际坐标。手边有明确形式的曲线点坐标,我们可以很容易地求出曲线的平方根。下一张图显示了取平方根的结果曲线x个,年坐标和极坐标。
将映射推广到任意幂函数很简单,下面的交互式示例允许任意参考点和指数。为了获得更多视觉效果,我们使用了一些现任和前任总统和首相。除了幂函数映射参数外,我们还允许通过定位器交互式更改坐标系原点。
现在让我们切换到另一个人曲线。这是Wolfram | Alpha的创造者Stephen Wolfram的素描。
我们再次提取各个曲线段以供进一步使用。
我们再次绘制平面上的点到最近线段的距离。中间和右侧的图像显示了到第二个最近的和第三个最近的曲线段的距离。不出所料,测量到更远线段的距离会丢失重要的面部结构。
下面是距离阵列的另外两种用法;这一次,我们从用于绘制最后一个图的数据中绘制了三个数组图。
这是斯蒂芬的罗马马赛克壁画风格。为了构造它,我们从一个半随机的点数组开始。对于这些点,我们构建了一个Voronoi图这些点(使用ListContourPlot[点,插值顺序->0]). 我们将Voronoi图的各个多边形映射到3D中(以获得更逼真的马赛克效果),并根据到曲线分段点的距离对其进行着色。
这是斯蒂芬·沃尔夫拉姆更现代的艺术版本。在方形栅格上,我们压印曲线分段,就像它们在栅格顶点上受重力作用一样,并轻微变形栅格。
由于Stephen Wolfram的面部草图是作为一组曲线给出的,因此我们可以应用各种微分几何运算。下图显示了踏板曲线和逆踏板曲线面的曲线,这意味着这些曲线的定义方式是,新曲线上的一个点与原始曲线相对于一个点的切线(法线)垂直P(P)(定位器)。(最初,我们将踏板点斯蒂芬的左鼻孔里。)
围绕z(z)轴给出了斯蒂芬·沃尔夫拉姆(Stephen Wolfram)脸上有趣的3D图像。
现在,让我们取最后两条脸曲线,沃尔夫·布利策(Wolf Blitzer)和安德森·库珀(Anderson Cooper)的脸曲线,并将它们变形为彼此。因为参数化不允许一对一映射,所以我们不能直接在参数化曲线之间进行插值,但我们可以很容易地在曲线的点之间进行插值。首先,我们重新缩放曲线,以便两个面的位置和缩放相同。
我们在每个面曲线集上选择20000个点,并在另一个面曲线集中找到最近的点。然后我们在这些点对之间进行插值。
这些是点对之间的插值线。
使用刚刚计算出的过渡点和边界点,我们可以快速生成其面部的浮雕图。
这是两个面之间的过渡。
以下交互式版本允许我们更改过渡参数并连接生成的插值点集。
或者我们可以使用杰·雷诺.
这里是其定义线段的最近曲线段图。
以下是杰伊的两幅修改过的交互式“线条图”。在第一个图形中,可以交互更改线号、线长度和线角度。
我们还可以沿着曲线分段编织管。或者描绘一个由数千支小箭制成的更带刺的雷诺。
这是他的肖像画,以3D的方式沿着蛇壳状的曲线旋转。
我们继续使用以下变量Lady Gaga女士.
她当然不想被展示成一条统一的、纤细的、纯蓝色曲线。因此,让我们加宽线段并为其上色。
下一个图形是由50000个随机放置和着色的n个gons(去).的大小和不透明度n个gon是到绘制面草图的其中一条曲线最近点的距离的函数。
这里有两个电话列表轮廓图用Lady Gaga的曲线点。我们根据与距离相关的概率分布,从矩形点阵列中随机选择绘图点。我们根据她那臭名昭著的形象给她涂上了正确的颜色肉衣服.
使用左侧图形和圆角中的多边形,我们获得了以下鹅卵石状图像。
Lady Gaga的另外两个变种-锥体和圆柱体沿嵌入在3D中的定义曲线随机放置。
接下来,我们导入羽毛的图像。
通过随机重新给羽毛着色,我们可以沿着曲线的线段放置彩色羽毛。羽毛的大小由原始曲线段的大小决定。
我们可以为其他曲线制作类似的图像,不仅针对人,也针对虚构人物(例如,Tinky Winky)。
这是Tinky Winky的3D照片。
在下一个图像中,我们执行反转在Tinky Winky身上。
或者我们可以用小猪小姐。
我们可以使用采样密度较小的线段中的点来生成Voronoi细分数据的。
让我们递归地收缩小猪小姐的曲线。
下一幅图像在曲线点和映射到更大的全封闭圆上最近点的曲线点之间进行插值。
接下来,我们将为Piggy小姐充电(电),并从带电的离散曲线段计算产生的电场。这里是带电线段的电场.
这些线的场强大小相等。
或者,我们可以利用Dilbert的参数化。
这是带有半径球体的Dilbert,半径球体与到最近曲线点的距离成正比。左侧图形使用随机放置的球体,右侧图形使用中心位于方形网格上的球体。
手边有一条Dilbert曲线,还有什么比将其与希尔伯特曲线著名的填充曲线?
通过提升靠近Dilbert曲线的点,我们将Dilbert曲面压印到Hilbert曲线中。
这里有一个标志曲线被转换(双关语)为3D情节。
我们可以对更多真实和虚构的名人进行素描和修改。这里有三个。我们对他们的名字进行编码。你认识他们吗?单击此处查看扰流板.
这是一个虚构的角色。再次单击以选择扰流板.
我们不是绘制曲线,而是在定义曲线的点上绘制许多(约25000个)密切的圆,以获得自然的气泡环境。
另一种可能的曲线用法是制作彩色页面。下一个输入实现了将随机选择的神奇宝贝图形映射到多边形中。
这里有一个可能的安排,口袋妖怪的字符要着色。
有些应用了一些非传统的颜色。
我们对人物和虚构人物很感兴趣。但在动画中玩得更开心之前,让我们做一些与曲线有关的数学。例如,我们可以使用曲线做一些复杂分析让我们从一条近似于字母的曲线开始π.
在下一个图形中,我们将平面映射到复杂平面,并绘制模函数反椭圆nome.上的稠密奇点集分析性自然边界逆椭圆nome给出了我们沿着轮廓看到的复杂精细结构π.
接下来,我们在中形成一个有理函数z(z)基于傅立叶级数。
有理函数在z(z)=经验(我 φ)描出这封信π。对于z(z)=R(右)经验(我 φ),我们得到了不同外观的曲线。类似地,有理函数和归一化后的多项式可以用于人的曲线、形状曲线……因此,如果我们需要一些曲线应用的多项式,我们总是可以从三角正弦和构造它们。
在下一个图形中,我们将沿着π.
这是最后一个多项式的常数实部和虚部的曲线图。
让我们执行另一个复杂的分析示例。我们知道,通过保角映射,我们可以将复杂平面的任何漂亮的单连通区域映射到单位圆盘。在许多情况下,保角映射的级数近似将给出良好的结果。例如,这是将正方形映射到磁盘的精确地图。它有点复杂,并且包含雅可比椭圆函数。
级数近似相当简单。
从视觉上看,只有两个前导项的序列已经给出了地图的合理近似值。
所以,让我们尝试找到将人A映射为人B的复杂地图。因为我们无法独立绘制外部边界和内部特征,所以映射肯定不是完美的。但是,观察算法,试图最小化人A和人B之间的差异,在人A或人B上执行保角映射,至少是有趣的。所以我们实现了这样一个共形映射的发现。这里有八对要绘制地图的人。
让我们用牛顿曲线解决一些偏微分方程的计算,以纪念微分学的共同发明者。在准备过程中,让我们考虑一下定义牛顿面的二维傅里叶曲线系列,这是我们在上一篇博客文章中构建的。
我们将重新缩放曲线以适应[0,1]X[0,1],并使用(非规范化的)2D傅里叶基函数ψk个,米=正弦(k个 π x个)罪(米 π 年). 实际上,我们希望近似狄拉克δ函数沿着定义曲线和其他任何位置的零函数。
我们使用数值积分计算二维傅里叶系数。我们将计算相当多的系数,即2002.
为了组装傅里叶近似,我们在x个,年提高效率。功能xyArray阵列采用可选参数“傅里叶系数乘数” ->价值我们稍后会用到。
这是3D中显示的2D曲线的傅里叶近似结果。
下一个图显示了(缩放)函数值如何随着考虑的傅里叶模式数量的增加而增加。我们看到,对于好看的图像,我们需要的傅里叶系数要比曲线本身需要的傅立叶模式多得多。
记住变量分离法解决偏微分方程,我们可以使用傅里叶系数直接获得波动方程的时间相关解和热量方程上述傅里叶展开是t吨=0.
这是波动方程下牛顿脸的时间演化版本。(我们假设初始速度处处消失。)
这是牛顿脸在热量方程下的时间演化版本——它似乎最适合万圣节。
如果牛顿的脸是一个微粒子,并且服从薛定谔方程,那么局部的脸很快就会分开,很快就会变成这样:
现在我们结束曲线的高级微积分应用。
只要稍加努力,我们就可以尝试为一些曲线设置动画,而不仅仅是构建静态图像。例如,我们可以取三条闭合曲线并对其进行变形。这里使用了一头猪、一头独角兽和一个雪人的剪影。
我们首先将曲线的大小归一化,然后形成叠加嵌合体c(c)猪 曲线猪+c(c)独角兽 曲线独角兽+c(c)雪人 曲线雪人.
在上面,我们和人们的脸玩得很开心;我们用一些曲线来解偏微分方程,现在让我们做一些物理,特别是力学。
假设巴拉克·奥巴马(Barack Obama)灵活,我们可以将定义曲线建模为带有谐波的离散弹性弹簧最近邻军队。我们还假设从每个线段的末尾到下一线段的开头之间存在耦合(参数化中的复值连接)。由此产生的机械系统由牛顿运动方程描述米 X(X)”(t吨)=F类(X(X)(t吨)),其中X(X)(t吨)是曲线段上所有点的位置向量。力学类特别感兴趣的是由此产生的机械系统的特征模式,将线性链的本征模.
或者我们可以通过动画变得更疯狂:让我们在4D中结合两条曲线(每条曲线都在2D平面上)。首先我们选择两个形状,比如π还有锤子和镰刀的符号。
然后我们在四维空间中形成一个二维曲面。曲面的四个坐标为{c(c)π,x个(秒),c(c)π,年(秒),c(c) 小时,x个(t吨),c(c)小时,年(t吨)},其中{c(c)π,x个(秒),c(c)π,年(秒)}是pi曲线的参数化{c(c) 小时,x个(t吨),c(c)小时,年(t吨)}是锤子和镰刀曲线的参数化。然后,我们通过将该曲面投影到四维空间中旋转指定的三维子空间来观察该曲面。
我们可以对两个面进行类似的处理,并将它们合并为Janus类型的4D对象。由此产生的表面看起来相当复杂,我们鼓励读者找到一些合适的人对,在更高的维度上团结起来。
我们以一条曲线结束今天的博客帖子,这条曲线几乎需要动画效果:Psy的舞蹈。
在这里,角色动画的篇幅并不长。相反,我们只是在肘部和膝盖关节处旋转他的部分手臂和腿。为了实现更逼真的江南舞动画,我们必须添加围绕臀部的旋转。
在本系列的下一篇博客文章中,我们将讨论lamine,即曲线及其内部。对于它们的构造,将使用完全不同的数学技术。
要与上述示例进行交互,首先,下载WolframCDF播放器.然后,下载这篇文章作为可计算文档格式(CDF)文件.