JavaScript 数学曲线—等角螺线
引子
继阿基米德螺线之后,发现等角螺线。
- Origin
- My GitHub
简介
等角螺线又称为黄金螺线或对数螺线,1638 年 Descartes 发现了等角螺线,后来 Jakob Bernoulli 研究发现了等角螺线自再造的特性,Jakob Bernoulli 对螺线非常着迷,以至于他要求刻在自己的墓碑上,并附词 “eadem mutata resurgo”(“纵使改变,依然故我”)。最后,Torricelli 独立完成了这项工作,并找到了曲线的长度。
等角螺线名称的由来,由于其特性:在螺线上任取一点 A ,该点与极坐标极点相连形成的直线,与该点的切线形成的夹角为定值。
在极坐标系中公式描述:
公式说明:
- r :与原点的距离。
- a :常数。
- b :常数。
- e :常数。
- θ :与 x 轴的角度。
自然现象有:
- 鹦鹉螺的贝壳像等角螺线。
- 菊的种子排列成等角螺线。
- 昆虫以等角螺线的方式接近光源。
- 旋涡星系的旋臂差不多是等角螺线。
- 低气压(热带气旋、温带气旋等)的外观像等角螺线
绘制
用 canvas 绘制曲线,canvas 的坐标系是笛卡尔坐标系,需要做一个转换。
由上面的图可知取一个点有下面的数学转换关系:
x = rcos(θ)
y = rsin(θ)
θ = arctan(y/x)
结合极坐标系的公式可得:
这是示例,绘制主要逻辑代码:
function draw() {let a = 0.1, b = 0.3, angle = 0;let x = 0, y = 0, points = [];const acceleration = 0.1, circleNum = 4;// 注意这里角度的递增,以 2 * Math.PI 为基准进行比较,控制画多少圈while (angle <= circleNum * 2 * Math.PI) {const anglePow = Math.pow(Math.E, b * angle);x = a * anglePow * Math.cos(angle);y = a * anglePow * Math.sin(angle);points.push([x, y]);angle = angle + acceleration;}// 实现把点绘制成线的方法line({ points: points});
}
参考资料
- Golden spiral Wiki
- Logarithmic Spiral
- Equiangular Spiral
- 等角螺线
JavaScript 数学曲线—等角螺线相关推荐
- JavaScript 数学曲线—阿基米德螺线
引子 最近在研究曲线运动的时候,尝试了用 AI 导出的 SVG 路径之后,发现有些还是回归到数学中更合适一些.搜集了一些资料,尝试后总结一下. Origin My GitHub 简介 阿基米德螺旋是以 ...
- JavaScript 数学曲线—心形线
引子 继双角线,接着尝试心形线(Cardioid). Origin My GitHub 简介 Cardioid 是 Castillon 在 1741 年<Philosophical Transa ...
- JavaScript 数学曲线—星形线
引子 继连锁螺线,接着尝试星形线(Astroid). Origin My GitHub 简介 Johann Bernoulli 在 1691-1692 年首次讨论了星形线.它也出现在 Leibniz ...
- JavaScript数学,四舍五入到小数点后两位[重复]
本文翻译自:JavaScript math, round to two decimal places [duplicate] This question already has answers her ...
- 用 python 拟合等角螺线
文章目录 飞蛾为什么要扑火? 螺线及等角螺线 绘制等角螺线 拟合等角螺线 飞蛾为什么要扑火? 暗梁闻语燕,夜烛见飞蛾. 飞蛾绕残烛,半夜人醉起. 人类很早就注意到飞蛾扑火这一奇怪的现象,并且自作主张地 ...
- math.js:灵活强大的JavaScript数学库
最近为期权开发一些基本技术指标,用到一些C++的数学库,刚好看到JavaScript的math.js库,这里对math.js做一下简单介绍. 一.什么是math.js math.js是一个广泛应用于J ...
- JavaScript数学运算(取整,取余和取模)
来源 | https://www.fly63.com 这篇文章主要介绍js取整.取余和取模的实现方法和它们之间的区别,以及Math对象的常用方法函数介绍,有需要的朋友可以参考下. 取整 在项目开发过程 ...
- 图解VC++绘制数学曲线
工具: http://blog.csdn.net/bcbobo21cn/article/details/44200205 demo工程: http://pan.baidu.com/s/1kVEkDnT ...
- python画数学曲线_python学习笔记28:画函数曲线图
1. 画单条线 import numpy as np import math import matplotlib.pyplot as plt x = np.arange(-10, 10, 0.1) # ...
最新文章
- vmware上给根分区增加空间以及创建逻辑卷
- PCL:关于pcd数据显示乱码
- 03-JDBC连接MySQL数据库【插入数据】
- QQ2009任务栏的QQ图标怎么隐藏
- gpio 树莓派3a+_树莓派4上市:性能飙升起售价依然是35美元
- 单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率
- html5培训后就业容易吗?
- 桶排序,冒泡排序,快速排序三者比较(例子说名)
- NLP Prompt范式,两种主要类型:填充文本字符串空白的完形填空(Cloze)prompt,和用于延续字符串前缀的前缀 (Prefix) prompt。
- TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head forObject Detection on Drone-captur
- 【笔记分享】Android TV 红外蓝牙遥控器添加
- 密码学系列之四:一文搞懂序列密码
- 研发人员专用表情包上架了
- python判断成年_用python判断你是青少年还是老年人
- 数据库驱动和JDBC
- 【博客汇总】UV打印机常见问题汇总(更新中...)
- 诺基亚裁员背水一战:腹背受敌押宝WP手机
- 顺丰科技笔试问题之最多的分值个数问题
- Origin如何进行单段和多段的线性拟合
- 知不足者好学耻下问者自满_对抗开发人员自满情绪的有效方法