s
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class UnitAlgorithmSubdivision : UnitAlgorithm<DataPolygon> {
|
||||
public void Compute(DataPolygon data) {
|
||||
//List<DataTriangle> triangles = new List<DataTriangle>(data.triangles);
|
||||
//List<DataTriangle> subdivision = new List<DataTriangle>();
|
||||
//for (int i = 0; i < triangles.Count; i++) {
|
||||
// subdivision.AddRange(Compute(triangles[i]));
|
||||
//}
|
||||
//subdivision.AddRange(Subdivision(triangles[121], data.edgeSmooth));
|
||||
|
||||
//data.triangles = subdivision;
|
||||
}
|
||||
private List<DataTriangle> Compute(DataTriangle triangle) {
|
||||
float ab = Vector3.Distance(triangle.a, triangle.b);
|
||||
float bc = Vector3.Distance(triangle.b, triangle.c);
|
||||
float ca = Vector3.Distance(triangle.c, triangle.a);
|
||||
if (ab > bc && ab > ca && ab > 0.02f) { return Compute(triangle.c, triangle.a, triangle.b); }
|
||||
if (bc > ab && bc > ca && bc > 0.02f) { return Compute(triangle.a, triangle.b, triangle.c); }
|
||||
if (ca > bc && ca > ab && ca > 0.02f) { return Compute(triangle.b, triangle.c, triangle.a); }
|
||||
|
||||
return new List<DataTriangle> { triangle };
|
||||
}
|
||||
private List<DataTriangle> Compute(Vector3 a, Vector3 b, Vector3 c) {
|
||||
Vector3 direction = b - c;
|
||||
Vector3 d = c + direction * 0.5f;
|
||||
|
||||
DataTriangle aT = new DataTriangle { a = a, b = d, c = c };
|
||||
DataTriangle bT = new DataTriangle { a = a, b = b, c = d };
|
||||
return new List<DataTriangle> { aT, bT, };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user