public void WriteXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            ele.TryPathTo("Vertices/Vertex1", true, out subEle);
            subEle.Value = Vertex1.ToString();

            ele.TryPathTo("Vertices/Vertex2", true, out subEle);
            subEle.Value = Vertex2.ToString();

            ele.TryPathTo("Vertices/Vertex3", true, out subEle);
            subEle.Value = Vertex3.ToString();

            ele.TryPathTo("Edges/Vertices1_2", true, out subEle);
            subEle.Value = EdgeVertices1_2.ToString();

            ele.TryPathTo("Edges/Vertices2_3", true, out subEle);
            subEle.Value = EdgeVertices2_3.ToString();

            ele.TryPathTo("Edges/Vertices3_1", true, out subEle);
            subEle.Value = EdgeVertices3_1.ToString();

            ele.TryPathTo("Flags", true, out subEle);
            subEle.Value = Flags.ToString();
        }
Exemple #2
0
		public override bool Equals(object obj)
		{
			if (this == obj) return true;
			if (obj == null) return false;
			if (GetType() != obj.GetType()) return false;

			Edge<T> other = obj as Edge<T>;
			if (Vertex1 == null)
			{
				if (other?.Vertex1 != null)
					return false;
			}
			else if (!Vertex1.Equals(other?.Vertex1))
				return false;

			if (Vertex2 == null)
			{
				if (other?.Vertex2 != null)
					return false;
			}
			else if (!Vertex2.Equals(other?.Vertex2))
				return false;

			return true;
		}
