引子

继阿基米德螺线之后,发现等角螺线。

  • 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 数学曲线—等角螺线相关推荐

  1. JavaScript 数学曲线—阿基米德螺线

    引子 最近在研究曲线运动的时候,尝试了用 AI 导出的 SVG 路径之后,发现有些还是回归到数学中更合适一些.搜集了一些资料,尝试后总结一下. Origin My GitHub 简介 阿基米德螺旋是以 ...

  2. JavaScript 数学曲线—心形线

    引子 继双角线,接着尝试心形线(Cardioid). Origin My GitHub 简介 Cardioid 是 Castillon 在 1741 年<Philosophical Transa ...

  3. JavaScript 数学曲线—星形线

    引子 继连锁螺线,接着尝试星形线(Astroid). Origin My GitHub 简介 Johann Bernoulli 在 1691-1692 年首次讨论了星形线.它也出现在 Leibniz ...

  4. JavaScript数学,四舍五入到小数点后两位[重复]

    本文翻译自:JavaScript math, round to two decimal places [duplicate] This question already has answers her ...

  5. 用 python 拟合等角螺线

    文章目录 飞蛾为什么要扑火? 螺线及等角螺线 绘制等角螺线 拟合等角螺线 飞蛾为什么要扑火? 暗梁闻语燕,夜烛见飞蛾. 飞蛾绕残烛,半夜人醉起. 人类很早就注意到飞蛾扑火这一奇怪的现象,并且自作主张地 ...

  6. math.js:灵活强大的JavaScript数学库

    最近为期权开发一些基本技术指标,用到一些C++的数学库,刚好看到JavaScript的math.js库,这里对math.js做一下简单介绍. 一.什么是math.js math.js是一个广泛应用于J ...

  7. JavaScript数学运算(取整,取余和取模)

    来源 | https://www.fly63.com 这篇文章主要介绍js取整.取余和取模的实现方法和它们之间的区别,以及Math对象的常用方法函数介绍,有需要的朋友可以参考下. 取整 在项目开发过程 ...

  8. 图解VC++绘制数学曲线

    工具: http://blog.csdn.net/bcbobo21cn/article/details/44200205 demo工程: http://pan.baidu.com/s/1kVEkDnT ...

  9. python画数学曲线_python学习笔记28:画函数曲线图

    1. 画单条线 import numpy as np import math import matplotlib.pyplot as plt x = np.arange(-10, 10, 0.1) # ...

最新文章

  1. vmware上给根分区增加空间以及创建逻辑卷
  2. PCL:关于pcd数据显示乱码
  3. 03-JDBC连接MySQL数据库【插入数据】
  4. QQ2009任务栏的QQ图标怎么隐藏
  5. gpio 树莓派3a+_树莓派4上市:性能飙升起售价依然是35美元
  6. 单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率
  7. html5培训后就业容易吗?
  8. 桶排序,冒泡排序,快速排序三者比较(例子说名)
  9. NLP Prompt范式,两种主要类型:填充文本字符串空白的完形填空(Cloze)prompt,和用于延续字符串前缀的前缀 (Prefix) prompt。
  10. TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head forObject Detection on Drone-captur
  11. 【笔记分享】Android TV 红外蓝牙遥控器添加
  12. 密码学系列之四:一文搞懂序列密码
  13. 研发人员专用表情包上架了
  14. python判断成年_用python判断你是青少年还是老年人
  15. 数据库驱动和JDBC
  16. 【博客汇总】UV打印机常见问题汇总(更新中...)
  17. 诺基亚裁员背水一战:腹背受敌押宝WP手机
  18. 顺丰科技笔试问题之最多的分值个数问题
  19. Origin如何进行单段和多段的线性拟合
  20. 知不足者好学耻下问者自满_对抗开发人员自满情绪的有效方法

热门文章

  1. 利用C#进行AutoCAD的二次开发(二)
  2. Solidity语言学习——(五)
  3. 【IT名人堂】何云飞:阿里云数据库的架构演进之路
  4. 月薪 3万人民币是一种怎样的体验?做自媒体可以达到这种水平吗
  5. 【原创】Oracle CEO 埃里森 耶鲁演讲 (网易博客搬迁至此)
  6. Apache的安装和配置
  7. Apache Avro是什么?
  8. 华为:构建基础WLAN(无线局域网)
  9. 【十八】深拷贝与浅拷贝
  10. bzoj4418 [Shoi2013]扇形面积并