回顾2D绘图的数学知识

本篇旨在帮助开发人员回顾在2D图形编程中可能会涉及到的数学知识。

1. 矩形

矩形面积 S = 长 ∗ 宽 S = 长 * 宽 S=

矩形周长 C = 2 ∗ ( 长 + 宽 ) C = 2 * ( 长 + 宽) C=2(+)

2. 两点间的距离

在直角坐标系中,设两个点A、B以及坐标分别为 A ( x 1 , y 1 ) A(x1,y1) A(x1,y1) B ( x 2 , y 2 ) B(x2,y2) B(x2,y2) ,则A和B两点之间的距离为:

∣ A B ∣ = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 \left | AB \right |=\sqrt{ {(x1-x2)}^2 + {(y1-y2)}^2 } AB=(x1x2)2+(y1y2)2

3. 圆

通常使用 r r r表示圆的半径;

圆的面积 S = π r 2 S = {\pi}r^2 S=πr2

圆的周长 C = 2 π r C = 2{\pi}r C=2πr

当圆心坐标为(0,0)时,圆的方程式为:

x 2 + y 2 = r 2 x^2 + y^2 = r^2 x2+y2=r2,表示的曲线是以O(0,0)为圆心,以r为半径的圆。

当圆心坐标不为(0,0)时,圆的方程式为:

( x − a ) 2 + ( y − b ) 2 = r 2 (x - a)^2 + (y - b)^2 = r^2 (xa)2+(yb)2=r2 表示的曲线是以O(a,b)为圆心,以r为半径的圆。

4. 弧度与角度

弧度是基于圆的半径的纯计量单位,当角度以弧度给出时,通常不写弧度单位,或有时记为rad

弧度是指在一个圆中,弧长和半径之比,即: ∣ 弧度 ∣ = 弧长 ÷ 半径 \left | 弧度 \right |=弧长\div半径 弧度=弧长÷半径
在这里插入图片描述

我们知道,一个圆的周长为 2 π r 2{\pi}r 2πr,所以可得一个圆的弧度为 2 π r r = 2 π \frac{2{\pi}r}{r}=2\pi r2πr=2π

已知一个圆的角度是 36 0 ∘ 360^{\circ} 360,所以 36 0 ∘ = = 2 π 360^{\circ}==2{\pi} 360==2π

由此可知二者转换关系为:

1 ∘ = π 180 r a d 1^{\circ} =\frac{\pi}{180} rad 1=180πrad

1 r a d = ( 180 π ) ∘ 1 rad = (\frac{180}{\pi})^{\circ} 1rad=(π180)

5. 三角形

若三角形的三边分别为a,b,c,其中c为底边,高为h,三角分别为A( α \alpha α),B( β \beta β),C( γ \gamma γ),如下图所示,在△ABC中

面积 S = 1 2 c h S = \frac{1}{2} ch S=21ch

周长 C = a + b + c C = a + b + c C=a+b+c

三角形的三个角相加永远是 18 0 ∘ 180^{\circ} 180,即 α + β + γ = 18 0 ∘ \alpha+\beta+\gamma=180^{\circ} α+β+γ=180,因此等边三角形的每个角都是 6 0 ∘ 60^{\circ} 60

5.1 正弦/余弦/正切

正弦、余弦和正切是基于直角三角形而建立的。
在这里插入图片描述

sin ⁡ ( θ ) = 对边 斜边 \sin(\theta)=\frac{对边}{斜边} sin(θ)=斜边对边

cos ⁡ ( θ ) = 邻边 斜边 \cos(\theta)=\frac{邻边}{斜边} cos(θ)=斜边邻边

tan ⁡ ( θ ) = 对边 邻边 \tan(\theta)=\frac{对边}{邻边} tan(θ)=邻边对边

cot ⁡ ( θ ) = 邻边 对边 \cot(\theta)=\frac{邻边}{对边} cot(θ)=对边邻边

5.2 余弦定理

对于任意三角形,任何一边的平方等于其他两边平方的和减去这两边与它们夹角的余弦的积的两倍。

c 2 = a 2 + b 2 − 2 a b cos ⁡ γ c^2 = a^2 + b^2 - 2ab\cos\gamma c2=a2+b22abcosγ

5.3 勾股定理

直角三角形的两条直角边的长度的平方和等于斜边长的平方。

c 2 = a 2 + b 2 c^2=a^2+b^2 c2=a2+b2

已知 cos ⁡ ( 9 0 ∘ ) = 0 \cos(90^{\circ})=0 cos(90)=0,结合余弦定理,可以知道勾股定理是余弦定理的特定情况。

6. 正弦曲线

水平方向和垂直方向同时做正弦运动,就得到了圆周运动。

标准的正弦曲线函数是 y = sin ⁡ ( x ) y=\sin(x) y=sin(x) ,下图是一个标准的正弦曲线:

