当前位置: 首页 > news >正文

百度云可以做网站吗微信购物商城小程序

百度云可以做网站吗,微信购物商城小程序,图片加文字在线制作,外贸都有哪些平台笛卡尔坐标系的任意移动与旋转详解 文章目录笛卡尔坐标系的任意移动与旋转详解**1. 笛卡尔坐标系基础****2. 坐标变换原理****2.1 平移变换****2.2 旋转变换****3. 组合变换**Python仿真与动态展示**动画说明**#xff1a;**关键数学原理**#xff1a;1. 笛卡尔坐标系基础 笛…笛卡尔坐标系的任意移动与旋转详解 文章目录笛卡尔坐标系的任意移动与旋转详解**1. 笛卡尔坐标系基础****2. 坐标变换原理****2.1 平移变换****2.2 旋转变换****3. 组合变换**Python仿真与动态展示**动画说明****关键数学原理**1. 笛卡尔坐标系基础 笛卡尔坐标系用(x,y)(x,y)(x,y)表示平面内任意点的位置原点为(0,0)(0,0)(0,0)。几何图形可视为点的集合。 2. 坐标变换原理 2.1 平移变换 将图形整体移动(tx,ty)(t_x, t_y)(tx​,ty​) {x′xtxy′yty\begin{cases} x x t_x \\ y y t_y \end{cases}{x′xtx​y′yty​​ 矩阵形式 [x′y′][xy][txty]\begin{bmatrix} x \\ y \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \begin{bmatrix} t_x \\ t_y \end{bmatrix} [x′y′​][xy​][tx​ty​​] 2.2 旋转变换 绕原点旋转逆时针为正方向 {x′xcos⁡θ−ysin⁡θy′xsin⁡θycos⁡θ\begin{cases} x x \cos \theta - y \sin \theta \\ y x \sin \theta y \cos \theta \end{cases}{x′xcosθ−ysinθy′xsinθycosθ​ 矩阵形式 [x′y′][cos⁡θ−sin⁡θsin⁡θcos⁡θ][xy]\begin{bmatrix} x \\ y \end{bmatrix} \begin{bmatrix} \cos \theta -\sin \theta \\ \sin \theta \cos \theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} [x′y′​][cosθsinθ​−sinθcosθ​][xy​] 绕任意点(cx,cy)(c_x, c_y)(cx​,cy​)旋转 平移使旋转中心到原点绕原点旋转平移回原位置 [x′y′][cos⁡θ−sin⁡θsin⁡θcos⁡θ][x−cxy−cy][cxcy]\begin{bmatrix} x \\ y \end{bmatrix} \begin{bmatrix} \cos \theta -\sin \theta \\ \sin \theta \cos \theta \end{bmatrix} \begin{bmatrix} x - c_x \\ y - c_y \end{bmatrix} \begin{bmatrix} c_x \\ c_y \end{bmatrix} [x′y′​][cosθsinθ​−sinθcosθ​][x−cx​y−cy​​][cx​cy​​] 3. 组合变换 复杂变换可分解为平移与旋转的序列操作矩阵乘法满足结合律 TtotalTtranslate⋅RrotateT_{\text{total}} T_{\text{translate}} \cdot R_{\text{rotate}}Ttotal​Ttranslate​⋅Rrotate​ Python仿真与动态展示 import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation from matplotlib.patches import Polygon import matplotlib# 设置全局字体大小 matplotlib.rcParams.update({font.size: 12})# 定义三角形顶点 (齐次坐标) triangle np.array([[0, 0, 1], [1, 0, 1], [0.5, 1, 1]])# 变换矩阵函数 def translation_matrix(tx, ty):return np.array([[1, 0, tx],[0, 1, ty],[0, 0, 1]])def rotation_matrix(theta):c, s np.cos(theta), np.sin(theta)return np.array([[c, -s, 0],[s, c, 0],[0, 0, 1]])def rotation_around_point(theta, cx, cy):T1 translation_matrix(-cx, -cy)R rotation_matrix(theta)T2 translation_matrix(cx, cy)return T2 R T1# 创建三个独立的画布 fig1, ax1 plt.subplots(figsize(8, 6)) fig2, ax2 plt.subplots(figsize(8, 6)) fig3, ax3 plt.subplots(figsize(8, 6))# 设置每个画布的标题和坐标范围 fig1.suptitle(平移变换演示, fontsize16) fig2.suptitle(绕原点旋转变换演示, fontsize16) fig3.suptitle(绕任意点旋转变换演示, fontsize16)# 设置坐标范围 for ax in [ax1, ax2, ax3]:ax.set_xlim(-3, 4)ax.set_ylim(-3, 4)ax.grid(True, linestyle--, alpha0.7)ax.set_aspect(equal)ax.set_xlabel(X轴)ax.set_ylabel(Y轴)# 初始化每个画布的三角形 triangle1 Polygon(triangle[:, :2], fillNone, edgecolorblue, linewidth2.5, alpha0.9) triangle2 Polygon(triangle[:, :2], fillNone, edgecolorblue, linewidth2.5, alpha0.9) triangle3 Polygon(triangle[:, :2], fillNone, edgecolorblue, linewidth2.5, alpha0.9)ax1.add_patch(triangle1) ax2.add_patch(triangle2) ax3.add_patch(triangle3)# 添加顶点标签 def add_vertex_labels(ax, vertices):ax.text(vertices[0, 0], vertices[0, 1], A, fontsize14, haright, vabottom, weightbold, colordarkred, bboxdict(facecolorwhite, alpha0.7, edgecolornone, boxstyleround,pad0.2))ax.text(vertices[1, 0], vertices[1, 1], B, fontsize14, haleft, vabottom, weightbold, colordarkgreen, bboxdict(facecolorwhite, alpha0.7, edgecolornone, boxstyleround,pad0.2))ax.text(vertices[2, 0], vertices[2, 1], C, fontsize14, hacenter, vatop, weightbold, colordarkblue, bboxdict(facecolorwhite, alpha0.7, edgecolornone, boxstyleround,pad0.2))add_vertex_labels(ax1, triangle) add_vertex_labels(ax2, triangle) add_vertex_labels(ax3, triangle)# 创建轨迹线 (每个顶点一种颜色) trail_length 50 # 拖尾轨迹长度# 使用渐变色轨迹 traj1_A, ax1.plot([], [], r-, lw2.0, alpha1.0, labelA) traj1_B, ax1.plot([], [], g-, lw2.0, alpha1.0, labelB) traj1_C, ax1.plot([], [], b-, lw2.0, alpha1.0, labelC) ax1.legend(title顶点轨迹, locupper right, fontsize10)traj2_A, ax2.plot([], [], r-, lw2.0, alpha1.0, labelA) traj2_B, ax2.plot([], [], g-, lw2.0, alpha1.0, labelB) traj2_C, ax2.plot([], [], b-, lw2.0, alpha1.0, labelC) ax2.legend(title顶点轨迹, locupper right, fontsize10)traj3_A, ax3.plot([], [], r-, lw2.0, alpha1.0, labelA) traj3_B, ax3.plot([], [], g-, lw2.0, alpha1.0, labelB) traj3_C, ax3.plot([], [], b-, lw2.0, alpha1.0, labelC) ax3.legend(title顶点轨迹, locupper right, fontsize10)# 存储轨迹数据 traj_data1 {A: {x: [], y: []}, B: {x: [], y: []}, C: {x: [], y: []}} traj_data2 {A: {x: [], y: []}, B: {x: [], y: []}, C: {x: [], y: []}} traj_data3 {A: {x: [], y: []}, B: {x: [], y: []}, C: {x: [], y: []}}# 平移动画更新函数 def update_translation(frame):# 平移参数tx frame * 0.1ty frame * 0.05M translation_matrix(tx, ty)# 应用变换transformed (M triangle.T).T# 更新三角形triangle1.set_xy(transformed[:, :2])# 更新轨迹数据 - 拖尾方式保留最近50个点# 顶点Atraj_data1[A][x].append(transformed[0, 0])traj_data1[A][y].append(transformed[0, 1])if len(traj_data1[A][x]) trail_length:traj_data1[A][x] traj_data1[A][x][-trail_length:]traj_data1[A][y] traj_data1[A][y][-trail_length:]# 顶点Btraj_data1[B][x].append(transformed[1, 0])traj_data1[B][y].append(transformed[1, 1])if len(traj_data1[B][x]) trail_length:traj_data1[B][x] traj_data1[B][x][-trail_length:]traj_data1[B][y] traj_data1[B][y][-trail_length:]# 顶点Ctraj_data1[C][x].append(transformed[2, 0])traj_data1[C][y].append(transformed[2, 1])if len(traj_data1[C][x]) trail_length:traj_data1[C][x] traj_data1[C][x][-trail_length:]traj_data1[C][y] traj_data1[C][y][-trail_length:]# 更新轨迹线traj1_A.set_data(traj_data1[A][x], traj_data1[A][y])traj1_B.set_data(traj_data1[B][x], traj_data1[B][y])traj1_C.set_data(traj_data1[C][x], traj_data1[C][y])# 更新顶点标签位置ax1.texts[0].set_position((transformed[0, 0], transformed[0, 1]))ax1.texts[1].set_position((transformed[1, 0], transformed[1, 1]))ax1.texts[2].set_position((transformed[2, 0], transformed[2, 1]))ax1.set_title(f平移: tx{tx:.1f}, ty{ty:.1f}, fontsize14)return triangle1, traj1_A, traj1_B, traj1_C# 绕原点旋转动画更新函数360°持续旋转 def update_rotation_origin(frame):# 旋转参数 - 持续旋转theta frame * 0.05 # 每帧增加0.05弧度# 计算旋转矩阵M rotation_matrix(theta)# 应用变换transformed (M triangle.T).T# 更新三角形triangle2.set_xy(transformed[:, :2])# 更新轨迹数据 - 拖尾方式保留最近50个点# 顶点Atraj_data2[A][x].append(transformed[0, 0])traj_data2[A][y].append(transformed[0, 1])if len(traj_data2[A][x]) trail_length:traj_data2[A][x] traj_data2[A][x][-trail_length:]traj_data2[A][y] traj_data2[A][y][-trail_length:]# 顶点Btraj_data2[B][x].append(transformed[1, 0])traj_data2[B][y].append(transformed[1, 1])if len(traj_data2[B][x]) trail_length:traj_data2[B][x] traj_data2[B][x][-trail_length:]traj_data2[B][y] traj_data2[B][y][-trail_length:]# 顶点Ctraj_data2[C][x].append(transformed[2, 0])traj_data2[C][y].append(transformed[2, 1])if len(traj_data2[C][x]) trail_length:traj_data2[C][x] traj_data2[C][x][-trail_length:]traj_data2[C][y] traj_data2[C][y][-trail_length:]# 更新轨迹线traj2_A.set_data(traj_data2[A][x], traj_data2[A][y])traj2_B.set_data(traj_data2[B][x], traj_data2[B][y])traj2_C.set_data(traj_data2[C][x], traj_data2[C][y])# 更新顶点标签位置ax2.texts[0].set_position((transformed[0, 0], transformed[0, 1]))ax2.texts[1].set_position((transformed[1, 0], transformed[1, 1]))ax2.texts[2].set_position((transformed[2, 0], transformed[2, 1]))# 显示当前角度转换为度数degrees np.degrees(theta) % 360ax2.set_title(f绕原点旋转: {degrees:.0f}°, fontsize14)return triangle2, traj2_A, traj2_B, traj2_C# 绕任意点旋转动画更新函数360°持续旋转 def update_rotation_arbitrary(frame):# 旋转参数 - 持续旋转theta frame * 0.05 # 每帧增加0.05弧度cx, cy 1.5, 0.5 # 旋转中心# 标记旋转中心只在第一帧标记if frame 0:ax3.plot(cx, cy, ro, markersize10, alpha0.9)ax3.text(cx, cy0.4, 旋转中心, hacenter, vabottom, fontsize12, weightbold, colorred,bboxdict(facecolorwhite, alpha0.7, edgecolornone, boxstyleround,pad0.2))# 计算绕任意点旋转的变换矩阵M rotation_around_point(theta, cx, cy)# 应用变换transformed (M triangle.T).T# 更新三角形triangle3.set_xy(transformed[:, :2])# 更新轨迹数据 - 拖尾方式保留最近50个点# 顶点Atraj_data3[A][x].append(transformed[0, 0])traj_data3[A][y].append(transformed[0, 1])if len(traj_data3[A][x]) trail_length:traj_data3[A][x] traj_data3[A][x][-trail_length:]traj_data3[A][y] traj_data3[A][y][-trail_length:]# 顶点Btraj_data3[B][x].append(transformed[1, 0])traj_data3[B][y].append(transformed[1, 1])if len(traj_data3[B][x]) trail_length:traj_data3[B][x] traj_data3[B][x][-trail_length:]traj_data3[B][y] traj_data3[B][y][-trail_length:]# 顶点Ctraj_data3[C][x].append(transformed[2, 0])traj_data3[C][y].append(transformed[2, 1])if len(traj_data3[C][x]) trail_length:traj_data3[C][x] traj_data3[C][x][-trail_length:]traj_data3[C][y] traj_data3[C][y][-trail_length:]# 更新轨迹线traj3_A.set_data(traj_data3[A][x], traj_data3[A][y])traj3_B.set_data(traj_data3[B][x], traj_data3[B][y])traj3_C.set_data(traj_data3[C][x], traj_data3[C][y])# 更新顶点标签位置ax3.texts[0].set_position((transformed[0, 0], transformed[0, 1]))ax3.texts[1].set_position((transformed[1, 0], transformed[1, 1]))ax3.texts[2].set_position((transformed[2, 0], transformed[2, 1]))# 显示当前角度转换为度数degrees np.degrees(theta) % 360ax3.set_title(f绕点({cx},{cy})旋转: {degrees:.0f}°, fontsize14)return triangle3, traj3_A, traj3_B, traj3_C# 创建三个独立的动画 ani1 FuncAnimation(fig1, update_translation, frames30, interval50, blitTrue) # 旋转动画设置为无限循环 ani2 FuncAnimation(fig2, update_rotation_origin, frames200, interval50, blitTrue, repeatTrue) ani3 FuncAnimation(fig3, update_rotation_arbitrary, frames200, interval50, blitTrue, repeatTrue)# 调整窗口位置避免重叠 fig1.canvas.manager.window.wm_geometry(100100) fig2.canvas.manager.window.wm_geometry(600100) fig3.canvas.manager.window.wm_geometry(1100100)plt.tight_layout() plt.show()动画说明 平移阶段0-30帧三角形沿向量(2,1.5)(2,1.5)(2,1.5)移动 绕原点旋转31-60帧三角形绕(0,0)(0,0)(0,0)逆时针旋转360° 绕任意点旋转61-90帧三角形绕红点(1.5,0.8)(1.5,0.8)(1.5,0.8)逆时针旋转360° 关键数学原理 平移是向量加法旋转是矩阵乘法绕任意点旋转 平移至原点 → 旋转 → 平移回原位 通过组合基本变换可实现复杂刚体运动仿真广泛应用于机器人学、计算机图形学等领域。 研究学习不易点赞易。 工作生活不易收藏易点收藏不迷茫
http://www.pierceye.com/news/405175/

