Class GeoGraphEx
Inheritance
System.Object
GeoGraphEx
Inherited Members
System.Object.ToString()
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
Assembly: cs.temp.dll.dll
Syntax
public static class GeoGraphEx
Methods
GetEdges<T>(IEnumerable<T>, Boolean)
頂点verticesで構成される多角形の辺を返す. isLoop=trueの時は最後の用途と最初の要素を繋ぐ辺も返す
Item1 : 始点, Item2 : 終点
Declaration
public static IEnumerable<Tuple<T, T>> GetEdges<T>(IEnumerable<T> vertices, bool isLoop)
Parameters
Type |
Name |
Description |
IEnumerable<T> |
vertices |
|
System.Boolean |
isLoop |
|
Returns
Type |
Description |
IEnumerable<Tuple<T, T>> |
|
Type Parameters
GetInnerLerpSegments(IReadOnlyList<Vector3>, IReadOnlyList<Vector3>, AxisPlane, Single, Single)
selfの左右の道を横幅p : (1-p)で分割した線分を返す. p=[0,1]
例) 0.5だと中央線が返る, 0だとLeftが返る, 1だとRightが返る.
Declaration
public static List<Vector3> GetInnerLerpSegments(IReadOnlyList<Vector3> leftVertices, IReadOnlyList<Vector3> rightVertices, AxisPlane plane, float p, float checkMeter = 3F)
Parameters
Type |
Name |
Description |
IReadOnlyList<Vector3> |
leftVertices |
|
IReadOnlyList<Vector3> |
rightVertices |
|
AxisPlane |
plane |
|
System.Single |
p |
|
System.Single |
checkMeter |
|
Returns
Type |
Description |
List<Vector3> |
|
GetNeighborDistance2D(Int32)
2次元のセル空間における, d近傍の距離を返す.
GetNeighborDistance2D(1)の場合は, 3*3の正方形の距離を返す( x,yがそれぞれ -1~1の範囲)
Declaration
public static Vector2Int[] GetNeighborDistance2D(int d)
Parameters
Type |
Name |
Description |
System.Int32 |
d |
|
Returns
Type |
Description |
Vector2Int[] |
|
GetNeighborDistance3D(Int32)
3次元のセル空間における, d近傍の距離を返す.
GetNeighborDistance3D(1)の場合は, 333の立方体の距離を返す( x,y,zがそれぞれ -1~1の範囲)
Declaration
public static Vector3Int[] GetNeighborDistance3D(int d)
Parameters
Type |
Name |
Description |
System.Int32 |
d |
|
Returns
Type |
Description |
Vector3Int[] |
|
IsCollinear(Vector3, Vector3, Vector3, Single, Single)
a,b,cが同一直線上にあるかどうかを返す
角度/距離の誤差を許容する
Declaration
public static bool IsCollinear(Vector3 a, Vector3 b, Vector3 c, float degEpsilon = 0F, float midPointTolerance = 0F)
Parameters
Type |
Name |
Description |
Vector3 |
a |
|
Vector3 |
b |
|
Vector3 |
c |
|
System.Single |
degEpsilon |
角度誤差(baとbcのなす角度が180±この値以内になるとき同一直線判定
|
System.Single |
midPointTolerance |
線分abとbの距離がこれ以下なら同一直線判定
|
Returns
Type |
Description |
System.Boolean |
|
MergeMeshVertex(IList<Vector3>, Dictionary<Vector3, Vector3>, out List<Vector3>, out List<Int32>)
Declaration
public static bool MergeMeshVertex(IList<Vector3> vertices, Dictionary<Vector3, Vector3> mergeMap, out List<Vector3> newVertices, out List<int> newVertexIndexMap)
Parameters
Type |
Name |
Description |
IList<Vector3> |
vertices |
|
Dictionary<Vector3, Vector3> |
mergeMap |
|
List<Vector3> |
newVertices |
|
List<System.Int32> |
newVertexIndexMap |
|
Returns
Type |
Description |
System.Boolean |
頂点のマージ処理が走ったかどうか
|
MergeVertices(IEnumerable<Vector3>, Single, Int32)
点群verticesをセルサイズcellSizeでグリッド化し、頂点をまとめた結果を返す
Declaration
public static Dictionary<Vector3, Vector3> MergeVertices(IEnumerable<Vector3> vertices, float cellSize = 0.1F, int mergeCellLength = 2)
Parameters
Type |
Name |
Description |
IEnumerable<Vector3> |
vertices |
|
System.Single |
cellSize |
|
System.Int32 |
mergeCellLength |
|
Returns
Type |
Description |
Dictionary<Vector3, Vector3> |
|
MergeVertices2(IEnumerable<Vector3>, Single)
点群verticesをセルサイズcellSizeでグリッド化し、頂点をまとめた結果を返す
Declaration
public static Dictionary<Vector3, Vector3> MergeVertices2(IEnumerable<Vector3> vertices, float cellSize = 0.1F)
Parameters
Type |
Name |
Description |
IEnumerable<Vector3> |
vertices |
|
System.Single |
cellSize |
|
Returns
Type |
Description |
Dictionary<Vector3, Vector3> |
|
SplitByCollinearSegment<T>(IReadOnlyList<T>, Func<T, T, T, List<Int32>, Boolean>)
verticesで表される線分を, isCollinearを使った同一直線判定でグルーピングする
戻り値はグループの始点インデックス
例) (v0, v1, v2, v3, v4, v5)
v0~v1, v1~v5が同一直線なら[0, 2, 5]が返る
v0~v5が同一直線なら[0, 5]が返る
Declaration
public static List<int> SplitByCollinearSegment<T>(IReadOnlyList<T> vertices, Func<T, T, T, List<int>, bool> isCollinear)
Parameters
Type |
Name |
Description |
IReadOnlyList<T> |
vertices |
|
Func<T, T, T, List<System.Int32>, System.Boolean> |
isCollinear |
頂点v0, v1, v2が同一直線となるか
|
Returns
Type |
Description |
List<System.Int32> |
|
Type Parameters
SplitByCollinearSegment<T>(IReadOnlyList<T>, Func<T, Vector3>, Single, Single, Boolean)
verticesで表される線分を, toleranceAngleDeg/midPointToleranceを使った同一直線判定でグルーピングする
戻り値はグループの始点インデックス
例) (v0, v1, v2, v3, v4, v5)
v0~v1, v1~v5が同一直線なら[0, 2, 5]が返る
v0~v5が同一直線なら[0, 5]が返る
Declaration
public static List<int> SplitByCollinearSegment<T>(IReadOnlyList<T> vertices, Func<T, Vector3> toVec3, float toleranceAngleDeg, float midPointTolerance, bool checkAdjustSegmentAngleOnly = false)
Parameters
Type |
Name |
Description |
IReadOnlyList<T> |
vertices |
|
Func<T, Vector3> |
toVec3 |
|
System.Single |
toleranceAngleDeg |
|
System.Single |
midPointTolerance |
|
System.Boolean |
checkAdjustSegmentAngleOnly |
|
Returns
Type |
Description |
List<System.Int32> |
|
Type Parameters