JavaScript 数学曲线—阿基米德螺线
引子
最近在研究曲线运动的时候,尝试了用 AI 导出的 SVG 路径之后,发现有些还是回归到数学中更合适一些。搜集了一些资料,尝试后总结一下。
- Origin
- My GitHub
简介
阿基米德螺旋是以公元前 3 世纪希腊数学家阿基米德命名的螺旋。它是一个轨迹,对应于一个点在一段时间内的位置,该点沿着一条以恒定角速度旋转的线以恒定速度离开一个固定点。在极坐标系中的公式描述:
当 c = 1 时,就是通常所说的阿基米德螺旋。
公式说明:
- r :径向距离。
- a :常数,起始点与极坐标中心的距离。
- b :常数,控制螺旋相邻两条曲线之间的距离。
- θ :极角。
实际应用有:
- 阿基米德螺线可以在螺旋天线中找到,它可以在很宽的频率范围内工作。
- 要求患者画一个阿基米德螺旋线是一种量化人类颤抖的方法,这些信息有助于诊断神经系统疾病。
- 阿基米德螺旋线也用于数字光处理(DLP)投影系统,以最小化“彩虹效应”,使其看起来好像同时显示多种颜色,而实际上是由于红色、绿色和蓝色的循环速度非常快。
- 阿基米德螺旋线在食品微生物学中用于通过螺旋盘量化细菌浓度。
绘制
用 canvas 绘制曲线,canvas 的坐标系是笛卡尔坐标系,需要做一个转换。
由上面的图可知取一个点有下面的数学转换关系:
x = rcos(θ)
y = rsin(θ)
θ = arctan(y/x)
结合极坐标系的公式可得:
x = (a + bθ)cos(θ)
y = (a + bθ)sin(θ)
这是示例,绘制主要逻辑代码:
function draw() {let a = 0, b = 10, angle = 0;let x = 0, y = 0, points = [];const acceleration = 0.1, circleNum = 2;// 注意这里角度的递增,以 2 * Math.PI 为基准进行比较,控制画多少圈while (angle <= circleNum * 2 * Math.PI) {x = (a + b * angle) * Math.cos(angle);y = (a + b * angle) * Math.sin(angle);points.push([x, y]);angle = angle + acceleration;}// 实现把点绘制成线的方法line({ points: points});
}
改变其中的参数,会产生很多不同的图形,有的看起来并不是曲线。
参考资料
- Archimedean spiral Wiki
- Archimedean spiral Wolfram MathWorld
- Archimedean Spiral Plane Curves
- 螺旋线
JavaScript 数学曲线—阿基米德螺线相关推荐
- 强大的Python-使用NumPy和Matplotlib绘制数学(双纽线,阿基米德螺线,心形线)
强大的Python-使用NumPy和Matplotlib绘制数学(双纽线,阿基米德螺线,心形线) NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度 ...
- 在Matlab中绘制阿基米德螺线
1.数学表达式 阿基米德螺线(Archimedean spiral),亦称"等速螺线".当一点P沿动射线OP以等速率运动的同时,这射线又以等角速度绕点O旋转,点P的轨迹称为&quo ...
- matlab上阿基米德线的切线,基于数学软件的阿基米德螺线切线计算与分析
要:通过运用数学软件,按照中学课程中导数求解的思路,简便实现阿基米德螺线切线的计算,并对验证结果进行分析得出结论,为拓展中学数学教学方法提供参考. 关键词:阿基米德螺线 导数 数学教学 Mathema ...
- Matplotlib复习(1)——绘制三角函数曲线、正态分布曲线、圆锥曲线、极坐标方程(心形线、玫瑰线、阿基米德螺线)、3D图(球、马鞍面)
文章目录 0 前置 1 基础API--绘制三角函数曲线 2 图例.注释.文本--绘制正态分布曲线 3 轮廓--绘制圆锥曲线 4 绘制极坐标方程(心形线.玫瑰线.阿基米德螺线) 5 3D图(球.马鞍面) ...
- 考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)
<张宇基础30讲>第一讲的几张极坐标图象,这里用Python来实现一下,加深理解,并学习绘制极坐标图像. 1.笛卡尔心形线 公式: import numpy as np import ma ...
- python画笛卡尔心形线方程_考研数学——Python绘制极坐标图,画笛卡尔心形线、玫瑰线、阿基米德螺线、伯努利双纽线(加深图像理解)...
<张宇基础30讲>第一讲的几张极坐标图象,这里用Python来实现一下,加深理解,并学习绘制极坐标图像. 1.笛卡尔心形线 公式: import numpy as np import ma ...
- java阿基米德螺线_阿基米德螺线图形设计_java基础实验报告.doc
阿基米德螺线图形设计_java基础实验报告.doc 南京工程学院实验报告课程名称JAVA基础实验项目名称图形用户界面设计实验题目阿基米德螺线图形设计实验学生班级网络132实验学生姓名薛康威学号2021 ...
- 使用阿基米德螺线进行数据可视化
最近开发了一个新的R包spiralize,可以使用阿基米德螺线对数据进行可视化.在数据可视化中,螺线具有以下两个优点:1. 可以可视化具有非常长的数据轴的数据,同时能够提高可视化的分辨率:2.可以有效 ...
- java阿基米德螺线_JavaScript图形实例:阿基米德螺线
1.阿基米德螺线 阿基米德螺线亦称"等速螺线".当一点P沿动射线OP以等速率运动的同时,该射线又以等角速度绕点O旋转,点P的轨迹称为"阿基米德螺线". 阿基米德 ...
最新文章
- swift 基础学习之属性修饰符
- Lucene 中的Tokenizer, TokenFilter学习
- 数据库MySQL关系模型之关系代数
- 读取笔记本的摄像头的原始yuv数据,通过libav(ffmpeg编码)
- Adobe Air 写文件如何换行
- 少儿计算机兴趣小组活动记录,2013年度儿童画兴趣小组活动记录Word编辑
- ajax post 提交无法进入controller 请求200
- Path画直线与弧线
- 【clickhouse】clickhouse TCP 方式发送数据 ClickHouse-Native-JDBC
- DRL实战 : Dynamic Programming
- Mock Server入门及实践
- 电路串联和并联图解_电路的串联和并联有什么区别
- Web 开发框架 — Express 精讲(安装使用、静态托管、路由处理、中间件的使用)
- 第四章web服务器之httpd
- 转:NO.523 Aidan HawkenCarina Round - Walking Blind
- oracle对应字符集汇总,Oracle字符集子集与超级的对应关系
- SEC官员:ICO指南即将发布
- catia 基本绘图工具
- Jexus V5.0 正式发布
- NB-IOT实现万物互联设计思路分享 (从硬件到单片机到云平台)