与正弦曲线相关的概念有:

6.1 周期

周期:从一个顶点到另一个顶点的距离,标准正弦曲线的周期是 2 π 2\pi 2π

6.2 振幅

振幅:从中线(X轴)到顶点的距离,如上图所示。

6.3 相移

相移:曲线的左右平移,如下图所示。

6.4 垂直位移

垂直位移:曲线的上下平移,如下图所示。

6.5 伸缩变换

下图分别绘制了 y = sin ⁡ ( x ) y=\sin(x) y=sin(x) y = sin ⁡ ( 1 2 x ) y=\sin(\frac{1}{2}x) y=sin(21x) y = sin ⁡ ( 2 x ) y=\sin(2x) y=sin(2x)的图像。

从上图可知, x x x 所乘以的系数对应曲线周期缩小的倍数。

6.6 平移变换

正弦曲线的平移变换遵循“左加右减,上加下减”的规则。

实例

下图展示了从 y = sin ⁡ ( 2 x ) y=\sin(2x) y=sin(2x) 变换到 y = sin ⁡ ( 2 x + π 3 ) − 1 y=\sin(2x+\frac{\pi}{3})-1 y=sin(2x+3π)1 的过程。

6.7 综合变换

正弦曲线可表示为 y = A sin ⁡ ( ω x + φ ) + k y=A\sin({\omega}x+\varphi)+k y=Asin(ωx+φ)+k

下图演示了从 y = sin ⁡ ( x ) y=\sin(x) y=sin(x) 变换到 y = 2 sin ⁡ ( 2 x + π 4 ) + 1 y=2\sin(2x+\frac{\pi}{4})+1 y=2sin(2x+4π)+1 的过程。

7. 椭圆

椭圆(Ellipse)是平面内到定点F1、F2的距离之和等于常数(大于 ∣ F 1 F 2 ∣ |F1F2| F1F2∣)的动点P的轨迹,F1、F2称为椭圆的两个焦点。

其数学表达式为:

∣ P F 1 ∣ + ∣ P F 2 ∣ = 2 a |PF1|+|PF2|=2a PF1∣+PF2∣=2a

两焦点F1、F2的距离 ∣ F 1 F 2 ∣ = 2 c |F1F2| = 2c F1F2∣=2c

7.1 椭圆方程式

我们始终用 a a a表示长半轴,用 b b b表示短半轴,即上图的焦点在X轴时, a a a位于X轴,若焦点在Y轴则 a a a位于Y轴。

当两个焦点在X轴时,标准方程为: x 2 a 2 + y 2 b 2 = 1 \frac{x^2}{a^2} + \frac{y^2}{b^2} = 1 a2x2+b2y2=1

当两个焦点在Y轴时,标准方程为: y 2 a 2 + x 2 b 2 = 1 \frac{y^2}{a^2} + \frac{x^2}{b^2} = 1 a2y2+b2x2=1

7.2 椭圆面积

椭圆面积 S = π a b S = \pi ab S=πab

7.3 相关公式

b 2 = a 2 − c 2 b^2 = a^2 - c^2 b2=a2c2

证明如下:

由两点间的距离公式可得:

∣ P F 1 ∣ = ( x + c ) 2 + y 2 |PF1| = \sqrt{(x+c)^2+y^2} PF1∣=(x+c)2+y2

∣ P F 2 ∣ = ( x − c ) 2 + y 2 |PF2| = \sqrt{(x-c)^2+y^2} PF2∣=(xc)2+y2

又因为 ∣ P F 1 ∣ + ∣ P F 2 ∣ = 2 a |PF1|+|PF2|=2a PF1∣+PF2∣=2a,即:

( x + c ) 2 + y 2 + ( x − c ) 2 + y 2 = 2 a \sqrt{(x+c)^2+y^2}+\sqrt{(x-c)^2+y^2}=2a (x+c)2+y2 +(xc)2+y2 =2a

表达式化简后:

( x + c ) 2 + y 2 = 2 a − ( x − c ) 2 + y 2 \sqrt{(x+c)^2+y^2}=2a-\sqrt{(x-c)^2+y^2} (x+c)2+y2 =2a(xc)2+y2

( x + c ) 2 + y 2 = ( 2 a − ( x − c ) 2 + y 2 ) 2 (x+c)^2+y^2=(2a-\sqrt{(x-c)^2+y^2})^2 (x+c)2+y2=(2a(xc)2+y2 )2

继续展开和化简,最终可得:

x 2 a 2 + y 2 a 2 − c 2 = 1 \frac{x^2}{a^2} + \frac{y^2}{a^2-c^2}=1 a2x2+a2c2y2=1

参考椭圆的公式可得:

b 2 = a 2 − c 2 b^2 = a^2 - c^2 b2=a2c2

7.4 椭圆上任意角度点的坐标

上图焦点位于X轴,由椭圆方程式可得:

