Search Results for

    Show / Hide Table of Contents

    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()
    Namespace: PLATEAU.Util.GeoGraph
    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
    Name Description
    T

    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
    Name Description
    T

    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
    Name Description
    T
    In This Article
    Back to top PLATEAU SDK for Unity