using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace pcd_g1
{
	class SlopeTypeACollideRange : CollideRange
	{
		public Point P1 { get; set; }
		public Point P2 { get; set; }

		public SlopeTypeACollideRange(IStageObject item)
		{
			StageItem = item;
			P1 = new Point(0, 0);
			P2 = new Point(item.Width, 0);
		}

		public override bool Judge(double x, double y, CollideRange range)
		{
			return false;
		}

		public static bool CrossLineJudge(PointF p1, PointF p2, PointF q1, PointF q2)
		{
			if (p1.X >= p2.X)
			{
				if ((p1.X < q1.X && p1.X < q2.X) || (p2.X > q1.X && p2.X > q2.X)) return false;
			}
			else
			{
				if ((p2.X < q1.X && p2.X < q2.X) || (p1.X > q1.X && p1.X > q2.X)) return false;
			}
			if (p1.Y >= p2.Y)
			{
				if ((p1.Y < q1.Y && p1.Y < q2.Y) || (p2.Y > q1.Y && p2.Y > q2.Y)) return false;
			}
			else
			{
				if ((p2.Y < q1.Y && p2.Y < q2.Y) || (p1.Y > q1.Y && p1.Y > q2.Y)) return false;
			}

			return !((((p1.X - p2.X)*(q1.Y-p1.Y)+(p1.Y-p2.Y)*(p1.X-q1.X))*
				((p1.X-p2.X)*(q2.Y-p1.Y)+(p1.Y-p2.Y)*(p1.X-q2.X))>0) ||
				(((q1.X - q2.X)*(p1.Y-q1.Y)+(q1.Y-q2.Y)*(q1.X-p1.X))*
				((q1.X-q2.X)*(p2.Y-q1.Y)+(q1.Y-q2.Y)*(q1.X-p2.X))>0));

			//参考 http://www5d.biglobe.jp/~tomoya03/shtml/algorithm/intersectionEX.htm
		}
	}
}
