Exemple #1
0
        /// <summary>
        /// 타원과 한 점간의 충돌 체크
        /// </summary>
        /// <param name="ellipse">타원</param>
        /// <param name="pt">좌표</param>
        /// <returns>충돌 여부</returns>
        public static bool CheckEllipse(RectangleF ellipse, PointF pt)
        {
            EllipseCollision e = new EllipseCollision(10);
            var cp             = MathTool.CenterPoint(ellipse);

            return(e.Collide(cp.X, cp.Y, ellipse.Width / 2F, ellipse.Height / 2F, pt.X, pt.Y, 0.1));
        }
Exemple #2
0
        /// <summary>
        /// 원과 한 점간 충돌 체크
        /// </summary>
        /// <param name="rt1">원</param>
        /// <param name="pt">점</param>
        /// <returns>충돌여부</returns>
        public static bool CheckCircle(RectangleF rt1, Point pt)
        {
            var gap = Math.Min(rt1.Width, rt1.Height) / 2;
            var v   = MathTool.GetDistance(MathTool.CenterPoint(rt1), pt);

            return(v < gap);
        }
Exemple #3
0
        /// <summary>
        /// 원본 색상에 투명도가 적용된 색상을 덧씌웠을 때 색상
        /// </summary>
        /// <param name="dest">원본 색</param>
        /// <param name="src">덧씌울 색</param>
        /// <param name="srcAlpha">덧씌울 색 투명도</param>
        /// <returns>최종색</returns>
        public static Color MixColorAlpha(Color dest, Color src, int srcAlpha)
        {
            var r = Convert.ToByte(MathTool.Constrain(MathTool.Map(srcAlpha, 0.0, 255.0, dest.R, src.R), 0, 255));
            var g = Convert.ToByte(MathTool.Constrain(MathTool.Map(srcAlpha, 0.0, 255.0, dest.G, src.G), 0, 255));
            var b = Convert.ToByte(MathTool.Constrain(MathTool.Map(srcAlpha, 0.0, 255.0, dest.B, src.B), 0, 255));

            return(Color.FromArgb(r, g, b));
        }
Exemple #4
0
        /// <summary>
        /// 서로 다른 두 타원간의 충돌 체크
        /// </summary>
        /// <param name="ellipse1">타원1</param>
        /// <param name="ellipse2">타원2</param>
        /// <returns>충돌 여부</returns>
        public static bool CheckEllipse(RectangleF ellipse1, RectangleF ellipse2)
        {
            EllipseCollision e = new EllipseCollision(10);
            var cp             = MathTool.CenterPoint(ellipse1);
            var cpT            = MathTool.CenterPoint(ellipse2);

            return(e.Collide(cp.X, cp.Y, ellipse1.Width / 2F, ellipse1.Height / 2, cpT.X, cpT.Y, ellipse2.Width / 2F, ellipse2.Height / 2F));
        }
Exemple #5
0
        /// <summary>
        /// 지정한 각도가 시작각과 끝각 사이에 있는지 확인
        /// </summary>
        /// <param name="Angle">각도</param>
        /// <param name="StartAngle">시작각</param>
        /// <param name="EndAngle">끝각</param>
        /// <returns>비교 결과</returns>
        public static bool CompareAngle(double Angle, double StartAngle, double EndAngle)
        {
            bool ret = false;

            var ang   = MathTool.StandardAngle(Angle);
            var stang = MathTool.StandardAngle(StartAngle);
            var edang = MathTool.StandardAngle(EndAngle);

            if (stang > edang)
            {
                double s1 = stang - 360, e1 = edang;
                double s2 = stang, e2 = edang + 360;

                ret = (s1 <= ang && ang <= e1) || (s2 <= ang && ang <= e2);
            }
            else
            {
                ret = stang <= ang && ang <= edang;
            }
            return(ret);
        }
Exemple #6
0
 /// <summary>
 /// 선분이 지정한 중점을 기준으로한 반경안에 드는지 충돌 체크
 /// </summary>
 /// <param name="p1">선분 좌표1</param>
 /// <param name="p2">선분 좌표2</param>
 /// <param name="Location">중점</param>
 /// <param name="Dist">반경</param>
 /// <returns>충돌 여부</returns>
 public static bool CheckLine(PointF p1, PointF p2, PointF Location, float Dist)
 {
     return(Math.Abs(MathTool.GetDistance(p1, p2, Location)) < Dist);
 }