Exemple #3
0
        public void RdButtonClicked(Data data, object sender, Color lineColor)
        {
            if (Lineded == false)
            {
                SaveFirstPoint(sender);
            }
            else if ((sender as RadioButton).Name == Vertex1.ToString())
            {
                MessageBox.Show("Нельзя провести линию в ту же точку", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Lineded = false;
            }
            else
            {
                SaveSecondPoint(sender);

                if (data.Edges[Vertex1].Contains(Vertex2))
                {
                    MessageBox.Show("Нельзя дважды провести линию", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Lineded = false;
                }
                else
                {
                    CreateLine(data, lineColor);
                }
            }
        }
Exemple #4
0
 public void MergeFrom(Triangle other)
 {
     if (other == null)
     {
         return;
     }
     if (other.vertex1_ != null)
     {
         if (vertex1_ == null)
         {
             vertex1_ = new global::FossFab.Vector3();
         }
         Vertex1.MergeFrom(other.Vertex1);
     }
     if (other.vertex2_ != null)
     {
         if (vertex2_ == null)
         {
             vertex2_ = new global::FossFab.Vector3();
         }
         Vertex2.MergeFrom(other.Vertex2);
     }
     if (other.vertex3_ != null)
     {
         if (vertex3_ == null)
         {
             vertex3_ = new global::FossFab.Vector3();
         }
         Vertex3.MergeFrom(other.Vertex3);
     }
 }
Exemple #5
0
 public override int GetHashCode()
 {
     unchecked
     {
         return((Vertex1.GetHashCode() * 397) ^ Vertex2.GetHashCode());
     }
 }
Exemple #6
0
 public void Move(double deltaX, double deltaY)
 {
     Vertex1.Move(deltaX, deltaY);
     Vertex2.Move(deltaX, deltaY);
     Vertex3.Move(deltaX, deltaY);
     Vertex4.Move(deltaX, deltaY);
 }
 /// <summary>
 /// Creates a String Representation of this Triangle.
 /// </summary>
 /// <returns>String representation of this Triangle.</returns>
 public override string ToString()
 {
     return($"Vertex1: {Vertex1.ToString()} " +
            $"Vertex2: {Vertex2.ToString()} " +
            $"Vertex3: {Vertex3.ToString()} " +
            $"Normal: {_normal.ToString()} " +
            $"Area: [{_area:0.00}]");
 }
Exemple #8
0
		public override int GetHashCode()
		{
			const int prime = 31;
			int result = 1;
			result = prime * result + (Vertex1 == null ? 0 : Vertex1.GetHashCode());
			result = prime * result + (Vertex2 == null ? 0 : Vertex2.GetHashCode());
			return result;
		}
Exemple #9
0
        private bool Equals(MyTriangle p)
        {
            bool flag = false;

            if (Vertex1.Equals(p.Vertex1))
            {
                if (Vertex2.Equals(p.Vertex2))
                {
                    if (Vertex3.Equals(p.Vertex3))
                    {
                        flag = true;
                    }
                }
                if (Vertex2.Equals(p.Vertex3))
                {
                    if (Vertex3.Equals(p.Vertex2))
                    {
                        flag = true;
                    }
                }
            }
            if (Vertex1.Equals(p.Vertex2))
            {
                if (Vertex2.Equals(p.Vertex1))
                {
                    if (Vertex3.Equals(p.Vertex3))
                    {
                        flag = true;
                    }
                }
                if (Vertex2.Equals(p.Vertex3))
                {
                    if (Vertex3.Equals(p.Vertex1))
                    {
                        flag = true;
                    }
                }
            }
            if (Vertex1.Equals(p.Vertex3))
            {
                if (Vertex2.Equals(p.Vertex1))
                {
                    if (Vertex3.Equals(p.Vertex2))
                    {
                        flag = true;
                    }
                }
                if (Vertex2.Equals(p.Vertex2))
                {
                    if (Vertex3.Equals(p.Vertex1))
                    {
                        flag = true;
                    }
                }
            }
            return(flag);
        }
Exemple #10
0
        public override int GetHashCode()
        {
            int code = 1;

            unchecked
            {
                code = Vertex1.GetHashCode() + Vertex2.GetHashCode();
            }
            return(code);
        }
        public void FlipVertical()
        {
            var minY = Min(Vertex1.Y, Vertex2.Y, Vertex3.Y);
            var maxY = Max(Vertex1.Y, Vertex2.Y, Vertex3.Y);
            var reltiveYCoordinate = (minY + maxY) / 2.0;

            Vertex1.FlipVertical(reltiveYCoordinate);
            Vertex2.FlipVertical(reltiveYCoordinate);
            Vertex3.FlipVertical(reltiveYCoordinate);
        }
Exemple #12
0
        public override double GetArea()
        {
            var a = Vertex1.Distance(Vertex2);
            var b = Vertex2.Distance(Vertex3);
            var c = Vertex3.Distance(Vertex1);

            var p = (a + b + c) / 2;

            return(Math.Sqrt(p * (p - a) * (p - b) * (p - c)));
        }
Exemple #13
0
        /// <summary>
        /// Downloads the second vertex buffer that contains mesh vertices data. To download data from GPU set <paramref name="forceGpu"/> to true and call this method from the thread other than main thread (see <see cref="Platform.IsInMainThread"/>).
        /// </summary>
        /// <param name="forceGpu">If set to <c>true</c> the data will be downloaded from the GPU, otherwise it can be loaded from the drive (source asset file) or from memory (if cached). Downloading mesh from GPU requires this call to be made from the other thread than main thread. Virtual assets are always downloaded from GPU memory due to lack of dedicated storage container for the asset data.</param>
        /// <returns>The gathered data.</returns>
        public Vertex1[] DownloadVertexBuffer1(bool forceGpu = false)
        {
            var vertices = VertexCount;
            var result   = new Vertex1[vertices];

            if (Internal_DownloadBuffer(__unmanagedPtr, forceGpu, result, (int)InternalBufferType.VB1))
            {
                throw new FlaxException("Failed to download mesh data.");
            }
            return(result);
        }
Exemple #14
0
            public override int GetHashCode()
            {
                unchecked
                {
                    var hashCode = Vertex1 != null?Vertex1.GetHashCode() : 0;

                    hashCode = (hashCode * 397) ^ (Vertex2 != null ? Vertex2.GetHashCode() : 0);
                    hashCode = (hashCode * 397) ^ (Vertex3 != null ? Vertex3.GetHashCode() : 0);
                    return(hashCode);
                }
            }
Exemple #15
0
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = Normal.GetHashCode();
         hashCode = (hashCode * 397) ^ Vertex1.GetHashCode();
         hashCode = (hashCode * 397) ^ Vertex2.GetHashCode();
         hashCode = (hashCode * 397) ^ Vertex3.GetHashCode();
         return(hashCode);
     }
 }
