예제 #1
0
        void NormalizePoint(int i)
        {
            PolygonElement polygon1 = m_PolygonElement1;
            PolygonElement polygon2 = m_PolygonElement2;

            double d = MathHelper.Distance(polygon1.GetXn(i), polygon1.GetYn(i), polygon2.GetXn(i), polygon2.GetYn(i));
            double k = 20 * System.Math.Sqrt(2) * 3;

            if (d > k)
            {
                polygon2.SetXn(i, polygon1.GetXn(i) + (polygon2.GetXn(i) - polygon1.GetXn(i)) * k / d);
                polygon2.SetYn(i, polygon1.GetYn(i) + (polygon2.GetYn(i) - polygon1.GetYn(i)) * k / d);
            }
        }
예제 #2
0
        protected override void OnTick(double delta)
        {
            if (m_IsAnimated)
            {
                PolygonElement polygon1 = m_PolygonElement1;
                PolygonElement polygon2 = m_PolygonElement2;
                double         x, y;
                for (int i = 0; i < 6; i++)
                {
                    x = polygon1.GetXn(i);
                    y = polygon1.GetYn(i);
                    MovePoint(ref x, ref y, ref m_dx1[i], ref m_dy1[i]);
                    polygon1.SetXn(i, x);
                    polygon1.SetYn(i, y);

                    x = polygon2.GetXn(i);
                    y = polygon2.GetYn(i);
                    MovePoint(ref x, ref y, ref m_dx2[i], ref m_dy2[i]);
                    polygon2.SetXn(i, x);
                    polygon2.SetYn(i, y);

                    NormalizePoint(i);
                }

                Refresh();
            }

            base.OnTick(delta);
        }
        protected override void OnTick(double delta)
        {
            if (m_IsAnimated)
            {
                PolygonElement polygon = m_PolygonElement;
                double         x, y;
                for (int i = 0; i < 6; i++)
                {
                    x = polygon.GetXn(i);
                    y = polygon.GetYn(i);
                    MovePoint(ref x, ref y, ref m_dx[i], ref m_dy[i]);
                    polygon.SetXn(i, x);
                    polygon.SetYn(i, y);
                }

                Refresh();
            }

            base.OnTick(delta);
        }