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

球面上的测地线

球面上的测地线

本文节选自geomstats官方教程https://geomstats.github.io/notebooks/04_practical_methods__from_vector_spaces_to_manifolds.html。

球面

最容易理解的流形就是二维球面,毕竟我们每天都要打交道的地球就是个二维球面,下面调用geomstats自带的数据,绘制地球上的若干城市

代码如下

importgeomstats.backendasgs gs.random.seed(2020)importgeomstats.datasets.utilsasdata_utils data,names=data_utils.load_cities()importmatplotlib.pyplotasplt plt.rcParams['font.sans-serif']='Times New Roman'ax=plt.subplot(projection="3d")importgeomstats.visualizationasvis vis.plot(data[15:20],ax=ax,space="S2",label=names[15:20],s=80,alpha=0.5)ax.set_title("Cities on the earth.")plt.show()

球面上的向量

众所周知,向量可以理解为从一个点出发,指向另一个点的箭头。

a=gs.array([0,1])b=gs.array([1,2])v=b-a ax=plt.subplot()ax.scatter(a,b,label="Points")ax.arrow(gs.to_numpy(a[0]),gs.to_numpy(a[1]),dx=gs.to_numpy(v[0]),dy=gs.to_numpy(v[1]),width=0.008,length_includes_head=True,color="black")ax.legend()plt.show()

geomstats提供了一种更加便捷的箭头绘制函数,可以在三维流形上绘制从某点出发的向量

paris=data[19]vector=gs.array([1,0,0.8])ax=plt.subplot(projection="3d")ax=vis.plot(paris,ax=ax,space="S2",s=200,alpha=0.8,label="Paris")arrow=vis.Arrow3D(paris,vector=vector)arrow.draw(ax,color="black")ax.legend()plt.show()

测地线

当球面上向量,与其起始点处的球面相切的时候,那么对于这一点附近的人来说,这个向量几乎就在球面内部。比如从巴黎出发,画一个地球的切向量,那么对于巴黎的人来说,这只是一个平平无奇的路标而已。但是,如果他行动力超强,沿着这个路标走,那问题就大了,他会直接走出地球。而现实中,他必须紧贴着地球前进,而他的轨迹则是一条测地线,如下图所示。

绘图代码如下

fromgeomstats.geometry.hypersphereimportHypersphere sphere=Hypersphere(dim=2)paris=data[19]vector=gs.array([1,0,0.8])tv=sphere.to_tangent(vector,base_point=paris)# 切线result=sphere.metric.exp(tv,base_point=paris)geodesic=sphere.metric.geodesic(initial_point=paris,initial_tangent_vec=tv)trace=geodesic(gs.linspace(0.0,1.0,30))ax=plt.subplot(projection="3d")ax=vis.plot(paris,ax=ax,space="S2",s=100,alpha=0.8,label="Paris")ax=vis.plot(result,ax=ax,space="S2",s=100,alpha=0.8,label="End point")ax=vis.plot(trace,ax=ax,space="S2",color="black",label="Geodesic")arrow=vis.Arrow3D(paris,vector=tv)arrow.draw(ax,color="black")ax.legend()plt.show()

【Hypersphere】是超球面类,维度为2时,就是三维空间中的二维球面。上述代码中调用了很多Hypersphere中的方法。

【metric.exp】为黎曼几何中的指数映射,其功能是将切空间(平坦的局部近似)中的向量,映射回流形(弯曲的全局空间)上的点。

【metric.geodesic】则是根据起始点和切向量,生成一条测地线函数,这个函数可以将实数映射为测地线上的点。

http://www.jsqmd.com/news/1407082/

相关文章:

  • 企业本地获客需求 连云港GEO优化服务商优质推荐 - 招财兔数字员工
  • Java网络编程中Connection Reset异常的深度解析与实战排查指南
  • 2026年寄行李箱按体积还是重量收费?一文讲清计费规则,避开被坑! - 快递物流资讯
  • 一天一个halcon案例(2)
  • JavaScript 开发者快速上手 Vue 3 教程
  • GNSS 前世今生
  • 从零到一:休闲游戏合集平台的开发实践
  • 从PE启动盘制作到UEFI引导修复:手把手解决Windows系统无法启动问题
  • 2026年七夕鲜花同城配送全攻略:选品技巧、避坑指南、靠谱平台推荐 - 榜单测评
  • 从Manus看AI Agent云端沙箱:技术演进与底层实现解析
  • Linux GPIO驱动开发:从gpio_set_value()看内核实现与实战优化
  • Windows 10磁盘分区实战:从C盘告急到高效管理,系统自带工具全解析
  • 依托 AI 导出鸭搭建转换链路,高效处理 ChatGPT 生成的文本到 word 中格式混乱问题
  • 基于OpenClaw与iCloud构建智能物品遗忘检测系统
  • OpenCore黑苹果引导:从原理到实战的完整配置指南
  • 铸造领域树脂砂轮|金利威多场景解决方案,20 + 配方覆盖全需求
  • Windows本地硬盘安装CentOS 7:无需U盘的UEFI双系统部署指南
  • Table as a Modality for Large Language Models
  • Linux---网络--应用层协议HTTP(一)
  • 宝丽通信与思科表面是买家与卖家关系,其实早已深度绑定认证供应商 + 联合开发者合作 - poly-sz
  • 2026七夕鲜花同城配送全攻略 轻松解锁专属节日浪漫 - 榜单测评
  • GNSS行业知识连载
  • OpenClaw多平台渠道插件生命周期管理:server-channels.ts架构设计与实战
  • 2026 年还在说电路板维修是瞎焊?这行早已是硬核技术活
  • 8.16java学习记录和生活随笔
  • Python 快速上手(Java 开发者版)
  • 网页字体在不同设备上总变样?这个免费苹方字体包一次解决
  • Android异形屏适配全攻略:从DisplayCutout到华为兼容性实战
  • AI花生智能施肥机监控系统
  • 全屋定制售后很关键,好售后解决业主后顾之忧 - 米諾