Exemple #16
0
 public void MoveEllipse(double deltaX, double deltaY)
 {
     Center.Move(deltaX, deltaY);
     Vertex1.Move(deltaX, deltaY);
     Vertex2.Move(deltaX, deltaY);
     Vertex3.Move(deltaX, deltaY);
     Vertex4.Move(deltaX, deltaY);
     Foci1.Move(deltaX, deltaY);
     Foci2.Move(deltaX, deltaY);
     Axis1.Move(deltaX, deltaY);
     Axis2.Move(deltaX, deltaY);
     BindingRectangle.Move(deltaX, deltaY);
 }
Exemple #17
0
        /// <summary>
        /// Replaces two vertices.
        /// </summary>
        /// <param name="previousVertex">The vertex to replace.</param>
        /// <param name="newVertex">The new vertex.</param>
        /// <returns>true when vertex was replaced, false otherwise.</returns>
        public bool Replace(Vertex previousVertex, Vertex newVertex)
        {
            if (Contains(previousVertex) && Contains(newVertex))
            {
                return(false);
            }

            if (Vertex1 == previousVertex && Vertex2 == previousVertex)
            {
                Vertex1.RemoveTriangle(this);
                return(false);
            }
            if (Vertex2 == previousVertex && Vertex3 == previousVertex)
            {
                Vertex1.RemoveTriangle(this);
                return(false);
            }
            if (Vertex1 == previousVertex && Vertex3 == previousVertex)
            {
                Vertex1.RemoveTriangle(this);
                return(false);
            }

            if (Vertex1 == previousVertex)
            {
                Vertex1 = newVertex;
                Vertex1.AddTriangle(this);
            }
            else if (Vertex2 == previousVertex)
            {
                Vertex2 = newVertex;
                Vertex2.AddTriangle(this);
            }
            else if (Vertex3 == previousVertex)
            {
                Vertex3 = newVertex;
                Vertex3.AddTriangle(this);
            }
            else
            {
                return(false);
            }

            Vertex1.Replace(previousVertex, newVertex);
            Vertex2.Replace(previousVertex, newVertex);
            Vertex3.Replace(previousVertex, newVertex);

            m_ReplacedBefore = true;
            return(true);
        }
Exemple #18
0
        public void ProjectOntoAxis(Vector axis, out double intervalMin, out double intervalMax)
        {
            Contract.Requires(axis.IsUnitVector);
            intervalMin = intervalMax = Vertex1.DotProduct(axis);

            double dist = Vertex2.DotProduct(axis);

            intervalMin = Math.Min(intervalMin, dist);
            intervalMax = Math.Max(intervalMax, dist);

            dist        = Vertex3.DotProduct(axis);
            intervalMin = Math.Min(intervalMin, dist);
            intervalMax = Math.Max(intervalMax, dist);
        }
Exemple #19
0
 /// <inheritdoc />
 public bool Equals(Triangle other)
 {
     if (ReferenceEquals(other, null))
     {
         return(false);
     }
     if (ReferenceEquals(other, this))
     {
         return(true);
     }
     return((Vertex1?.Equals(other.Vertex1) ?? false) &&
            (Vertex2?.Equals(other.Vertex2) ?? false) &&
            (Vertex3?.Equals(other.Vertex3) ?? false));
 }
