四边形内接于圆定理_「每日一题98」平行四边形内接于圆 看似简单 能说清楚 不简单...

d9201be8afa4372bbcee8950604c5984.png

98.如图1,平行四边形MNPQ的四个顶点内接于⊙O,MN=4,NP=5,R是NP边上的一个动点,QS⊥MR,垂足为点S,若MR=NP,

(1)求四边形PQRS的周长;

(2)求tan∠SPR的值.

e14c39d09a67d10609680e5775caf270.png

图1

分析

平行四边形MNPQ内接于⊙O=>矩形MNPQ

由已知=>Rt△MNR≌Rt△QSM=>勾股定理得NR=3=>求解周长

作ST⊥NP=>相似三角形=>求ST和TP=>tan∠SPR的值

实际操作

MNPQ是⊙O的内接四边形=>∠QMN+∠NPQ=180°

平行四边形MNPQ=>∠QMN=∠NPQ

所以∠QMN=∠NPQ=90°=>矩形MNPQ

(1)平行四边形MNPQ=>MQ∥NP

=>∠QMS=∠MRN,若MR=NP=MQ=5

=>Rt△MNR≌Rt△QSM

在Rt△MNR中,由勾股定理得NR=3,

所以NR=MS=3,MN=SQ=PQ=4,SR=RP=5-3=2,

四边形PQRS的周长=4+4+2+2=12;

(2)如图2,作ST⊥NP,垂足为T.

3507e2dec74094d3528283fbeac83eb9.png

图2

ST∥MN=>SR:RM=ST:MN=TR:NR

=>2:5=ST:4=TR:3

=>ST=8/5,TR=6/5,TP=16/5

=>tan∠SPR=ST:TP=1/2

本题知识点:圆内接平行四边形是矩形;圆内接四边形的性质;平行四边形的性质;平行线截线段成比例;相似三角形判定及性质;全等判定及性质;勾股定理;三角函数等。


关注“中考数学当百荟” 点击“了解更多”

回手一赞,美言千万。举手之劳,涌泉相报。


