static void Main(string[] args) { triangle s2 = new triangle(); s2.settriangle(3, 4, 9); Console.WriteLine($"三角形面积为{s2.getarea()}"); }
/* ------------------------------ TRIANGULOS ------------------------------ */ public Vector3 getMidPoint(triangle t1) { Vector3[] options = { t1.v1, t1.v2, t1.v3 }; Vector3 sum = t1.v1 + t1.v2 + t1.v3; Vector3 mass_center = new Vector3(sum.x / 3, sum.y / 3, 0); return(mass_center); }
public Mesh(point3[] meshVerts, triangle[] meshFaces, point2[] meshUvs, Material[] mtls = null) { verts = meshVerts; vertCount = verts.Length; faces = meshFaces; faceCount = faces.Length; uvVerts = meshUvs; matIDs = mtls; }
public void land(triangle start, Vector3 planetPos) { t = 0; endPosition = start.findCenter(); startPosition = start.findCenter() + 3f * Vector3.Normalize(start.findCenter() - planetPos); transform.position = startPosition; Vector3 direction = Vector3.Cross(start.vertex2 - start.vertex1, start.vertex3 - start.vertex1); transform.rotation = Quaternion.LookRotation(direction); transform.Rotate(new Vector3(90, 0, 0)); }
// этот скрипт накинут на камеру и запускается сразу после генерации камеры в игровом движке void Start() { int count_elem = Random.Range(5, 20); //количество елементов int ran_elem; // тип елемента // обьяление существующих елементов trapeze trapeze_el; triangle triangle_el; circle circle_el; square square_el; // Массив обьектов ArrayList ms = new ArrayList(); for (int i = 0; i < count_elem; i++) { ran_elem = Random.Range(0, 3); if (ran_elem == 0) // Если ran_elem 0 то создается трапеция { trapeze_el = new trapeze(); trapeze_el.get_date(); ms.Add(trapeze_el); } else if (ran_elem == 1) // Если ran_elem 1 то создается треугольник { triangle_el = new triangle(); triangle_el.get_date(); ms.Add(triangle_el); } else if (ran_elem == 2) // Если ran_elem 2 то создается круг { circle_el = new circle(); circle_el.get_date(); ms.Add(circle_el); } else // иначе квадрат { square_el = new square(); square_el.get_date(); ms.Add(square_el); } } // это не работает и лучше его не трогать... Оно здесь для красоты // for (int b = 0; b < ms.Count; b++){ // Debug.Log("ELEMENT #"+b); // Debug.Log(ms[b].get_date()); // } }
public void load() { GameObject[] objects = GameObject.FindObjectsOfType <GameObject> (); foreach (GameObject o in objects) { if (!o.tag.Equals("MainCamera") && !o.tag.Equals("Player") && !o.tag.Equals("Shadow") && o.layer != 5) { o.SetActive(false); Destroy(o); } } GameObject _prefab = Resources.Load <GameObject> ("Tiles/" + levelName); Debug.Log(_prefab); GameObject gridBgPrefab = (GameObject)Instantiate(_prefab, new Vector3(0f, 0f, 0f), Quaternion.identity); GameObject.Find("Character").transform.position = start; int index = 0; if (GameObject.Find("Character").GetComponent <PlayerScript> ().shadows [0].GetComponent <SpriteAnim> ().loops > 0) { index = 1; } foreach (GameObject shadow in GameObject.Find("Character").GetComponent <PlayerScript> ().shadows) { shadow.GetComponent <SpriteRenderer> ().sprite = GameObject.Find("Character").GetComponent <PlayerScript> ().shadows [index].GetComponent <SpriteRenderer> ().sprite; } GameObject.Find("Character").GetComponent <PlayerScript> ().trail.Clear(); int triangle_head = 0; for (int i = 0; i < this.objects.Length; i++) { if (this.objects[i] == "triangle pair") { //spawn the triangles GameObject obj = Resources.Load <GameObject>("Prefabs/triangle"); GameObject obj2 = Resources.Load <GameObject>("Prefabs/triangle2"); triangle a_triangle = Instantiate(obj, this.triangle_locations[triangle_head], new Quaternion(0, 0, 0, 0)).gameObject.GetComponent <triangle>(); triangle2 a_triangle2 = Instantiate(obj2, this.triangle_locations[triangle_head + 1], new Quaternion(0, 0, 0, 0)).gameObject.GetComponent <triangle2>(); a_triangle.sibling = a_triangle2; a_triangle2.sibling = a_triangle; triangle_head += 2; // set the triangle head up } else // not instantiating a triangle { GameObject obj = Resources.Load <GameObject> (this.objects[i]); Instantiate(obj); obj.transform.position = locations[i]; } } }
private float Area(triangle t1) { Vector3[] m_points = { t1.v1, t1.v2, t1.v3 }; int n = m_points.Length; float A = 0.0f; for (int p = n - 1, q = 0; q < n; p = q++) { Vector2 pval = m_points[p]; Vector2 qval = m_points[q]; A += pval.x * qval.y - qval.x * pval.y; } return(A * 0.5f); }
/* ---------------------------------- CUADRADOS ---------------------------------- */ public List <triangle> squareToTriangle(Vector3 tl, Vector3 br) { Vector3 top_r = new Vector3(br.x, tl.y, 0); Vector3 bot_l = new Vector3(tl.x, br.y, 0); triangle t1 = new triangle(tl, br, top_r); triangle t2 = new triangle(tl, br, bot_l); t1.center = getMidPoint(t1); t2.center = getMidPoint(t2); List <triangle> triangs = new List <triangle> { t1, t2 }; return(triangs); }
public void TestP() { int a = 10; int b = 15; int c = 20; int expected = 45; triangle t = new triangle(); t.a = a; t.b = b; t.c = c; int actual = t.Perimetr(); Assert.AreEqual(expected, actual); }
public void TestS() { int a = 3; int b = 4; int c = 5; double expected = 6; triangle t = new triangle(); t.a = a; t.b = b; t.c = c; double actual = t.Ploshad(); Assert.AreEqual(expected, actual); }
// Update is called once per frame void Update() { if (this.sibling.gameObject.activeSelf == false) { wait--; if (wait <= 0) // create a new one { Vector3 val = this.transform.position + new Vector3(rnd.Next(-6, 6), rnd.Next(-6, 6), 0); sibling = Instantiate(other_triangle, val, new Quaternion(0, 0, 0, 0)).gameObject.GetComponent <triangle>(); sibling.sibling = this; } } else { wait = 5; } }
public static IntersectResult intersect(this aabb2 aabb, triangle <vec2> tri) { int siflags = 0x000000; for (int i = 0; i < tri.p.Length; i++) { var r = aabb.intersect(tri.p[i]); siflags = (int)(r) << (i << 8); } if (siflags == 0x010101) { return(IntersectResult.Contain1); } return(IntersectResult.None); }
public Vector3 bestVertex(triangle t1) { Vector3[] options = { t1.v1, t1.v2, t1.v3 }; Vector3 mass_center = getMidPoint(t1); Vector3 actual = new Vector3(); float min = 10000000f; foreach (Vector3 v in options) { if (distBetweenPoints(v, mass_center) < min) { actual = v; min = (distBetweenPoints(v, mass_center)); } } return(actual); }
void OnGUI() { if (!hecho) { foreach (Transform child in transform) { //child is your child transform BoxCollider boxC = child.GetComponent <BoxCollider>(); Bounds bs = boxC.bounds; Vector3 tl = new Vector3(bs.center.x - bs.extents.x, bs.center.y + bs.extents.y, 0f); Vector3 br = new Vector3(bs.center.x + bs.extents.x, bs.center.y - bs.extents.y, 0f); List <triangle> list_ini = squareToTriangle(tl, br); int iter = 0; while (true) //list_ini.Count>0 { triangle tr = list_ini [0]; DrawTriangle(tr.v1, tr.v2, tr.v3, Color.white, 200000f); if (iter < 40) { List <triangle> new_trs = splitTriangle(tr); foreach (triangle trr in new_trs) { list_ini.Add(trr); } iter++; } else if (iter == 40) { Debug.Log(list_ini.Count); foreach (triangle t in list_ini) { triangles.Add(t); } //triangles = list_ini; break; } list_ini.RemoveAt(0); } } Debug.Log(triangles.Count); hecho = true; graph gf = createGraph(); Debug.Log(gf.connections.Count); } }
public int getNumberOfValidSquare(string list) { int count = 0; int[] lengths = new int[3]; triangle tri; string[] o; o = list.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); lengths = Array.ConvertAll(o, s => int.Parse(s)); tri = new triangle(lengths); if (tri.isValidTriangle()) { count++; } return(count); }
private void Tri_MouseDown(object sender, MouseButtonEventArgs e) { SelectTriangle = (triangle)sender; if (SelectOne == false) { SelectOne = true; CordinateOneX = SelectTriangle.CordinateX; CordinateOneY = SelectTriangle.CordinateY; TypeOne = "triangle"; } else if (SelectOne == true) { SelectTwo = true; CordinateTwoX = SelectTriangle.CordinateX; CordinateTwoY = SelectTriangle.CordinateY; TypeTwo = "triangle"; } }
public bool DequeueAdjacentTriangle(HashSet <Vector3> usedPositions, out triangle t) { t = Triangles.Dequeue(); var gp0 = _positions[t.I0]; var gp1 = _positions[t.I1]; var gp2 = _positions[t.I2]; if (usedPositions.Any()) { if (!usedPositions.Contains(gp0) && !usedPositions.Contains(gp1) && !usedPositions.Contains(gp2)) { Triangles.Enqueue(t); return(false); } } usedPositions.Add(gp0); usedPositions.Add(gp1); usedPositions.Add(gp2); return(true); }
//FUNC void DrawTriangle(triangle t, bool points, bool lines) { int x1 = Convert.ToInt32(t.vect[0].x); int y1 = Convert.ToInt32(t.vect[0].y); int x2 = Convert.ToInt32(t.vect[1].x); int y2 = Convert.ToInt32(t.vect[1].y); int x3 = Convert.ToInt32(t.vect[2].x); int y3 = Convert.ToInt32(t.vect[2].y); SolidColorBrush color = getColor(t.luminosity); System.Windows.Shapes.Polygon tri = new System.Windows.Shapes.Polygon(); tri.Fill = color; if (lines) { tri.Stroke = System.Windows.Media.Brushes.Red; } else { tri.Stroke = color; } tri.Points.Add(new System.Windows.Point(x1, y1)); tri.Points.Add(new System.Windows.Point(x2, y2)); tri.Points.Add(new System.Windows.Point(x3, y3)); canvas.Children.Add(tri); if (points) { foreach (var i in t.vect) { Ellipse circle = new Ellipse(); circle.Margin = new Thickness(i.x, i.y, 0, 0); circle.Width = 5; circle.Height = 5; circle.Fill = System.Windows.Media.Brushes.Blue; if (!canvas.Children.Contains(circle)) { canvas.Children.Add(circle); } } } }
public static shape CreateShape(string s) { shape sp = null; switch (s) { case "三角形": sp = new triangle(2, 3, 4); break; case "矩形": sp = new rectangle(3, 4); break; case "正方形": sp = new square(5); break; default: throw new Exception("参数错误"); } return(sp); }
public static shape generateRandomShape(int seed) { Random rd = new Random(seed); int key = rd.Next(0, 3); shape shape = null; Console.Write(key); switch (key) { case 0: shape = new square(rd.NextDouble() + rd.Next(0, 10)); Console.WriteLine("正方形"); break; case 1: shape = new triangle(rd.NextDouble() + rd.Next(2, 5), rd.NextDouble() + rd.Next(2, 5), rd.NextDouble() + rd.Next(2, 5)); Console.WriteLine("三角形"); break; case 2: shape = new rectangle(rd.NextDouble() + rd.Next(0, 10), rd.NextDouble() + rd.Next(0, 10)); Console.WriteLine("矩形"); break; } return(shape); }
public static void Main() { List<int> squares = new List<int>(); List<int> perims = new List<int>(); triangle[] triangle= new triangle[1000]; int perimeter=0; int trianglecount=0; Stopwatch sw = new Stopwatch(); sw.Start(); for (int i=1;i<=1000;i++) squares.Add((i*i)); for (int a=1;a<1000;a++) for (int b=1;b<1000;b++) { if (a>b) continue; int test = a*a + b*b; if (squares.IndexOf(test)==-1) continue; perimeter=a+b+(int)Math.Sqrt(test); if (perimeter>1000) continue; trianglecount++; perims.Add(perimeter); Console.WriteLine("Perimeter {0} Side A {1} B {2} C {3}",perimeter,a,b,(Math.Sqrt(test))); } perims.Sort(); Console.WriteLine("triangles {0}",trianglecount); var mode = perims.GroupBy(n=> n). OrderByDescending(g=> g.Count()). Select(g => g.Key).FirstOrDefault(); sw.Stop(); Console.WriteLine("Answer is {0}. Elapsed time {1} ms",mode,sw.ElapsedMilliseconds); }
private void timerTick(object sender, EventArgs e) { canvas.Children.Clear(); double deltaX = 0.2; double fDelta = 2 * Math.PI / (4 * r / deltaX); fTheta += fDelta; matrix4x4 matRotZ = getMatrixRotationZ(0); matrix4x4 matRotX = getMatrixRotationX(0); matrix4x4 matRotY = getMatrixRotationY(fTheta); if (Math.Abs(x) >= r) { isHalfRotated = !isHalfRotated; } x += isHalfRotated ? deltaX : -deltaX; double z = isHalfRotated ? -Math.Sqrt(r * r - x * x) : Math.Sqrt(r * r - x * x); z += 4 * r; matrix4x4 matTrans = getMatrixTranslation(x, 1, z);; // all the transformations that we need to do in this matrix matrix4x4 matWorld = createUnitMatrix(); matWorld = matRotZ * matRotX * matRotY; matWorld = matWorld * matTrans; //camera vect3D vUp = new vect3D(0, 1, 0); vect3D vTarget = new vect3D(0, 0, 1); matrix4x4 matCameraRot = getMatrixRotationY(fYaw) * getMatrixRotationX(fXaw); vLookDir = matCameraRot * vTarget; vTarget = vCamera + vLookDir; matrix4x4 matCamera = matrixPointAt(vCamera, vTarget, vUp); matrix4x4 matView = matrixQuickInverse(matCamera); List <triangle> trianglesToRaster = new List <triangle>(); foreach (triangle tri in meshCube.tris) { triangle triProjected = new triangle(); triangle triTransformed = new triangle(); triangle triViewed = new triangle(); triTransformed.vect[0] = matWorld * tri.vect[0]; triTransformed.vect[1] = matWorld * tri.vect[1]; triTransformed.vect[2] = matWorld * tri.vect[2]; vect3D normal = new vect3D(); vect3D line1 = new vect3D(); vect3D line2 = new vect3D(); line1 = triTransformed.vect[1] - triTransformed.vect[0]; line2 = triTransformed.vect[2] - triTransformed.vect[0]; normal = line1.CrossProduct(line2); normal.Normalize(); //projecting // объект виден если угол между нормалью к нему и нашей камерой меньше 90 градусов // будем проверять это с помощью скалярного произведения векторов // скалярное произведение векторов угол между которыми > 90 градусов будет < 0 if (normal.DotProduct(triTransformed.vect[0] - vCamera) < 0.0) { // illumination (all illumination cooming from direction, not from the point) // свет тем ярче чем меньше угол между нормалью поверхности с направлением света vect3D lightDirection = new vect3D(-5.0, -5.0, -5.0); lightDirection.Normalize(); double dp = normal.DotProduct(lightDirection); triProjected.luminosity = dp; triTransformed.luminosity = dp; triViewed.vect[0] = matView * triTransformed.vect[0]; triViewed.vect[1] = matView * triTransformed.vect[1]; triViewed.vect[2] = matView * triTransformed.vect[2]; triProjected.vect[0] = matProj * triViewed.vect[0]; triProjected.vect[1] = matProj * triViewed.vect[1]; triProjected.vect[2] = matProj * triViewed.vect[2]; triProjected.vect[0] = triProjected.vect[0] / triProjected.vect[0].w; triProjected.vect[1] = triProjected.vect[1] / triProjected.vect[1].w; triProjected.vect[2] = triProjected.vect[2] / triProjected.vect[2].w; //offset into visible mormalized space vect3D vOffsetView = new vect3D(1, 1, 0); triProjected.vect[0] = triProjected.vect[0] + vOffsetView; triProjected.vect[1] = triProjected.vect[1] + vOffsetView; triProjected.vect[2] = triProjected.vect[2] + vOffsetView; triProjected.vect[0].x *= canvas.Width / 2.0; triProjected.vect[0].y *= canvas.Height / 2.0; triProjected.vect[1].x *= canvas.Width / 2.0; triProjected.vect[1].y *= canvas.Height / 2.0; triProjected.vect[2].x *= canvas.Width / 2.0; triProjected.vect[2].y *= canvas.Height / 2.0; trianglesToRaster.Add(triProjected); } } // Sort triangles from back to front try { trianglesToRaster.Sort(); } catch (Exception ex) { } foreach (triangle t in trianglesToRaster) { DrawTriangle(t, true, true); } }
/// <summary> /// Generate an icosahedron mesh /// </summary> /// <returns>New mesh to be added to a GameObject</returns> private Mesh BuildMesh() { var mesh = new Mesh(); // create 12 vertices of a icosahedron var t = (1.0f + Mathf.Sqrt(5.0f)) / 2.0f; var vertices = new List <Vector3>(12); var uvs = new List <Vector2>(12); vertices.Add(SmoothCurve(-1, t, 0)); vertices.Add(SmoothCurve(1, t, 0)); vertices.Add(SmoothCurve(-1, -t, 0)); vertices.Add(SmoothCurve(1, -t, 0)); vertices.Add(SmoothCurve(0, -1, t)); vertices.Add(SmoothCurve(0, 1, t)); vertices.Add(SmoothCurve(0, -1, -t)); vertices.Add(SmoothCurve(0, 1, -t)); vertices.Add(SmoothCurve(t, 0, -1)); vertices.Add(SmoothCurve(t, 0, 1)); vertices.Add(SmoothCurve(-t, 0, -1)); vertices.Add(SmoothCurve(-t, 0, 1)); uvs.Add(new Vector2(0.5f, 0.5f)); uvs.Add(new Vector2(0, 0)); uvs.Add(new Vector2(0, 0)); uvs.Add(new Vector2(0, 0)); uvs.Add(new Vector2(0f, 0.2f)); uvs.Add(new Vector2(0, 0)); uvs.Add(new Vector2(0, 0)); uvs.Add(new Vector2(0, 0)); uvs.Add(new Vector2(0, 0)); uvs.Add(new Vector2(0, 0)); uvs.Add(new Vector2(0, 0)); uvs.Add(new Vector2(0.5f, 0.2f)); triangle[] triangles = { // 5 faces around point 0 new triangle(0, 11, 5), new triangle(0, 5, 1), new triangle(0, 1, 7), new triangle(0, 7, 10), new triangle(0, 10, 11), // 5 adjacent faces new triangle(1, 5, 9), new triangle(5, 11, 4), new triangle(11, 10, 2), new triangle(10, 7, 6), new triangle(7, 1, 8), // 5 faces around point 3 new triangle(3, 9, 4), new triangle(3, 4, 2), new triangle(3, 2, 6), new triangle(3, 6, 8), new triangle(3, 8, 9), // 5 adjacent faces new triangle(4, 9, 5), new triangle(2, 4, 11), new triangle(6, 2, 10), new triangle(8, 6, 7), new triangle(9, 8, 1) }; for (int i = 0; i < recursionLevel; i++) { var newTriangles = new List <triangle>(); foreach (var face in triangles) { var AB = GetMiddlePoint(vertices[face.A], vertices[face.B]); vertices.Add(SmoothCurve(AB)); int ab = vertices.Count - 1; var BC = GetMiddlePoint(vertices[face.B], vertices[face.C]); vertices.Add(SmoothCurve(BC)); int bc = vertices.Count - 1; var CA = GetMiddlePoint(vertices[face.C], vertices[face.A]); vertices.Add(SmoothCurve(CA)); int ca = vertices.Count - 1; var tri = new triangle(face.A, ab, ca); newTriangles.Add(tri); newTriangles.Add(new triangle(face.B, bc, ab)); newTriangles.Add(new triangle(face.C, ca, bc)); newTriangles.Add(new triangle(ab, bc, ca)); } triangles = newTriangles.ToArray(); } mesh.vertices = vertices.ToArray(); mesh.triangles = ConvertToMeshFilterTriangles(triangles); return(mesh); }
static void Main(string[] args) { var MyMenu = new Menu(); //Reads string into Menu._MenuOptionList[firstemptyindex] // //in simpler terms, build your menu MyMenu.MenuOptionAdd("3) Calculate the area of a triangle.", 3); MyMenu.MenuOptionAdd("Choose from the following options", 0); MyMenu.MenuOptionAdd("1) Circles and circular shapes.", 1); MyMenu.MenuOptionAdd("2) Calculate the area of a square or rectangle.", 2); MyMenu.MenuOptionAdd("4) Open an OpenGL Window.", 4); int showMenu = 1; while (showMenu > 0) { //When showMenu returns a 0, then Program stops showMenu = MyMenu.ShowMenu(); switch (showMenu) { case 1: var docircles = new circle(); docircles.CircleMenu(); break; case 2: var myRectangleArea = new rectangle(); var rectarea = myRectangleArea.Area(); if (rectarea > 0.00) { Console.WriteLine($"The area of your rectangle or square is: {rectarea}"); } else { Console.WriteLine("Something went wrong. Sorry, quitting."); } break; case 3: var myTriangleArea = new triangle(); var triarea = myTriangleArea.Area(); if (triarea > 0.00) { Console.WriteLine($"The area of your triangle is: {triarea}"); } else { Console.WriteLine("Something went wrong. Sorry, quitting."); } break; case 4: var win = new Window(600, 600); win.Run(1, 10); break; default: Console.Clear(); System.Environment.Exit(0); break; } Console.WriteLine("Press any key to return to main menu"); Console.ReadKey(); } /* TODO: * * Add more math classes/methods * * */ }
public void visit(triangle t) { num.numTriangle += 1; }
public void visit(triangle t) { t.a /= 2; t.b /= 2; t.c /= 2; }
public void Enqueue(triangle t) { _que.Enqueue(t); }
private void filling_the_board() { int s = 50; double x = 0.0; int f = -1; NEW: f++; if (f == 8) { x = x + 50; s = 50; } if (f == 16) { x = x + 50; s = 50; } if (f == 24) { x = x + 50; s = 50; } if (f == 32) { x = x + 50; s = 50; } if (f == 40) { x = x + 50; s = 50; } if (f == 48) { x = x + 50; s = 50; } if (f == 56) { x = x + 50; s = 50; } if (f >= 64) { goto Exit; } Storyboard down = new Storyboard(); DoubleAnimation doubleAnimation = new DoubleAnimation(); doubleAnimation.To = game_board.Height - s; doubleAnimation.Duration = TimeSpan.FromSeconds(0.5); Random r = new Random(f + Environment.TickCount - Environment.ProcessorCount - (int)x); switch (r.Next(1, 16)) { case 1: cercle cer = new cercle(); cer.SetValue(Canvas.LeftProperty, x); cer.SetValue(Canvas.TopProperty, (double)s); game_board.Children.Add(cer); Storyboard.SetTarget(doubleAnimation, cer); Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)")); down.Children.Add(doubleAnimation); down.Duration = doubleAnimation.Duration; cer.CordinateX = Canvas.GetLeft(cer); cer.CordinateY = Canvas.GetTop(cer); cer.MouseDown += Cer_MouseDown; down.Begin(); s = s + 50; goto NEW; case 9: goto case 1; case 11: goto case 1; case 2: hexagon hex = new hexagon(); hex.SetValue(Canvas.LeftProperty, x); hex.SetValue(Canvas.TopProperty, (double)s); game_board.Children.Add(hex); Storyboard.SetTarget(doubleAnimation, hex); Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)")); down.Children.Add(doubleAnimation); down.Duration = doubleAnimation.Duration; hex.CordinateX = Canvas.GetLeft(hex); hex.CordinateY = Canvas.GetTop(hex); hex.MouseDown += Hex_MouseDown; down.Begin(); s = s + 50; goto NEW; case 7: goto case 2; case 15: goto case 2; case 3: pentahedron pent = new pentahedron(); pent.SetValue(Canvas.LeftProperty, x); pent.SetValue(Canvas.TopProperty, (double)s); game_board.Children.Add(pent); Storyboard.SetTarget(doubleAnimation, pent); Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)")); down.Children.Add(doubleAnimation); down.Duration = doubleAnimation.Duration; pent.CordinateX = Canvas.GetLeft(pent); pent.CordinateY = Canvas.GetTop(pent); pent.MouseDown += Pent_MouseDown; down.Begin(); s = s + 50; goto NEW; case 6: goto case 3; case 10: goto case 3; case 4: square squ = new square(); squ.SetValue(Canvas.LeftProperty, x); squ.SetValue(Canvas.TopProperty, (double)s); game_board.Children.Add(squ); Storyboard.SetTarget(doubleAnimation, squ); Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)")); down.Children.Add(doubleAnimation); down.Duration = doubleAnimation.Duration; squ.CordinateX = Canvas.GetLeft(squ); squ.CordinateY = Canvas.GetTop(squ); squ.MouseDown += Squ_MouseDown; down.Begin(); s = s + 50; goto NEW; case 8: goto case 4; case 13: goto case 4; case 5: triangle tri = new triangle(); tri.SetValue(Canvas.LeftProperty, x); tri.SetValue(Canvas.TopProperty, (double)s); game_board.Children.Add(tri); Storyboard.SetTarget(doubleAnimation, tri); Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)")); down.Children.Add(doubleAnimation); down.Duration = doubleAnimation.Duration; tri.CordinateX = Canvas.GetLeft(tri); tri.CordinateY = Canvas.GetTop(tri); tri.MouseDown += Tri_MouseDown; down.Begin(); s = s + 50; goto NEW; case 14: goto case 5; case 12: goto case 5; } Exit: ; }
private triangle GetNextTriangle() { if (isASCII) { if (sr.EndOfStream) { return(null); } try { string[] facet = sr.ReadLine().Trim().Split(' '); if (facet.Length != 5 || facet[0] != "facet" || facet[1] != "normal") { return(null); } if (!double.TryParse(facet[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double nx)) { return(null); } if (!double.TryParse(facet[3], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double ny)) { return(null); } if (!double.TryParse(facet[4], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double nz)) { return(null); } accumulatePrecision(facet[2], facet[3], facet[4]); if (sr.ReadLine().Trim() != "outer loop") { return(null); } string[] vertex = sr.ReadLine().Trim().Split(' '); if (vertex.Length != 4 || vertex[0] != "vertex") { return(null); } if (!double.TryParse(vertex[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p1x)) { return(null); } if (!double.TryParse(vertex[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p1y)) { return(null); } if (!double.TryParse(vertex[3], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p1z)) { return(null); } accumulatePrecision(vertex[1], vertex[2], vertex[3]); vertex = sr.ReadLine().Trim().Split(' '); if (vertex.Length != 4 || vertex[0] != "vertex") { return(null); } if (!double.TryParse(vertex[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p2x)) { return(null); } if (!double.TryParse(vertex[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p2y)) { return(null); } if (!double.TryParse(vertex[3], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p2z)) { return(null); } accumulatePrecision(vertex[1], vertex[2], vertex[3]); vertex = sr.ReadLine().Trim().Split(' '); if (vertex.Length != 4 || vertex[0] != "vertex") { return(null); } if (!double.TryParse(vertex[1], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p3x)) { return(null); } if (!double.TryParse(vertex[2], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p3y)) { return(null); } if (!double.TryParse(vertex[3], NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out double p3z)) { return(null); } accumulatePrecision(vertex[1], vertex[2], vertex[3]); if (sr.ReadLine().Trim() != "endloop") { return(null); } if (sr.ReadLine().Trim() != "endfacet") { return(null); } triangle res = new triangle(new GeoPoint(p1x, p1y, p1z), new GeoPoint(p2x, p2y, p2z), new GeoPoint(p3x, p3y, p3z), new GeoVector(nx, ny, nz)); return(res); } catch (IOException) { return(null); } } else { if (br.BaseStream.Position >= br.BaseStream.Length) { return(null); } try { GeoVector normal = new GeoVector(br.ReadSingle(), br.ReadSingle(), br.ReadSingle()); GeoPoint p1 = new GeoPoint(br.ReadSingle(), br.ReadSingle(), br.ReadSingle()); GeoPoint p2 = new GeoPoint(br.ReadSingle(), br.ReadSingle(), br.ReadSingle()); GeoPoint p3 = new GeoPoint(br.ReadSingle(), br.ReadSingle(), br.ReadSingle()); int attr = br.ReadUInt16(); triangle res = new triangle(p1, p2, p3, normal); return(res); } catch (EndOfStreamException) { return(null); } } }
private void TriBtn_Click(object sender, EventArgs e) { triangle triangleForm = new triangle(); triangleForm.Show(); }
/// <summary> /// Import SMD model /// </summary> public void Import(string filepath) { try { if (!File.Exists(filepath)) { System.Windows.MessageBox.Show("Model importer: " + Path.GetFileName(filepath) + " file does not exist"); return; } this.FilePath = filepath; List <String> lines = new List <string>(); string line; string[] args; System.IO.StreamReader file = new System.IO.StreamReader(filepath); while ((line = file.ReadLine()) != null) { // add line to list, while removing double spaces and trim start/end lines.Add(Regex.Replace(line, @"\s+", " ").Trim()); //Regex.Replace(line, " +", " ") } file.Close(); for (int i = 0; i < lines.Count; i++) { string l = lines[i].ToLower(); if (string.IsNullOrEmpty(l)) { continue; } if (l.Contains("version")) { this.version = Convert.ToInt16(l.Split(' ')[1]); } #region nodes if (l.Contains("nodes")) { i++; // next line l = lines[i].ToLower(); while (l != "end") { args = lines[i].Split(' ');//(Regex.Replace(lines[i], @"\s+", " ").Trim()).Split(' '); // if number objects inferior to what we expect, return // TODO throw an exception if (args.Length < 3) { System.Windows.MessageBox.Show("SMD Importer Error: unexpected number of node definition arguments."); return; } nodes.Add(new node(Convert.ToInt32(args[0]), Convert.ToInt32(args[2]), args[1].Replace("\"", string.Empty))); i++; l = lines[i]; } } #endregion #region skeleton if (l.Contains("skeleton")) { while (!l.ToLower().StartsWith("time ")) { i++; l = lines[i]; } if (l.Split(' ')[1] == "0") { i++; l = lines[i]; while (l.ToLower() != "end") { args = l.Split(' '); // if number objects inferior to what we expect, return // TODO throw an exception if (args.Length < 6) { System.Windows.MessageBox.Show("SMD Importer Error: unexpected number of skeleton definition arguments."); return; } skeleton_nodes.Add(new skeleton_node(args[0], new Vector3(args[1], args[2], args[3]), new Vector3(args[4], args[5], args[6]))); i++; l = lines[i]; } } else { System.Windows.MessageBox.Show("SMD Importer Error: could not find skeleton definition for 'time 0'."); } } #endregion #region get triangles // triangles if (l.Contains("triangles")) { // for each triangle for (int t = i + 1; t < lines.Count; t += 4) { triangle tri = new triangle(); tri.mat_name = lines[t]; #region get vertices in this triangle // for each triangle for (int v = 1; v < 4; v++) { // split string into string array for each space char sperator args = lines[t + v].Split(' '); if (args[0] == "end") { break; } // if number objects inferior to what we expect, return // TODO throw an exception if (args.Length < 10) { System.Windows.MessageBox.Show("SMD Importer Error: unexpected number of vertex definition arguments (" + args.Length + ") \nIn triangle at line number " + t); return; } // load values into vertex class vertex vtx = new vertex(); vtx.parent_bone = Convert.ToInt32(args[0]); vtx.pos = new Vector3(args[1], args[2], args[3]); vtx.norm = new Vector3(args[4], args[5], args[6]); vtx.uv = new Vector2(args[7], args[8]); // for each bone assigned to this vertex ( *2 two args bone_id/weight ) int vtx_weight_count = Convert.ToInt16(args[9]) * 2; // for each bone weighted to this vertex for (int w = 0; w < vtx_weight_count; w += 2) { vtx.bone_weights.Add(new bone_weight(Convert.ToInt32(args[10 + w]), Convert.ToSingle(args[11 + w]))); } // add vertex data to triangle object tri.verts.Add(vtx); } #endregion // add triangle to list SMD_triangles.Add(tri); } } #endregion } } catch { } }
//--- protected void addInsertItem(int ind) { Item ob = new Item(); int sw = comboBoxItems.SelectedIndex; switch (sw) { case 0: ob = new point(); break; case 1: ob = new mLine(); break; case 2: ob = new circle(); break; case 3: ob = new ellipse(); break; case 4: ob = new triangle(); break; case 5: ob = new rectangle(); break; case 6: ob = new roundRect(); break; case 7: ob = new polygon(); break; case 8: ob = new arc(); break; case 9: ob = new color(); break; default: break; } if (ind < 0) { if (listBoxIcons.SelectedIndex < 0) { return; } icons[listBoxIcons.SelectedIndex].add(ob); listBoxItems.SelectedIndex = listBoxItems.Items.Count - 1; } else { icons[listBoxIcons.SelectedIndex].insert(ind, ob); listBoxItems.SelectedIndex = ind; } }