Exemple #20
0
        public Vertex getOtherVertex(Vertex currentVertex)
        {
            Vertex nextVertex = null;

            if (Vertex1.Equals(currentVertex))
            {
                nextVertex = Vertex2;
            }
            else if (Vertex2.Equals(currentVertex))
            {
                nextVertex = Vertex1;
            }

            return(nextVertex);
        }
Exemple #21
0
        /// <summary>
        /// Indicates whether the current <see cref="UndirectedWeightedEdge{TVertex}"/>
        /// is equal to another <see cref="UndirectedWeightedEdge{TVertex}"/>.
        /// </summary>
        /// <param name="other">
        /// The <see cref="UndirectedWeightedEdge{TVertex}"/> to compare with this
        /// object.
        /// </param>
        /// <returns>
        /// <see langword="true"/> if the other
        /// <see cref="UndirectedWeightedEdge{TVertex}"/> is equal to this
        /// <see cref="UndirectedWeightedEdge{TVertex}"/>; otherwise,
        /// <see langword="false"/>.
        /// </returns>
        /// <seealso cref="IEquatable{T}.Equals(T)"/>
        public bool Equals(UndirectedWeightedEdge <TVertex> other)
        {
            if (other == null)
            {
                return(false);
            }

            bool sameVerticesSameOrder =
                Vertex1.Equals(other.Vertex1) && Vertex2.Equals(other.Vertex2);

            bool sameVerticesDifferentOrder =
                Vertex1.Equals(other.Vertex2) && Vertex2.Equals(other.Vertex1);

            return((sameVerticesSameOrder || sameVerticesDifferentOrder) &&
                   Weight.Equals(other.Weight));
        }
Exemple #22
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (vertex1_ != null)
            {
                hash ^= Vertex1.GetHashCode();
            }
            if (vertex2_ != null)
            {
                hash ^= Vertex2.GetHashCode();
            }
            if (vertex3_ != null)
            {
                hash ^= Vertex3.GetHashCode();
            }
            return(hash);
        }
Exemple #23
0
 // Update is called once per frame
 void Update()
 {
     for (int repeat = 0; repeat < 10; repeat++)
     {
         vertex  vtx0    = Vertex0.GetComponent <vertex>();
         vertex  vtx1    = Vertex1.GetComponent <vertex>();
         Vector3 vec0    = vtx0.Vcoord;
         Vector3 vec1    = vtx1.Vcoord;
         Vector3 vec01   = vec1 - vec0;
         float   dist    = vec01.magnitude;
         float   diff    = (dist - edgeLength) * 0.1f;
         Vector3 diffVec = diff * vec01.normalized;
         vec0       += diffVec;
         vec1       -= diffVec;
         vtx0.Vcoord = vec0;
         vtx1.Vcoord = vec1;
     }
 }
Exemple #24
0
 public bool Contains(Vertex vertex)
 {
     return(Vertex1.Equals(vertex) || Vertex2.Equals(vertex));
 }
 public void Offset(double x, double y, double z)
 {
     Vertex1.Offset(x, y, z);
     Vertex2.Offset(x, y, z);
 }
Exemple #26
0
 public override int GetHashCode()
 {
     return(Id.GetHashCode() ^ Weight.GetHashCode() ^ Vertex1.GetHashCode() ^ Vertex2.GetHashCode());
 }
Exemple #27
0
 /// <summary> GetHashCode </summary>
 public override int GetHashCode()
 {
     return(Vertex1.GetHashCode() ^ Vertex2.GetHashCode() ^ Directed.GetHashCode());
 }
 public bool Equals(Edge <T> other)
 {
     return(Vertex1.Equals(other.Vertex1) && Vertex2.Equals(other.Vertex2));
 }
 public object Clone()
 {
     return(new Line((Vertex)Vertex1.Clone(), (Vertex)Vertex2.Clone()));
 }
Exemple #30
0
 /// <summary> Создаёт глубокую копию данного объекта </summary>
 public override object Clone()
 {
     return(new DirectedEdge((Vertex)Vertex1.Clone(), (Vertex)Vertex2.Clone()));
 }