```cpp glDrawArrays(GL_TRIANGLE_FAN, 0, 4); ``` 这行代码用于 **使用当前已配置的顶点数据绘制一个平行四边形(或其他四边形)**,其原理是利用 OpenGL 的 `GL_TRIANGLE_FAN`(三角形扇)图元模式来将 4 个顶点组织成两个共享中心顶点的三角形。 下面我们详细解释这行代码的每个部分及其背后的机制。 --- ### 🔹 函数原型: ```cpp void glDrawArrays(GLenum mode, GLint first, GLsizei count); ``` #### 参数明: | 参数 | 含义 | |------|------| | `mode` | 绘制的图元类型(如点、线、三角形等) | | `first` | 从顶点数组中第几个顶点开始读取 | | `count` | 要渲染的顶点数量 | 对应你这行代码: ```cpp glDrawArrays(GL_TRIANGLE_FAN, 0, 4); ``` 即: - 使用 **三角形扇(Triangle Fan)** 模式 - 从第 `0` 个顶点开始 - 共使用 `4` 个顶点 --- ## ✅ 重点:什么是 `GL_TRIANGLE_FAN`? `GL_TRIANGLE_FAN` 是一种特殊的三角形组装方式,非常适合绘制 **凸多边形**,比如矩形、平行四边形、五边形等。 ### 📐 工作原理: 在 `GL_TRIANGLE_FAN` 模式下: - 第一个顶点作为“中心点”或“公共顶点” - 每后续一个顶点与前一个顶点和第一个顶点组成一个三角形 #### 对于 4 个顶点:V0, V1, V2, V3 会生成以下两个三角形: | 三角形编号 | 三个顶点 | |-----------|---------| | Triangle 0 | V0 → V1 → V2 | | Triangle 1 | V0 → V2 → V3 | > 🔍 所有三角形都共享第一个顶点 V0 图形结构如下(想象为顺时针排列): ``` V3 +-----+ V2 | /| | / | | / | | / | |/ | V0 +-----+ V1 ``` 但实际上更像一个“扇子”展开的样子: ``` V2 /|\ / | \ / | \ / | \ V3 V0 V1 ``` 所以只要四个顶点按顺序围绕中心分布,就能形成一个四边形(包括平行四边形)。 --- ### 💡 示例:用 `GL_TRIANGLE_FAN` 绘制平行四边形 假设你的顶点数据定义如下(按顺时针或逆时针绕 V0 排列): ```cpp float vertices[] = { 0.0f, 0.0f, 0.0f, // V0 - 中心/起点 1.0f, 0.0f, 0.0f, // V1 1.5f, 1.0f, 0.0f, // V2 0.5f, 1.0f, 0.0f // V3 }; ``` 调用: ```cpp glDrawArrays(GL_TRIANGLE_FAN, 0, 4); ``` OpenGL 将自动构建: - 三角形 1: V0–V1–V2 → 底部右半 - 三角形 2: V0–V2–V3 → 上部左半 最终拼成一个完整的平行四边形。 --- ### ✅ 为什么适合画平行四边形? 因为平行四边形是一个凸四边形,可以用两个三角形完美覆盖。而 `GL_TRIANGLE_FAN` 正好提供了一种简洁的方式,只需 4 个顶点即可完成绘制,无需重复数据或额外索引。 > ⚠️ 注意:顶点顺序必须是环绕同一个方向(通常是逆时针),否则可能导致背面剔除问题。 --- ### 🔄 对比其他绘制模式 | 模式 | 明 | 是否适合四边形 | |------|------|----------------| | `GL_TRIANGLES` | 每 3 个顶点构成一个独立三角形<br>需要 6 个顶点(或配合 EBO) | ✅ 可以,但冗余 | | `GL_TRIANGLE_STRIP` | 每新增一个顶点与前两个组成三角形<br>效率高,适合长条形 | ✅ 更高效地画四边形 | | `GL_QUADS` | 已废弃(OpenGL 3.1+ 不支持) | ❌ 不可用 | | `GL_TRIANGLE_FAN` | 所有三角形共享第一个顶点 | ✅ 非常适合扇形或四边形 | 📌 所以 `GL_TRIANGLE_FAN` 是一种简单直观的方式来绘制以某一点为中心发散的形状。 --- ### ⚠️ 常见问题与注意事项 | 问题 | 解释 | |------|------| | 图形不显示 | 可能是顶点顺序错误导致法线反向,被背面剔除(cull face)丢弃 | | 显示异常(缺口) | 确保启用了正确的顶点属性(`glEnableVertexAttribArray`) | | 只画出一个三角形 | 确认传入的是 `4` 个顶点,不是 `3` | | 性能考虑 | 若频繁绘制复杂网格,建议使用 `GL_ELEMENT_ARRAY_BUFFER` + `glDrawElements` 更灵活 | --- ### 🧪 完整使用上下文示例 ```cpp // 绑定 VAO(包含 VBO 和属性设置) glBindVertexArray(VAO); // 设置了 glVertexAttribPointer(0, ...) 并 glEnableVertexAttribArray(0) // 开始绘制 glDrawArrays(GL_TRIANGLE_FAN, 0, 4); // 使用前 4 个顶点,以扇形方式绘制 // 解绑 glBindVertexArray(0); ``` 此时 GPU 会: 1. 从绑定的 VBO 中读取 4 个顶点 2. 按照 `GL_TRIANGLE_FAN` 规则组装成两个三角形 3. 送入光栅化管线进行渲染 --- ### 总结 ```cpp glDrawArrays(GL_TRIANGLE_FAN, 0, 4); ``` ✅ 实现了: - 使用 **4 个顶点** 绘制一个完整的四边形(如平行四边形) - 利用 **三角形扇模式** 自动分割为两个共享顶点的三角形 - 简化了顶点数据结构,避免使用索引缓冲(EBO) 📌 特别适用于绘制: - 矩形、菱形、梯形、扇形区域等凸四边形 - UI 元素、图标、简单几何体 但它也有一些限制: - 必须有一个“中心”或“起始”顶点 - 不适合凹多边形 - 顶点顺序敏感 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值