public void UnselectSommet(Sommet s) { currentPlanet.textureFaces[s.faceID].mesh.colors = currentPlanet.textureFaces[s.faceID].colorNormal; currentPlanet.textureFaces[s.coastSommet.faceID].mesh.colors = currentPlanet.textureFaces[s.coastSommet.faceID].colorNormal; }
public override void Deplacer(double dx, double dy) { Sommet.Deplacer(dx, dy); Base.Deplacer(dx, dy); }
IEnumerator StartTriangulation() { //if (PointHandler.pointList.Count < 3) return; //Tri du plus a gauche puis si égalité le plus en bas PointHandler.pointList.Sort(delegate(GameObject go1, GameObject go2) { if (go1.transform.position.x == go2.transform.position.x) { return(go1.transform.position.y > go2.transform.position.y ? 1 : -1); } else { return(go1.transform.position.x > go2.transform.position.x ? 1 : -1); } }); triangles = new List <Triangle>(); arètes = new List <Arète>(); sommets = new List <Sommet>(); Vector3 startDir = (PointHandler.pointList[1].transform.position - PointHandler.pointList[0].transform.position).normalized; Vector3 nextDir = (PointHandler.pointList[2].transform.position - PointHandler.pointList[1].transform.position).normalized; { Sommet s1 = new Sommet(PointHandler.pointList[0].transform.position); Sommet s2 = new Sommet(PointHandler.pointList[1].transform.position); Sommet s3 = new Sommet(PointHandler.pointList[2].transform.position); sommets.Add(s1); sommets.Add(s2); sommets.Add(s3); if (startDir == nextDir) { Sommet s4 = new Sommet(PointHandler.pointList[3].transform.position); sommets.Add(s4); Arète a1 = new Arète(0, 1); Arète a2 = new Arète(1, 3); Arète a3 = new Arète(3, 0); arètes.Add(a1); arètes.Add(a2); arètes.Add(a3); Triangle t1 = new Triangle(0, 1, 2); triangles.Add(t1); Arète a4 = new Arète(1, 2); arètes.Add(a4); Arète a5 = new Arète(2, 3); arètes.Add(a5); Triangle t2 = new Triangle(3, 4, 2); triangles.Add(t2); } else { Arète a1 = new Arète(0, 1); Arète a2 = new Arète(1, 2); Arète a3 = new Arète(2, 0); arètes.Add(a1); arètes.Add(a2); arètes.Add(a3); Triangle t1 = new Triangle(0, 1, 2); triangles.Add(t1); } } // Ajouter tout les autres points for (int p = sommets.Count; p < PointHandler.pointList.Count; ++p) { Sommet sommetToAdd = new Sommet(PointHandler.pointList[p].transform.position); sommets.Add(sommetToAdd); Vector2 sommet2 = new Vector2(sommetToAdd.pos.x, sommetToAdd.pos.y); foreach (Arète A in arètes) { //if (A.isInterior) continue; A.isInterior = false; Vector3 center = A.GetCenter(); Vector2 centerA = new Vector2(center.x, center.y); foreach (Arète B in arètes) { if (A == B) { continue; } Vector2 pi = new Vector2(0, 0); if (LineSegmentsIntersection(centerA, sommet2, new Vector2(sommets[B.s1].pos.x, sommets[B.s1].pos.y), new Vector2(sommets[B.s2].pos.x, sommets[B.s2].pos.y), out pi)) { A.isInterior = true; break; } } } int count = arètes.Count; for (int i = 0; i < count; ++i) { Arète A = arètes[i]; if (!A.isInterior) { Arète a1 = new Arète(A.s1, sommets.Count - 1); arètes.Add(a1); Arète a2 = new Arète(A.s2, sommets.Count - 1); arètes.Add(a2); Triangle tri = new Triangle(arètes.Count - 2, arètes.Count - 1, i); triangles.Add(tri); } } } yield return(0); }
public Arète(Sommet A, Sommet B) { this.A = A; this.B = B; }
public Vector3 GetCenter() { return(Sommet.Moyenne(sommets)); }
public static void Elevate(Sommet s, float ratio) { s.changeCoord(s.coord * ratio); }