相关文章:

  • 网站建设怎么估算费用和报价h5特效网站欣赏
  • 东软集团建设网站娱乐网站排行榜
  • 石家庄网站建站米拓建站官网怎么用不了
  • 推广seo网站的公司金华网站建设公司排名
  • 阿里巴巴网站工作流程网站建设 教学设计
  • 电子商务网站建设的方法怎样用织梦做音乐网站
  • 临夏州住房和城乡建设局网站出词
  • 企业网站的综合要求最新领导班子7人名单
  • 通过阿里云建设企业网站联想企业网站建设的思路
  • 网站建设服务器的选择方案建设报名系统是正规网站吗
  • 揭阳高端模板建站WordPress背景音乐6
  • 如何使用云服务建设网站cpa之家 app推广平台
  • 网站设计策划书案例漳浦建设局网站
  • ps做分享类网站效果图设计公司工作室创业规划
  • 个人虚拟机做网站设计实例网站
  • 衡阳企业网站wordpress置顶文章顺序
  • 网站建设宗旨是指郑州有名的做网页的公司
  • 怎么0成本做网站企业网站如何设计网页
  • 做韦恩图网站课程分销平台
  • html5网站建设中企业整站推广
  • 织梦网站打开速度慢做抢单软件的网站
  • 51单片机可以做网站怎么建设游戏试玩平台网站
  • 汕头网站建设方案维护wordpress百度熊掌
  • 牛街网站建设产品vi设计都包括什么
  • 网站需要多大宽带网站发展的方向
  • 陈光锋网站运营推广新动向故城建设银行网站
  • 备案后网站可以改名吗临颖网站建设
  • 临沭县建设局官方网站怎样做外贸网站推广
  • 手机网站支付一个简单的网页代码带图片
  • 向公司申请请做网站广州网站推广教程