Class RnLineString
Inheritance
System.Object
RnLineString
Implements
IReadOnlyList<Vector3>
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 class RnLineString : ARnParts<RnLineString>
Constructors
RnLineString()
Declaration
RnLineString(IEnumerable<RnPoint>)
Declaration
public RnLineString(IEnumerable<RnPoint> points)
Parameters
| Type |
Name |
Description |
| IEnumerable<RnPoint> |
points |
|
RnLineString(Int32)
Declaration
public RnLineString(int initialSize)
Parameters
| Type |
Name |
Description |
| System.Int32 |
initialSize |
|
Properties
Count
Declaration
public int Count { get; }
Property Value
| Type |
Description |
| System.Int32 |
|
IsValid
Declaration
public bool IsValid { get; }
Property Value
| Type |
Description |
| System.Boolean |
|
Item[Int32]
Declaration
public Vector3 this[int index] { get; set; }
Parameters
| Type |
Name |
Description |
| System.Int32 |
index |
|
Property Value
Points
Declaration
public List<RnPoint> Points { get; }
Property Value
Methods
AddFrontPoint(RnPoint)
Declaration
public void AddFrontPoint(RnPoint p)
Parameters
AddPoint(RnPoint)
Declaration
public void AddPoint(RnPoint p)
Parameters
AddPointFrontOrSkip(RnPoint, Single, Single, Single)
先頭に点を追加する.
- 前の点が同じなら追加しない
- 追加した結果, 最初3点による二つの直線がほぼ同じ直線になる場合は中間点を削除する
Declaration
public void AddPointFrontOrSkip(RnPoint p, float distanceEpsilon = 0F, float degEpsilon = 0.5F, float midPointTolerance = 0.1F)
Parameters
| Type |
Name |
Description |
| RnPoint |
p |
|
| System.Single |
distanceEpsilon |
距離誤差
|
| System.Single |
degEpsilon |
角度誤差(p0 -> p1 -> p2の角度が180±この値以内になるときp1を削除する
|
| System.Single |
midPointTolerance |
p0 -> p1 -> p2の3点があったときに、p0->p2の直線とp1の距離がこれ以下ならp1を削除する
|
AddPointOrSkip(RnPoint, Single, Single, Single)
後ろに点を追加する
- 後ろの点が同じなら追加しない
- 追加した結果, 最後3点による二つの直線がほぼ同じ直線になる場合は中間点を削除する
Declaration
public void AddPointOrSkip(RnPoint p, float distanceEpsilon = 0F, float degEpsilon = 0.5F, float midPointTolerance = 0.1F)
Parameters
| Type |
Name |
Description |
| RnPoint |
p |
|
| System.Single |
distanceEpsilon |
距離誤差
|
| System.Single |
degEpsilon |
角度誤差(p0 -> p1 -> p2の角度が180±この値以内になるときp1を削除する
|
| System.Single |
midPointTolerance |
p0 -> p1 -> p2の3点があったときに、p0->p2の直線とp1の距離がこれ以下ならp1を削除する
|
CalcLength()
Declaration
public float CalcLength()
Returns
| Type |
Description |
| System.Single |
|
CalcLength(Single, Single)
startPointIndex -> endPointIndexまでの長さを計算する
Declaration
public float CalcLength(float startPointIndex, float endPointIndex)
Parameters
| Type |
Name |
Description |
| System.Single |
startPointIndex |
|
| System.Single |
endPointIndex |
|
Returns
| Type |
Description |
| System.Single |
|
Clone(Boolean)
自身のコピーを作成する.
clonePoint : 頂点もコピーするかどうか
Declaration
public RnLineString Clone(bool cloneVertex)
Parameters
| Type |
Name |
Description |
| System.Boolean |
cloneVertex |
|
Returns
Create(IEnumerable<RnPoint>, Boolean)
頂点リストから線分を生成する
removeDuplicate : 重複する頂点を取り除くかのフラグ
Declaration
public static RnLineString Create(IEnumerable<RnPoint> vertices, bool removeDuplicate = true)
Parameters
| Type |
Name |
Description |
| IEnumerable<RnPoint> |
vertices |
|
| System.Boolean |
removeDuplicate |
|
Returns
Create(IEnumerable<RnPoint>, Single, Single, Single)
頂点リストから線分を生成する
distanceEpsilon : 頂点間の距離がこの値以下の場合は同じ点とみなす
degEpsilon : 3点が同一直線上にあるときの角度誤差. 180±degEpsilon以内の場合は中間点を削除する
Declaration
public static RnLineString Create(IEnumerable<RnPoint> vertices, float distanceEpsilon, float degEpsilon, float midPointTolerance)
Parameters
| Type |
Name |
Description |
| IEnumerable<RnPoint> |
vertices |
|
| System.Single |
distanceEpsilon |
|
| System.Single |
degEpsilon |
|
| System.Single |
midPointTolerance |
|
Returns
Create(IEnumerable<Vector3>, Boolean)
頂点リストから線分を生成する
removeDuplicate : 重複する頂点を取り除くかのフラグ
Declaration
public static RnLineString Create(IEnumerable<Vector3> vertices, bool removeDuplicate = true)
Parameters
| Type |
Name |
Description |
| IEnumerable<Vector3> |
vertices |
|
| System.Boolean |
removeDuplicate |
|
Returns
Equals(RnLineString, RnLineString)
x/yが同じかどうか
参照一致だけでなく値一致でもtrue
Declaration
public static bool Equals(RnLineString x, RnLineString y)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
GetEdgeNormal(Int32)
頂点 startVertexIndex, startVertexIndex + 1で構成される辺の法線ベクトルを返す
上(Vector3.up)から見て反時計回りを向いている. 正規化済み
Declaration
public Vector3 GetEdgeNormal(int startVertexIndex)
Parameters
| Type |
Name |
Description |
| System.Int32 |
startVertexIndex |
|
Returns
GetEnumerator()
Declaration
public IEnumerator<Vector3> GetEnumerator()
Returns
| Type |
Description |
| IEnumerator<Vector3> |
|
GetVertexNormal(Int32)
頂点 vertexIndex -> vertexIndex, vertexIndex -> vertexIndex + 1の方向に対して
道の外側を向いている法線ベクトルの平均を返す.正規化済み.
Declaration
public Vector3 GetVertexNormal(int vertexIndex)
Parameters
| Type |
Name |
Description |
| System.Int32 |
vertexIndex |
|
Returns
ReplacePoint(RnPoint, RnPoint)
Declaration
public int ReplacePoint(RnPoint oldPoint, RnPoint newPoint)
Parameters
Returns
| Type |
Description |
| System.Int32 |
|
Split(Int32, Boolean, Func<Int32, Single>)
自身をnum分割して返す. 分割できない(頂点空)の時は空リストを返す
rateSelector : 分割線分の長さを取得する関数.numでちょうど1になるようにする必要がある. nullの場合は等分割. rateSel
Declaration
public List<RnLineString> Split(int num, bool insertNewPoint, Func<int, float> rateSelector = null)
Parameters
| Type |
Name |
Description |
| System.Int32 |
num |
|
| System.Boolean |
insertNewPoint |
|
| Func<System.Int32, System.Single> |
rateSelector |
|
Returns
SplitByIndex(Single, out RnLineString, out RnLineString, Func<Vector3, RnPoint>)
index指定で前半/後半に分割したLineStringを返す(非破壊)
Declaration
public bool SplitByIndex(float index, out RnLineString front, out RnLineString back, Func<Vector3, RnPoint> createPoint = null)
Parameters
Returns
| Type |
Description |
| System.Boolean |
|
Implements
IReadOnlyList<>