回顾2D绘图的数学知识

news2025/1/12 23:41:17

本篇旨在帮助开发人员回顾在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.coloradmin.cn/o/1578214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis中的集群(一)

集群 概述 Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能 节点 一个Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都…

X86汇编速成

平时用的电脑都是X86的,但是现在大家都在搞RISC-V,计组也都开始以RISC-V作为示例,所以专门回头来补一下X86的汇编,方便平时使用。 寄存器register X86_64中一共有16个64位的通用寄存器,分别为: RAX, RBX,…

vmware和ubuntu的问题与解决

1.问题与对策 最近使用vmware安装ubuntu16和ubuntu20,遇到了挺多的问题,如下 ubuntu在用过多次后,重启后登录用户名后会出现花屏的现象。 解决方案如下 在键盘上同时按键:Ctrl Alt F4,进入命令行模式,…

Ubuntu 20.04.06 PCL C++学习记录(十六)

[TOC]PCL中点云分割模块的学习 学习背景 参考书籍&#xff1a;《点云库PCL从入门到精通》以及官方代码PCL官方代码链接,&#xff0c;PCL版本为1.10.0&#xff0c;CMake版本为3.16 学习内容 用一组点云数据做简单的平面的分割 源代码及所用函数 源代码 #include<iostr…

C++设计模式:观察者模式(三)

1、定义与动机 观察者模式定义&#xff1a;定义对象间的一种1对多&#xff08;变化&#xff09;的依赖关系&#xff0c;以便当一个对象&#xff08;Subject&#xff09;的状态发生比改变时&#xff0c;所有依赖于它的对象都得到通知并且自动更新 再软件构建过程中&#xff0c…

STM32一个地址未对齐引起的 HardFault 异常

1. 概述 客户在使用 STM32G070 的时候&#xff0c;KEIL MDK 为编译工具&#xff0c;当编译优化选项设置为Level0 的时候&#xff0c;程序会出现 Hard Fault 异常&#xff0c;而当编译优化选项设置为 Level1 的时候&#xff0c;则程序运行正常。表面上看&#xff0c;这似乎是 K…

算法打卡day38|动态规划篇06| 完全背包理论基础|Leetcode 518.零钱兑换II、377. 组合总和 Ⅳ

目录 完全背包理论基础 完全背包问题描述 完全背包解法 算法题 Leetcode 518.零钱兑换II 个人思路 解法 动态规划 Leetcode 377. 组合总和 Ⅳ 个人思路 解法 动态规划 完全背包理论基础 完全背包问题描述 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是…

基于SSE长连接的智能客服问答系统技术方案及完整项目源码

文章目录 一、项目背景二、项目演示三、项目介绍B系统主要功能1. 注册登录重置密码2. 权限管理3. 项目管理4.客服管理 C系统主要功能1. 问答组件2. 主题色定制3. 类微信时间显示控件及智能tip提示4. 无障碍阅读4. 丰富的输入框组件5. 人工客服6. 聊天记录分表记录与查询 四、项…

【拓扑的基】示例及详解

集合X的某拓扑的一个基是X的子集的一个族(其成员称为基元素)&#xff0c;满足条件&#xff1a; 1. 2. 由基生成拓扑 由生成的拓扑(满足以上两个条件&#xff09; 等价描述&#xff1a; 由所有可表示为的某些成员的井的那些集合组成 例1: 证明&#xff1a;由生成的族确实是拓扑…

零代码与低代码开发平台

1、什么是低代码开发平台&#xff1f;什么是零代码开发平台&#xff1f; 零代码开发平台&#xff1a; 指的是不需要写代码就能够快速开发出业务应用/系统的平台。我们在工作中使用的业务应用&#xff0c;主要提供数据收集、数据处理、数据流转和展示等功能。零代码开发平台能够…

2005-2023年各省国内生产总值指数分季度数据

2005-2023年各省国内生产总值指数分季度数据 1、时间&#xff1a;2005-2023年 2、来源&#xff1a;国家统计局、各省统计局 3、指标&#xff1a;地区生产总值指数(上年同期100)_累计值(%) 4、范围&#xff1a;31省 5、时间跨度&#xff1a;季度 6、缺失情况&#xff1a;无…

Qt | Q_PROPERTY属性和QVariant 类

一、属性基础 1、属性与数据成员相似,但是属性可使用 Qt 元对象系统的功能。他们的主要差别在于存取方式不相同,比如属性值通常使用读取函数(即函数名通常以 get 开始的函数)和设置函数(即函数名通常以 set 开始的函数)来存取其值,除此种方法外,Qt 还有其他方式存取属性值…

比亚迪,学历大于一切

比亚迪 今天逛学生聚集地&#xff08;牛客网&#xff09;的时候&#xff0c;看到一篇前几天的帖子。 标题为「比亚迪&#xff0c;学历大于一切」。 这位发帖的同学指出&#xff0c;他曾在比亚迪工作&#xff0c;当时入职时级别为 G3/F1&#xff0c;目测自己工作三年也不一定能升…

【频繁模式挖掘】FP-Tree算法(附Python实现)

一、实验内容简介 该实验主要使用频繁模式和关联规则进行数据挖掘&#xff0c;在已经使用过Apriori算法挖掘频繁模式后&#xff0c;这次使用FP-tree算法来编写和设计程序&#xff0c;依然使用不同规模的数据集来检验效果&#xff0c;最后分析和探讨实验结果&#xff0c;看其是…

HarmonyOS 应用开发-使用colorPicker实现背景跟随主题颜色转换

介绍 本示例介绍使用image库以及effectKit库中的colorPicker对目标图片进行取色&#xff0c;将获取的颜色作为背景渐变色&#xff0c;通过swiper组件对图片进行轮播&#xff0c; 效果图预览 使用说明 直接进入页面&#xff0c;对图片进行左右滑动&#xff0c;或者等待几秒&a…

2014最新AI智能创作系统ChatGPT网站源码+Midjourney绘画网站源码+搭建部署教程文档,支持最近火爆的Suno-v3-AI音乐生成大模型

一、文章前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持…

鼠标经过切换项,切换显示对应的内容(js)

一、功能描述 有多个切换项&#xff0c;鼠标移到每一项时对应切换下面对应的内容&#xff0c;一项对应一项内容&#xff0c;并且切换选中的样式。 二、实现效果 以这个例子为例。 三、实现思路 1.获取所有切换项。 2.获取所有切换项内容。 3.定义好“move”样式&#xff0…

链表之双向链表的实现

铁汁们大家好&#xff0c;我们上一篇博客学习了单链表&#xff0c;这节课让我们继续往深学习&#xff0c;学习一下双线链表&#xff0c;话不多说&#xff0c;我们开始吧&#xff01; 目录 1.双向链表 2.顺序表和链表的优缺点 3.双向链表的实现 1.双向链表 1.我们要实现的双线…

IDEA中修改git的作者、邮箱名称

目录 一、查看当前git信息 1、查看git作者名称 如下图&#xff1a; 2、查看git邮箱信息 二、修改git信息 1、修改git作者名称 如下图&#xff1a; 2、修改git邮箱名称 一、查看当前git信息 1、查看git作者名称 在git控制台 或者 Terminal 输入 git config user.name …

蓝桥杯物联网竞赛_STM32L071_16_EEPROM

仍然是没有考过的知识点 朴素的讲就是板子中一块不会因为断电重启而导致数值初始化的一片地址 要注意的是有时候容易把板子什么写错导致板子什么地址写坏了导致程序无法烧录&#xff0c;这个时候记得一直按flash键烧录&#xff0c;烧录时会报错&#xff0c;点击确定&#xff0…