desmos绘制旗帜教程
国庆将至,笔者翻了翻两年之前国庆节发的视频用函数编辑器制作的五星红旗。祝祖国成立72周年!,于是考虑再画一遍,并将具体的流程附上(相比以前的算法也有了优化)
以原点建立坐标系,旗帜四个顶点分别为:
(15,10),(-15,10),(-15,-10),(15,-10)
这时工作就已经完成一半了,我们将这4点围成的矩形渲染成(标准的)红色即可
先是构造矩形,对应解析式为:
然后是调色:

将填充改为1,然后设一个参数a来代表颜色(参数不仅可以代表"滑块",还能代表颜色哦)
其中rgb(255,0,0)也即标准的红色(也即三原色之一,红原色调满,绿,蓝调零)
ps:desmos自带的那个红色不是标准的红色,因此需要额外引入参数a表示标准红色
效果如下:

当然,对于感兴趣的网友,也可以考虑用"曲线方程"来表示矩形哦
考虑正方形经过旋转得
,然后经过伸缩变换化为矩形:
这是边界方程,因此矩形内的"可行域"表示为:
然后调色步骤同上
ps:这个变换过程需要用到线性变换以及相关点法的知识,之前写过专栏,供参考:

然后分别是5颗星的位置

圆心(-10,5),半径为3
小五角星:
圆心由下及上分别为:(-5,1),(-3,3),(-3,6),(-5,8),半径均为1
然后求出每个五角星顶点坐标
这里相对之前的做法的优化,是直接从图中找到方位角后用参数方程,省略了联立的步骤
以大五角星为例:
考虑圆的标准参数方程
于是得到5个顶点对应的参数角:
于是,我们可以考虑引入多参数k,即

那么坐标表示的就是5个点(因为前面设置的k是多值的)
那么直接把这个点坐标放入polygon()中即可得到5边形

而这里有个问题,这个多边形表示的是正五边形而非五角星?那么问题究竟出在何处呢?
原因时desmos中的polygon()的括号中的点坐标是默认从左往右依次连起来的。我们回顾下画五角星的步骤,是按同一旋转方向连接相间的两个点。因此,角的间隔应该从改为
,这样就可以了:

然后是调色,引入参数b表示黄色
标准的黄色代码为:rgb(255,255,0)(也即三原色之一,红、绿原色调满,蓝调零)
其余步骤同前
效果如下:


然后再到了4颗小星
这时的五角星顶点为例有严格的讲究,其中(一个顶点为该圆心与大圆圆心的)连线与该小圆的交点(换而言之其中一个顶点正对大圆圆心)
以最底下的为例
其圆心与大圆圆心连线斜率为:
于是得到5个顶点对应的参数角:
ps:这里同样需要考虑到连线顺序,因此也直接将参数角间隔改为
了
那么坐标表示的就是5个点
ps:代入sin/cos时也经过了诱导公式的少步化简
于是着颗小五角星也表示好了

其余的也是同理,方法是完全一样的,这里就不多赘述了,直接贴上代码:

最后把顶点、轮廓线、辅助圆等隐藏,最终保留以下简洁的公式栏:

最终效果如下图:

省略坐标轴即可得到标准的国旗绘图:


最后,预祝各位国庆愉快,也愿祖国今后依旧欣欣向荣!