【原创】《矩阵的史诗级玩法》连载十八:用矩阵研究二次贝塞尔曲线和抛物线的关系(下)

这篇没什么开头的话好说的,就紧接着上一篇,看下一般形式的二次贝塞尔曲线是否真的为抛物线

就目前来说,除了最简单粗暴的代入消元,我想不到别的办法了。

不过我们可以跟上篇连载一样,用A,B,C来存储一些复杂的常量表达式。

由于P有x和y两部分的分量,所以ABC自然也包含x和y两类。

现在我们就写出二次贝塞尔曲线用ABC表示系数的形式。

把x看作常量,我们从第一条方程中求出t

这里没什么复杂的玩意儿,就是一元二次方程的求根公式,需要注意的是常数项为Cx-x而非Cx,不要把另一侧的x给忽略掉。

虽然很好理解,但是式子还是偏长,代入到下式再展开会很蛋疼,那么,我们再次请出Δ这个字母,用来表示根号内的那串东西吧。

这样再代入化简就舒服多了。

然后分子分母同时乘以4(Ax)^2,得到

这里我用了一个对中学生来说比较大胆的写法,就是直接让正负号参与到运算当中,写起来方便些。但据说高考这么写是要被扣分的~孟子曰:高考猛于虎啊!

中学的时候大家应该学过无理方程吧,求解的第一步就是想方设法去掉根号,具体方案是把带根号的“项”移到等号的同一侧,而不带根号的则放到另一侧,然后两边平方。这里我们也用此法去掉根号。

两边平方,哇,还是好蛋疼的样子。这里,由于x全部在Δ里面,所以我们把不包含y和Δ的部分看作一个整体来处理,先不展开。

根号被去掉了,但我表示很难受,这么长的一串式子还得整理。谁让刚才特殊的情况已经被证明了它是抛物线呢,那就继续吧,至少不迷茫。

这里我把Δ当作x来看了并且按二元二次方程的一般式来排序各项,然而事情并没有结束,Δ要用包含x的表达式再代入一次。

怎么样,是不是有种欲仙欲死的感觉?!这个展开式整理真的很麻烦啊。但所幸的是,我们发现所有的项都不带根号了,并且最高次数为两次。虽然我自己在MathType里有把整个展开式给写出来,但博文上我打算去掉一大部分,只保留对我们判断曲线类型有用的3个2次项系数。

如下图,红绿蓝3种颜色分别表示x^2,xy和y^2的所有项。

运气不错,二次项每种都只有一个,而且看着不复杂。因此不难算出如下结果。

一次项D,E和常数项F实在太长太蛋疼,而且跟判断曲线类型没有半毛钱关系,所以我就直接写DEF。

前面说过,二元二次方程的曲线类型判断方法是Δ=B^2-4AC的正负性。具体如下:

Δ<0时,方程为椭圆(包括正圆)

Δ>0时,方程为双曲线

Δ=0时,方程为抛物线

我们现在来计算判别式的值看看:

哈哈,激动人心的时刻啊,还真是刚好等于0!至此,我们彻底证明了,二次贝塞尔曲线正是抛物线旋转所得

现在我们可以把贝塞尔曲线也列入到方程求解的支持范围了,因为它的本质真的是抛物线,具备二元二次方程的所有特征。不过实际应用中,求交点还得用上D,E,F这3个系数,而用本文的方法得到的结果实在过于繁琐,处理起来真心蛋疼。

以前我在QQ群里讲数学课,讲的是微积分,四元数等较为高深的数学知识。有位群友给我一个建议,说让我多讲应用,少讲理论和推导,还说我是程序员,数学不该是我的强项。当时,我本人的内心瞬间迷失了方向。一直以来我都觉得网上的教程对原理的讲解不够详细和深入,而我正要弥补这一不足。原来在他们看来,这不是不足,而是根本不需要,真的遇到这些问题,找现成库或者求助像我这样的人,然后给我个10块的红包把我给打发走就完事了。好吧,这也许就是社会了~

前面在介绍砖块铺贴的时候,我提到了用旋转缩放的方式不但繁琐,而且不通用,接着提出了一种通过基向量构建矩阵的方法。实际上,贝塞尔曲线也可以通过基向量矩阵实现到标准抛物线的变换!!不信?那就等着我的下一篇教程吧!

 

猜你喜欢

转载自blog.csdn.net/iloveas2014/article/details/82980069