From d5884db63e97f8b11061a195744ce736f612ab6a Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Tue, 20 Jun 2023 15:49:35 +0800 Subject: [PATCH] =?UTF-8?q?:memo:=20=E6=B3=A8=E9=87=8A=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/doc.go | 7 +++++++ utils/generic/doc.go | 4 ++++ utils/generic/type.go | 7 +++++++ utils/geometry/astar/doc.go | 7 +++++++ utils/geometry/doc.go | 7 +++++++ utils/geometry/dp/doc.go | 6 ++++++ utils/geometry/matrix/doc.go | 2 ++ utils/geometry/navmesh/doc.go | 5 +++++ utils/geometry/navmesh/navmesh.go | 3 +++ 9 files changed, 48 insertions(+) create mode 100644 utils/doc.go create mode 100644 utils/generic/doc.go create mode 100644 utils/geometry/astar/doc.go create mode 100644 utils/geometry/doc.go create mode 100644 utils/geometry/dp/doc.go create mode 100644 utils/geometry/matrix/doc.go create mode 100644 utils/geometry/navmesh/doc.go diff --git a/utils/doc.go b/utils/doc.go new file mode 100644 index 0000000..0dad55e --- /dev/null +++ b/utils/doc.go @@ -0,0 +1,7 @@ +// Package utils 旨在提供一组用于处理通用功能的函数和数据结构。该包旨在简化通用功能的实现,并提供一致的接口和易于使用的功能。 +// 主要特性: +// - 通用功能:utils 包支持处理各种通用功能,如字符串处理、日期时间操作和文件操作等。您可以使用这些功能来解决各种通用问题,并提高代码的复用性和可维护性。 +// - 数据结构:该包提供了一系列通用的数据结构,如栈、队列、链表和哈希表等。这些数据结构可以用于存储和操作各种类型的数据,并提供高效的访问和操作能力。 +// - 算法实现:utils 包还提供了一些常用的算法实现,如排序算法、搜索算法和图算法等。这些算法可以用于解决各种问题,并提供高效的计算和处理能力。 +// - 工具函数:该包还提供了一些通用的工具函数,如字符串处理、日期时间操作和文件操作等。这些工具函数可以帮助您简化代码编写,处理文本数据,操作日期时间,读写文件等。 +package utils diff --git a/utils/generic/doc.go b/utils/generic/doc.go new file mode 100644 index 0000000..547fddc --- /dev/null +++ b/utils/generic/doc.go @@ -0,0 +1,4 @@ +// Package generic 目的在于提供一组基于泛型的用于处理通用功能的函数和数据结构。该包旨在简化通用功能的实现,并提供一致的接口和易于使用的功能。 +// 主要特性: +// - 通用功能:generic 包支持处理各种通用功能,如数据结构操作、算法实现和常用工具等。您可以使用这些功能来解决各种通用问题,并提高代码的复用性和可维护性。 +package generic diff --git a/utils/generic/type.go b/utils/generic/type.go index 84b50eb..320b31e 100644 --- a/utils/generic/type.go +++ b/utils/generic/type.go @@ -1,29 +1,36 @@ package generic +// Ordered 可排序类型 type Ordered interface { Integer | Float | ~string } +// Number 数字类型 type Number interface { Integer | Float } +// SignedNumber 有符号数字类型 type SignedNumber interface { Signed | Float } +// Integer 整数类型 type Integer interface { Signed | Unsigned } +// Signed 有符号整数类型 type Signed interface { ~int | ~int8 | ~int16 | ~int32 | ~int64 } +// Unsigned 无符号整数类型 type Unsigned interface { ~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr } +// Float 浮点类型 type Float interface { ~float32 | ~float64 } diff --git a/utils/geometry/astar/doc.go b/utils/geometry/astar/doc.go new file mode 100644 index 0000000..5e44df1 --- /dev/null +++ b/utils/geometry/astar/doc.go @@ -0,0 +1,7 @@ +// Package astar 提供用于实现 A* 算法的函数和数据结构。A* 算法是一种常用的路径搜索算法,用于在图形或网络中找到最短路径。该包旨在简化 A* 算法的实现过程,并提供一致的接口和易于使用的功能。 +// 主要特性: +// - 图形表示:astar 包支持使用图形或网络来表示路径搜索的环境。您可以定义节点和边,以构建图形,并在其中执行路径搜索。 +// - A* 算法:该包提供了 A* 算法的实现,用于在图形中找到最短路径。A* 算法使用启发式函数来评估节点的优先级,并选择最有希望的节点进行扩展,以达到最短路径的目标。 +// - 自定义启发式函数:您可以根据具体问题定义自己的启发式函数,以指导 A* 算法的搜索过程。启发式函数用于估计从当前节点到目标节点的代价,以帮助算法选择最佳路径。 +// - 可定制性:astar 包提供了一些可定制的选项,以满足不同场景下的需求。您可以设置节点的代价、边的权重等参数,以调整算法的行为。 +package astar diff --git a/utils/geometry/doc.go b/utils/geometry/doc.go new file mode 100644 index 0000000..425aa06 --- /dev/null +++ b/utils/geometry/doc.go @@ -0,0 +1,7 @@ +// Package geometry 旨在提供一组用于处理几何形状和计算几何属性的函数和数据结构。该包旨在简化几何计算的过程,并提供一致的接口和易于使用的功能。 +// 主要特性: +// - 几何形状:"geometry"包支持处理各种几何形状,如点、线、多边形和圆等。您可以使用这些形状来表示和操作实际世界中的几何对象。 +// - 几何计算:该包提供了一系列函数,用于执行常见的几何计算,如计算两点之间的距离、计算线段的长度、计算多边形的面积等。这些函数旨在提供高效和准确的计算结果。 +// - 坐标转换:"geometry"包还提供了一些函数,用于在不同坐标系之间进行转换。您可以将点从笛卡尔坐标系转换为极坐标系,或者从二维坐标系转换为三维坐标系等。 +// - 简化接口:该包的设计目标之一是提供简化的接口,使几何计算变得更加直观和易于使用。您可以轻松地创建和操作几何对象,而无需处理繁琐的底层细节。 +package geometry diff --git a/utils/geometry/dp/doc.go b/utils/geometry/dp/doc.go new file mode 100644 index 0000000..9c91897 --- /dev/null +++ b/utils/geometry/dp/doc.go @@ -0,0 +1,6 @@ +// Package dp (DistributionPattern) 提供用于在二维数组中根据不同的特征标记为数组成员建立分布链接的函数和数据结构。该包的目标是实现快速查找与给定位置成员具有相同特征且位置紧邻的其他成员。 +// 主要特性: +// - 分布链接机制:dp 包提供了一种分布链接的机制,可以根据成员的特征将它们链接在一起。这样,可以快速查找与给定成员具有相同特征且位置紧邻的其他成员。 +// - 二维数组支持:该包支持在二维数组中建立分布链接。可以将二维数组中的成员视为节点,并根据其特征进行链接。 +// - 快速查找功能:使用 dp 包提供的函数,可以快速查找与给定位置成员具有相同特征且位置紧邻的其他成员。这有助于在二维数组中进行相关性分析或查找相邻成员。 +package dp diff --git a/utils/geometry/matrix/doc.go b/utils/geometry/matrix/doc.go new file mode 100644 index 0000000..d3fc594 --- /dev/null +++ b/utils/geometry/matrix/doc.go @@ -0,0 +1,2 @@ +// Package matrix 提供了一个简单的二维数组的实现 +package matrix diff --git a/utils/geometry/navmesh/doc.go b/utils/geometry/navmesh/doc.go new file mode 100644 index 0000000..92b1f57 --- /dev/null +++ b/utils/geometry/navmesh/doc.go @@ -0,0 +1,5 @@ +// Package navmesh 提供了用于导航网格处理的函数和数据结构。导航网格是一种常用的数据结构,用于在游戏开发和虚拟环境中进行路径规划和导航。该包旨在简化导航网格的创建、查询和操作过程,并提供高效的导航功能。 +// 主要特性: +// - 导航网格表示:navmesh 包支持使用导航网格来表示虚拟环境中的可行走区域和障碍物。您可以定义多边形区域和连接关系,以构建导航网格,并在其中执行路径规划和导航。 +// - 导航算法:采用了 A* 算法作为导航算法,用于在导航网格中找到最短路径或最优路径。这些算法使用启发式函数和代价评估来指导路径搜索,并提供高效的路径规划能力。 +package navmesh diff --git a/utils/geometry/navmesh/navmesh.go b/utils/geometry/navmesh/navmesh.go index 04bda21..8415c92 100644 --- a/utils/geometry/navmesh/navmesh.go +++ b/utils/geometry/navmesh/navmesh.go @@ -21,6 +21,9 @@ import ( // - meshShrinkAmount 表示导航网格的缩小量,用于在形状之间创建链接时考虑形状的缩小效果。 // - 函数内部使用了泛型类型参数 V,可以根据需要指定形状的坐标类型。 // - 函数返回一个指向创建的导航网格的指针。 +// +// 使用建议: +// - 确保 NavMesh 计算精度的情况下,V 建议使用 float64 类型 func NewNavMesh[V generic.SignedNumber](shapes []geometry.Shape[V], meshShrinkAmount V) *NavMesh[V] { nm := &NavMesh[V]{ meshShapes: make([]*shape[V], len(shapes)),