首页 > 编程语言 >交点法公路计算的一些相关方法函数(Python)

交点法公路计算的一些相关方法函数(Python)

时间:2024-04-24 20:56:25浏览次数:27  
标签:origin angle 函数 get Python azimuth current radius 交点

 1     # 弧度归一化
 2     @staticmethod
 3     def normalize_radian(radian):
 4         return radian % tau
 5 
 6     # 获取坐标差
 7     @staticmethod
 8     def get_coord_diff(start_x, start_y, end_x, end_y):
 9         return end_x - start_x, end_y - start_y
10 
11     # 切线垂距
12     @staticmethod
13     def get_tangent_distance(origin_x, origin_y, origin_azimuth, current_x, current_y):
14         delta_x, delta_y = get_coord_diff(origin_x, origin_y, current_x, current_y)
15         return delta_y * cos(origin_azimuth) - delta_x * sin(origin_azimuth)
16 
17     # 法线垂距
18     @staticmethod
19     def get_normal_distance(origin_x, origin_y, origin_azimuth, current_x, current_y):
20         # 法线方位角
21         normal_azimuth = normalize_radian(origin_azimuth - HALF_PI)
22         return MathUtils.get_tangent_distance(origin_x, origin_y, normal_azimuth, current_x, current_y)
23 
24     # 获取圆弧內移值
25     @staticmethod
26     def get_arc_inside_shift(delta_y, radius, turn_angle):
27         return delta_y - radius * (1.0 - cos(turn_angle))
28 
29     # 获取切线增长值
30     @staticmethod
31     def get_tangent_growth(delta_x, radius, turn_angle):
32         return delta_x - radius * sin(turn_angle)
33     # 获取交点切线长
34     @staticmethod
35     def get_intersection_tangent_length(origin_radius, tangent_growth, half_turn_angle):
36         return tangent_growth + origin_radius * tan(half_turn_angle)
37 
38     # 获取交点切线方位角
39     @staticmethod
40     def get_intersection_tangent_azimuth(previous_x, previous_y, current_x, current_y, latter_x, latter_y):
41         entry_dx, entry_dy = get_coord_diff(previous_x, previous_y, current_x, current_y)
42         exit_dx, exit_dy = get_coord_diff(current_x, current_y, latter_x, latter_y)
43         # 计算方位角
44         entry_azimuth = atan2(entry_dy, entry_dx)
45         exit_azimuth = atan2(exit_dy, exit_dx)
46         # 计算点积和叉积
47         dot_product = entry_dx * exit_dx + entry_dy * exit_dy
48         cross_product = entry_dx * exit_dy - entry_dy * exit_dx
49         # 计算夹角
50         turn_angle = atan2(cross_product, dot_product)
51         return entry_azimuth, exit_azimuth, turn_angle
52 
53     # 获取交点半幅夹角
54     @staticmethod
55     def get_intersection_half_angle(start_origin_radius, end_origin_radius, turn_angle):
56         return atan((end_origin_radius - start_origin_radius * cos(turn_angle)) / (start_origin_radius * sin(turn_angle)))

 

标签:origin,angle,函数,get,Python,azimuth,current,radius,交点
From: https://www.cnblogs.com/1ce94/p/18156329

相关文章

  • Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析|附代码数据
    全文下载链接:http://tecdat.cn/?p=17748最近我们被客户要求撰写关于销售量时间序列建模的研究报告,包括一些图形和统计输出。在本文中,在数据科学学习之旅中,我经常处理日常工作中的时间序列数据集,并据此做出预测我将通过以下步骤:探索性数据分析(EDA)问题定义(我们要解决什么)变量......
  • Python基础-模块和包(hashlib、random、json、time、datetime和os模块)
    什么是模块和包?模块:python中的.py文件,将一些功能按照某一种维度进行划分;自定义、内置。、第三方.包:文件夹里面好多个.py文件。在讨论的时候,一般统称为:模块。学习:自定义模块和包+使用内置模块+使用第三方模块+使用1自定义模块和包1.1快速上手-项目文件夹(......
  • Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据|附代码数据
    原文链接:http://tecdat.cn/?p=6663  此示例中,神经网络用于使用2011年4月至2013年2月期间的数据预测公民办公室的电力消耗 ( 点击文末“阅读原文”获取完整代码数据******** )。每日数据是通过总计每天提供的15分钟间隔的消耗量来创建的。LSTM简介LSTM(或长短期记忆人工神......
  • Python函数参数为列表问题
    defADD(a):print(3,a,hex(id(a)))a.remove(2)print(3,a,hex(id(a)))a=a.append(10)print(3,a,hex(id(a)))returnaa=[1,2,3]print(1,a,hex(id(a)))b=ADD(a)print(2,a,hex(id(a)))print(2,b,hex(id(b)))函数传参的......
  • 使用 Python 循环创建多个列表
    前言在Python中,我们可以使用循环来动态创建多个列表,这在处理数据、进行数据分析或进行算法实现时非常有用。本文将介绍几种常见的方法,以帮助大家学习如何使用循环创建多个列表。方法一:使用列表推导式列表推导式是Python中一种简洁的语法,可以快速生成列表。我们可以结合循......
  • 修改文件内容 python
    第一种方法,简单直接粗暴的,缺点就是如果文件非常大时,把所有内容都读出来,会非常占用内存:f=open('a.txt','a+',encoding='utf-8')#不能用w+,用w+直接给文件清空了,读不出来内容了f.seek(0)result=f.read()new_result=result.replace('abc','ABC')f.seek(0)f.truncate......
  • 新手下载python和anaconda3注意事项
    新手下载python和anaconda3要注意哪些1、python关于python下载其实很简单,直接在官网下载就行。官网:WelcometoPython.org当然,到了官网下载是默认最新版本,如果你需要旧版本,那就需要找一下了,这里提供一下windows的各版本的官网链接:PythonReleasesforWindows|Python.org......
  • 深度学习Python代码小知识点(备忘,因为没有脑子)
    现在是2024年4月24日16:58,今天摸鱼有点多,备忘一下,都写到一篇内容里面,免得分散。 1.np.concatenate()函数'np.concatenate'是NumPy库中用来合并两个或多个数组的函数。它可以在任意指定的轴上连接数组,是数据预处理和特征工程中常用的工具。基本语法:numpy.concatenate((a1,a2......
  • 匿名函数,内置函数
    Ⅰ匿名函数匿名函数的意思就是没有函数名 需要结合其他函数一起使用【1】函数分类#【1】有名函数deflogin():...login()#【2】匿名函数(无名函数)#语法:lambda参数:表达式#lambda:匿名函数的关键字#参数可以放位置参数关键自残术...#表达式:其实本......
  • WARNING: pip is configured with locations that require TLS/SSL, however the ssl
    pip3安装报错[[email protected]]#pip3install--upgradepipWARNING:pipisconfiguredwithlocationsthatrequireTLS/SSL,howeverthesslmoduleinPythonisnotavailable.Requirementalreadysatisfied:pipin/usr/local/python3/lib/python3.11/s......