x 2 a 2 + y 2 b 2 = 1 \frac{x^2}{a^2}+\frac{y^2}{b^2}=1 a2x2+b2y2=1

由正切函数可得: y = x tan ⁡ ( θ ) y=x\tan(\theta) y=xtan(θ)

y y y 代入上面表达式可得:

x 2 a 2 + ( x tan ⁡ ( θ ) ) 2 b 2 = 1 \frac{x^2}{a^2}+\frac{(x\tan(\theta))^2}{b^2}=1 a2x2+b2(xtan(θ))2=1

最终求得:

x 2 = a 2 b 2 b 2 + a 2 ( tan ⁡ θ ) 2 x^2=\frac{a^2b^2}{b^2+a^2(\tan\theta)^2} x2=b2+a2(tanθ)2a2b2

x x x 可以为正/负值,需要根据角度决定正负。


本文最初发布在我的个人站点,也将优先更新在个人站点上。

https://jiangxueqiao.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/601051.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL探索之旅】数据库设计以及聚合查询

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…

测试必备:网站崩溃原因大揭秘!12种常见问题一网打尽

网站崩溃是研发团队最怕看到的情况,但是由于种种原因却时常出现,作为测试人员,我们更应该比一般人了解网站崩溃的原因及排查方法,这是我们测试工作的重要一环。接下来我就谈谈12种常见的网站崩溃原因以及如何跟踪和解决它们。 你的…

Stable Diffusion——SDXL Turbo让 AI 出图速度提高10倍

摘要 在本研究中,我们提出了一种名为对抗扩散蒸馏(ADD)的创新训练技术,它能够在1至4步的采样过程中,高效地对大规模基础图像扩散模型进行处理,同时保持图像的高质量。该方法巧妙地结合了分数蒸馏技术&…

光谱共焦传感器:揭秘非接触测厚绝技

在工业测量和检测的世界里,准确性和效率始终是追求的焦点。想象一下,当您面对堆积如山的工件,需要测量它们的厚度,而传统方法不仅耗时费力,还可能因为接触式测量而损伤材料表面时,那种无奈与焦虑是否涌上心…

STM32-看门狗

1、看门狗是什么:就是一个向下定时器,定时时间一到,就会触发一个向下的复位的中断,使单片机开始工作 2、作用:MCU微控制器构成的微型计算机系统中,由于微控制器的工作常常会受到来自外界电磁场的干 扰,造成…

记一次渗透测试(2)

内网渗透 centos上线msf 这里因为是linux的原因,就不使用cs上线的打法了,先生成一个linux的payload上线到msf use exploit/multi/script/web_delivery set lhost 192.168.1.10 set lport 4444 set target 7 run 运行之后会给出一个payload use expl…

【面试题】如何在亿级别用户中检查用户名是否存在?

前言 不知道大家有没有留意过,在使用一些app或者网站注册的时候,提示你用户名已经被占用了,比如我们熟知的《英雄联盟》有些人不知道取啥名字,干脆就叫“不知道取啥名”。 但是有这样困惑的可不止他一个,于是就出现了“…

TypeScript系列之-理解TypeScript类型系统画图讲解

TypeScript的输入输出 如果我们把 Typescript 编译器看成一个黑盒的话。其输入则是使用 TypeScript 语法书写的文本或者文本集合。 输出是编译之后的 JS 文件 和 .d.ts 的声明文件 其中 JS 是将来需要运行的文件(里面是没有ts语法,有一个类型擦除的操作)&#xff0…

openGauss学习笔记-258 openGauss性能调优-使用Plan Hint进行调优-指定子查询不展开的Hint

文章目录 openGauss学习笔记-258 openGauss性能调优-使用Plan Hint进行调优-指定子查询不展开的Hint258.1 功能描述258.2 语法格式258.3 示例 openGauss学习笔记-258 openGauss性能调优-使用Plan Hint进行调优-指定子查询不展开的Hint 258.1 功能描述 数据库在对查询进行逻辑…

使用Code开发Django_模版和CSS

转到定义 和 查看定义 在使用Django或任何其他库的过程中,我们可能需要检查这些库中的代码。VS Code提供了两个方便的命令,可以直接导航到任何代码中的类和其他对象的定义: 转到定义 在Python开发环境中,我们可以轻松地对函数、类…

【LeetCode热题100】32. 最长有效括号(动态规划)

一.题目要求 给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 二.题目难度 困难 三.输入样例 示例 1: 输入:s “(()” 输出:2 解释:最长有效括号子…

物联网行业趋势——青创智通

工业物联网解决方案-工业IOT-青创智通 随着科技的不断进步和应用场景的日益扩大,物联网行业呈现出迅猛发展的势头。作为当今世界最具前瞻性和战略意义的领域之一,物联网行业的趋势和未来发展值得深入探讨。 ​一、物联网行业正逐渐实现全面普及。随着物…