﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Keith Hair &#187; Intersection</title>
	<atom:link href="http://keith-hair.net/blog/tag/intersection/feed/" rel="self" type="application/rss+xml" />
	<link>http://keith-hair.net/blog</link>
	<description>Scripting is fun like any other hobby</description>
	<lastBuildDate>Sun, 21 Mar 2010 20:08:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Know where a Point is relevant to a Segment</title>
		<link>http://keith-hair.net/blog/2009/05/28/know-where-a-point-is-relevant-to-a-segment/</link>
		<comments>http://keith-hair.net/blog/2009/05/28/know-where-a-point-is-relevant-to-a-segment/#comments</comments>
		<pubDate>Thu, 28 May 2009 07:35:45 +0000</pubDate>
		<dc:creator>Keith H</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Intersection]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Placement]]></category>
		<category><![CDATA[Point]]></category>
		<category><![CDATA[Relavant]]></category>
		<category><![CDATA[Segment]]></category>

		<guid isPermaLink="false">http://keith-hair.net/blog/?p=68</guid>
		<description><![CDATA[Looking at my previous post I felt the isBehindLine function served it's purpose, but if I get a more complicated problem similar to a raycasting test with imaginary ray of arbitrary width I would need to know more information where a Point is relevant to a Segment. 
The "whereAboutSegment" function will return a String this [...]]]></description>
			<content:encoded><![CDATA[<p>Looking at my previous post I felt the <a href="http://keith-hair.net/blog/2009/05/27/knowing-if-a-point-is-behind-a-line">isBehindLine </a>function served it's purpose, but if I get a more complicated problem similar to a raycasting test with imaginary ray of arbitrary width I would need to know more information where a Point is relevant to a Segment. </p>
<p>The "whereAboutSegment" function will return a String this time, with more detailed info of the Point's where-a-abouts instead of just knowing if its behind a line.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_where_about_segment_720672036"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="/blog/examples/intersections/where_about_segment.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/blog/examples/intersections/where_about_segment.swf"
			name="fm_where_about_segment_720672036"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p><span id="more-68"></span></p>
<pre class="actionscript">&nbsp;
<span style="color: #808080; font-style: italic;">/*-----------------------------------------------------------------
Returns a String describing where Point P is relevant to line CD:
&quot;left&quot;,&quot;right&quot;,&quot;front&quot; or &quot;behind&quot;
If Point P is a Point on line CD, an empty String is returned.
 ----------------------------------------------------------------*/</span>
<span style="color: #000000; font-weight: bold;">function</span> whereAboutSegment<span style="color: #66cc66;">&#40;</span>P:Point,C:Point,D:Point<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">String</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> F:Point;
	<span style="color: #000000; font-weight: bold;">var</span> G:Point;
	<span style="color: #000000; font-weight: bold;">var</span> s:<span style="color: #0066CC;">Boolean</span>;
	<span style="color: #000000; font-weight: bold;">var</span> l:<span style="color: #0066CC;">Boolean</span>;
	<span style="color: #000000; font-weight: bold;">var</span> r:<span style="color: #0066CC;">Boolean</span>;
	<span style="color: #000000; font-weight: bold;">var</span> f:<span style="color: #0066CC;">Boolean</span>;
	<span style="color: #000000; font-weight: bold;">var</span> a:<span style="color: #0066CC;">Number</span>=Point.<span style="color: #006600;">distance</span><span style="color: #66cc66;">&#40;</span>P,C.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">y</span> - D.<span style="color: #006600;">y</span>,C.<span style="color: #006600;">x</span> - D.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span> / <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #000000; font-weight: bold;">var</span> b:<span style="color: #0066CC;">Number</span>=Point.<span style="color: #006600;">distance</span><span style="color: #66cc66;">&#40;</span>P,C.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">-1</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">y</span> - D.<span style="color: #006600;">y</span>,C.<span style="color: #006600;">x</span> - D.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span> / <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	s = a == b;
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>a &lt; b<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		f=<span style="color: #000000; font-weight: bold;">true</span>;
	<span style="color: #66cc66;">&#125;</span>
	F=C.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">y</span> - D.<span style="color: #006600;">y</span>,C.<span style="color: #006600;">x</span> - D.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	G=C.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">-1</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">y</span> - D.<span style="color: #006600;">y</span>,C.<span style="color: #006600;">x</span> - D.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	a=Point.<span style="color: #006600;">distance</span><span style="color: #66cc66;">&#40;</span>P,F.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">y</span> - D.<span style="color: #006600;">y</span>,C.<span style="color: #006600;">x</span> - D.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	b=Point.<span style="color: #006600;">distance</span><span style="color: #66cc66;">&#40;</span>P,G.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">-1</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">y</span> - D.<span style="color: #006600;">y</span>,C.<span style="color: #006600;">x</span> - D.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>a &lt; b<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		r=<span style="color: #000000; font-weight: bold;">true</span>;
	<span style="color: #66cc66;">&#125;</span>
	F=D.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">y</span> - D.<span style="color: #006600;">y</span>,C.<span style="color: #006600;">x</span> - D.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	G=D.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">-1</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">y</span> - D.<span style="color: #006600;">y</span>,C.<span style="color: #006600;">x</span> - D.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	a=Point.<span style="color: #006600;">distance</span><span style="color: #66cc66;">&#40;</span>P,F.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">y</span> - D.<span style="color: #006600;">y</span>,C.<span style="color: #006600;">x</span> - D.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	b=Point.<span style="color: #006600;">distance</span><span style="color: #66cc66;">&#40;</span>P,G.<span style="color: #0066CC;">add</span><span style="color: #66cc66;">&#40;</span>Point.<span style="color: #006600;">polar</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">-1</span>,<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">atan2</span><span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">y</span> - D.<span style="color: #006600;">y</span>,C.<span style="color: #006600;">x</span> - D.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>a &gt; b<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		l=<span style="color: #000000; font-weight: bold;">true</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>s &amp;&amp; l &amp;&amp; r<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;&quot;</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!f &amp;&amp; l &amp;&amp; r<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;behind&quot;</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>f &amp;&amp; l &amp;&amp; r<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;front&quot;</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>l<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;left&quot;</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>r<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;right&quot;</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #ff0000;">&quot;&quot;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://keith-hair.net/blog/2009/05/28/know-where-a-point-is-relevant-to-a-segment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find intersection of a Line and Quadratic Curve</title>
		<link>http://keith-hair.net/blog/2009/05/19/find-intersection-of-a-line-and-quadratic-curve/</link>
		<comments>http://keith-hair.net/blog/2009/05/19/find-intersection-of-a-line-and-quadratic-curve/#comments</comments>
		<pubDate>Wed, 20 May 2009 00:21:54 +0000</pubDate>
		<dc:creator>Keith H</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Curves]]></category>
		<category><![CDATA[Intersection]]></category>
		<category><![CDATA[Line]]></category>
		<category><![CDATA[Point]]></category>
		<category><![CDATA[Quadratic]]></category>

		<guid isPermaLink="false">http://keith-hair.net/blog/?p=41</guid>
		<description><![CDATA[After writing a function to test intersections of a line to a polygon, another problem came up where I needed
to test an intersection of a line to a curve. I'm sure there is a library someone has wrote that could do this but there is some fun in figuring out puzzles.
There was a recent comment [...]]]></description>
			<content:encoded><![CDATA[<p>After writing a function to test intersections of a line to a polygon, another problem came up where I needed<br />
to test an intersection of a line to a curve. I'm sure there is a library someone has wrote that could do this but there is some fun in figuring out puzzles.<br />
There was a recent comment about curves and intersections so I decided to go ahead an post what I attempted.<br />
I feel using a loop is expensive, but it's all I can think of doing for this, similar to the <a href="http://keith-hair.net/blog/2008/08/08/line-to-polygon-intersection-data/">lineIntersectPoly </a>function.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_line_to_curve_intersection_1429634146"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="/blog/examples/curves/line_to_curve_intersection.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/blog/examples/curves/line_to_curve_intersection.swf"
			name="fm_line_to_curve_intersection_1429634146"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object><br />
<span id="more-41"></span></p>
<pre class="actionscript">&nbsp;
&nbsp;
<span style="color: #808080; font-style: italic;">/*---------------------------------------------------------------------------
Returns Array of intersection Points on a quadratic curve.
An empty Array is returned if no intersection is found.
&nbsp;
Parameters:
A		-Start Point of a segment to make intersection.
B		-End Point of a segment to make intersection.
sp		-Start Point of curve.
cp		-Control Point of curve.
ep		-End Point of curve.
rez		-The resolution of curve tests
Note: Uses another function for testing the intersections:
&nbsp;
http://keith-hair.net/blog/2008/08/04/find-intersection-point-of-two-lines-in-as3/
&nbsp;
----------------------------------------------------------------------------*/</span>
<span style="color: #000000; font-weight: bold;">function</span> lineToQCurve_Intersect<span style="color: #66cc66;">&#40;</span>A:Point,B:Point,sp:Point,cp:Point,ep:Point,rez:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">80</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Array</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">//rez less than 2 is almost &quot;Pointless&quot; LOL.</span>
	<span style="color: #000000; font-weight: bold;">var</span> low:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">2</span>;
	<span style="color: #000000; font-weight: bold;">var</span> high:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">99</span>; <span style="color: #808080; font-style: italic;">//100 causes infinite loop.</span>
	rez=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">min</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">max</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">min</span><span style="color: #66cc66;">&#40;</span>low,high<span style="color: #66cc66;">&#41;</span>,rez<span style="color: #66cc66;">&#41;</span>,high<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #000000; font-weight: bold;">var</span> t:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
	<span style="color: #000000; font-weight: bold;">var</span> ft:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
	<span style="color: #000000; font-weight: bold;">var</span> n:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">99</span>/rez;
	<span style="color: #000000; font-weight: bold;">var</span> C:Point=<span style="color: #000000; font-weight: bold;">new</span> Point<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #000000; font-weight: bold;">var</span> D:Point=<span style="color: #000000; font-weight: bold;">new</span> Point<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #000000; font-weight: bold;">var</span> L:Point=<span style="color: #000000; font-weight: bold;">new</span> Point<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #000000; font-weight: bold;">var</span> ip:Point;
	<span style="color: #000000; font-weight: bold;">var</span> a:<span style="color: #0066CC;">Array</span>=<span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #808080; font-style: italic;">//test possible segment intersections in a loop.</span>
	<span style="color: #000000; font-weight: bold;">var</span> z:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">100</span>;
	<span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span>z &gt; <span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		t=z/<span style="color: #cc66cc;">100</span>;
		C.<span style="color: #006600;">x</span>=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">pow</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>-t,<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>*sp.<span style="color: #006600;">x</span><span style="color: #cc66cc;">+2</span>*<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>-t<span style="color: #66cc66;">&#41;</span>*t*cp.<span style="color: #006600;">x</span>+<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">pow</span><span style="color: #66cc66;">&#40;</span>t,<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>*ep.<span style="color: #006600;">x</span>;
		C.<span style="color: #006600;">y</span>=<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">pow</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>-t,<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>*sp.<span style="color: #006600;">y</span><span style="color: #cc66cc;">+2</span>*<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>-t<span style="color: #66cc66;">&#41;</span>*t*cp.<span style="color: #006600;">y</span>+<span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">pow</span><span style="color: #66cc66;">&#40;</span>t,<span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>*ep.<span style="color: #006600;">y</span>;
		D=L;<span style="color: #808080; font-style: italic;">//Connect start to last end point</span>
		L=C.<span style="color: #006600;">clone</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>z == <span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			D=ep.<span style="color: #006600;">clone</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		ip=lineIntersectLine<span style="color: #66cc66;">&#40;</span>A,B,C,D<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>ip != <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			a.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>ip<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>a.<span style="color: #0066CC;">length</span> == <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">break</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
		z-=n;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">return</span> a;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://keith-hair.net/blog/2009/05/19/find-intersection-of-a-line-and-quadratic-curve/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Line to Polygon intersection data</title>
		<link>http://keith-hair.net/blog/2008/08/08/line-to-polygon-intersection-data/</link>
		<comments>http://keith-hair.net/blog/2008/08/08/line-to-polygon-intersection-data/#comments</comments>
		<pubDate>Sat, 09 Aug 2008 03:59:24 +0000</pubDate>
		<dc:creator>Keith H</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Intersection]]></category>
		<category><![CDATA[Line]]></category>
		<category><![CDATA[Point]]></category>
		<category><![CDATA[Polygon]]></category>

		<guid isPermaLink="false">http://keith-hair.com/blog/?p=24</guid>
		<description><![CDATA[This Actionscript 3 function returns some properties that are about a line-to-polygon intersection.
It's useful for knowing all intersection points of a segment intersecting with a polygon, and knowing if the end points of the segment are inside the polygon.

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_line_to_polygon_intersection_1339941096"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="/blog/examples/intersections/line_to_polygon_intersection.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/blog/examples/intersections/line_to_polygon_intersection.swf"
			name="fm_line_to_polygon_intersection_1339941096"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

This uses the "lineIntersectLine" function of the earlier post.
&#160;
/*---------------------------------------------------------------------------
Returns an Object with the [...]]]></description>
			<content:encoded><![CDATA[<p>This Actionscript 3 function returns some properties that are about a line-to-polygon intersection.<br />
It's useful for knowing all intersection points of a segment intersecting with a polygon, and knowing if the end points of the segment are inside the polygon.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_line_to_polygon_intersection_1224462503"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="/blog/examples/intersections/line_to_polygon_intersection.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/blog/examples/intersections/line_to_polygon_intersection.swf"
			name="fm_line_to_polygon_intersection_1224462503"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p><span id="more-24"></span></p>
<p>This uses the "<a href="http://keith-hair.net/blog/2008/08/04/find-intersection-point-of-two-lines-in-as3/">lineIntersectLine</a>" function of the earlier post.</p>
<pre class="actionscript">&nbsp;
<span style="color: #808080; font-style: italic;">/*---------------------------------------------------------------------------
Returns an Object with the following properties:
intersects        -Boolean indicating if an intersection exists.
start_inside      -Boolean indicating if Point A is inside of the polygon.
end_inside       -Boolean indicating if Point B is inside of the polygon.
intersections    -Array of intersection Points along the polygon.
centroid          -A Point indicating &quot;center of mass&quot; of the polygon.
&nbsp;
&quot;pa&quot; is an Array of Points.
----------------------------------------------------------------------------*/</span>
<span style="color: #000000; font-weight: bold;">function</span> lineIntersectPoly<span style="color: #66cc66;">&#40;</span>A : Point, B : Point, pa:<span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Object</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> An:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">1</span>;
	<span style="color: #000000; font-weight: bold;">var</span> Bn:<span style="color: #0066CC;">int</span>=<span style="color: #cc66cc;">1</span>;
	<span style="color: #000000; font-weight: bold;">var</span> C:Point;
	<span style="color: #000000; font-weight: bold;">var</span> D:Point;
	<span style="color: #000000; font-weight: bold;">var</span> i:Point;
	<span style="color: #000000; font-weight: bold;">var</span> cx:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
	<span style="color: #000000; font-weight: bold;">var</span> cy:<span style="color: #0066CC;">Number</span>=<span style="color: #cc66cc;">0</span>;
	<span style="color: #000000; font-weight: bold;">var</span> result:<span style="color: #0066CC;">Object</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	pa.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>pa<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
	result.<span style="color: #006600;">intersects</span> = <span style="color: #000000; font-weight: bold;">false</span>;
	result.<span style="color: #006600;">intersections</span>=<span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;
	result.<span style="color: #006600;">start_inside</span>=<span style="color: #000000; font-weight: bold;">false</span>;
	result.<span style="color: #006600;">end_inside</span>=<span style="color: #000000; font-weight: bold;">false</span>;
	<span style="color: #000000; font-weight: bold;">var</span> n:<span style="color: #0066CC;">int</span>=pa.<span style="color: #006600;">length</span><span style="color: #cc66cc;">-1</span>;
	<span style="color: #b1b100;">while</span><span style="color: #66cc66;">&#40;</span>n &gt; <span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		C=Point<span style="color: #66cc66;">&#40;</span>pa<span style="color: #66cc66;">&#91;</span>n<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>n &gt; <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
			cx+=C.<span style="color: #006600;">x</span>;
			cy+=C.<span style="color: #006600;">y</span>;
			D=Point<span style="color: #66cc66;">&#40;</span>pa<span style="color: #66cc66;">&#91;</span>n<span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>||Point<span style="color: #66cc66;">&#40;</span>pa<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;
			i=lineIntersectLine<span style="color: #66cc66;">&#40;</span>A,B,C,D<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>i != <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
				result.<span style="color: #006600;">intersections</span>.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>i<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>lineIntersectLine<span style="color: #66cc66;">&#40;</span>A,<span style="color: #000000; font-weight: bold;">new</span> Point<span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">x</span>+D.<span style="color: #006600;">x</span>,A.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span>,C,D<span style="color: #66cc66;">&#41;</span> != <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
				An++;
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>lineIntersectLine<span style="color: #66cc66;">&#40;</span>B,<span style="color: #000000; font-weight: bold;">new</span> Point<span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">x</span>+D.<span style="color: #006600;">x</span>,B.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span>,C,D<span style="color: #66cc66;">&#41;</span> != <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
				Bn++;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
		n--;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>An % <span style="color: #cc66cc;">2</span> == <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		result.<span style="color: #006600;">start_inside</span>=<span style="color: #000000; font-weight: bold;">true</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>Bn % <span style="color: #cc66cc;">2</span> == <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span>
		result.<span style="color: #006600;">end_inside</span>=<span style="color: #000000; font-weight: bold;">true</span>;
	<span style="color: #66cc66;">&#125;</span>
	result.<span style="color: #006600;">centroid</span>=<span style="color: #000000; font-weight: bold;">new</span> Point<span style="color: #66cc66;">&#40;</span>cx/<span style="color: #66cc66;">&#40;</span>pa.<span style="color: #006600;">length</span><span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span>,cy/<span style="color: #66cc66;">&#40;</span>pa.<span style="color: #006600;">length</span><span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	result.<span style="color: #006600;">intersects</span> = result.<span style="color: #006600;">intersections</span>.<span style="color: #0066CC;">length</span> &gt; <span style="color: #cc66cc;">0</span>;
	<span style="color: #b1b100;">return</span> result;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://keith-hair.net/blog/2008/08/08/line-to-polygon-intersection-data/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Line to Circle Intersection data</title>
		<link>http://keith-hair.net/blog/2008/08/05/line-to-circle-intersection-data/</link>
		<comments>http://keith-hair.net/blog/2008/08/05/line-to-circle-intersection-data/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 07:45:17 +0000</pubDate>
		<dc:creator>Keith H</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Flash 9]]></category>
		<category><![CDATA[Circle]]></category>
		<category><![CDATA[Intersection]]></category>
		<category><![CDATA[Line]]></category>

		<guid isPermaLink="false">http://keith-hair.com/blog/?p=23</guid>
		<description><![CDATA[Here is an ActionScript 3 function that will return intersection information between a segment and circle.
It's useful to me to know if a segment is partially intersecting with a circle or going completely through.

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_line_to_circle_intersection_813962201"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="/blog/examples/intersections/line_to_circle_intersection.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/blog/examples/intersections/line_to_circle_intersection.swf"
			name="fm_line_to_circle_intersection_813962201"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>

&#160;
/*---------------------------------------------------------------------------
Returns an Object with the following properties:
	enter			-Intersection Point entering the circle.
	exit			-Intersection Point exiting the circle.
	inside			-Boolean indicating if the [...]]]></description>
			<content:encoded><![CDATA[<p>Here is an ActionScript 3 function that will return intersection information between a segment and circle.<br />
It's useful to me to know if a segment is partially intersecting with a circle or going completely through.<br />

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_line_to_circle_intersection_1415310557"
			class="flashmovie"
			width="550"
			height="400">
	<param name="movie" value="/blog/examples/intersections/line_to_circle_intersection.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/blog/examples/intersections/line_to_circle_intersection.swf"
			name="fm_line_to_circle_intersection_1415310557"
			width="550"
			height="400">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object><br />
<span id="more-23"></span></p>
<pre class="actionscript">&nbsp;
<span style="color: #808080; font-style: italic;">/*---------------------------------------------------------------------------
Returns an Object with the following properties:
	enter			-Intersection Point entering the circle.
	exit			-Intersection Point exiting the circle.
	inside			-Boolean indicating if the points of the line are inside the circle.
	tangent		-Boolean indicating if line intersect at one point of the circle.
	intersects		-Boolean indicating if there is an intersection of the points and the circle.
&nbsp;
If both &quot;enter&quot; and &quot;exit&quot; are null, or &quot;intersects&quot; == false, it indicates there is no intersection.
&nbsp;
This is a customization of the intersectCircleLine Javascript function found here:
&nbsp;
http://www.kevlindev.com/gui/index.htm
&nbsp;
----------------------------------------------------------------------------*/</span>
<span style="color: #000000; font-weight: bold;">function</span> lineIntersectCircle<span style="color: #66cc66;">&#40;</span>A : Point, B : Point, C : Point, r : <span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Object</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> result : <span style="color: #0066CC;">Object</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Object</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	result.<span style="color: #006600;">inside</span> = <span style="color: #000000; font-weight: bold;">false</span>;
	result.<span style="color: #006600;">tangent</span> = <span style="color: #000000; font-weight: bold;">false</span>;
	result.<span style="color: #006600;">intersects</span> = <span style="color: #000000; font-weight: bold;">false</span>;
	result.<span style="color: #0066CC;">enter</span>=<span style="color: #000000; font-weight: bold;">null</span>;
	result.<span style="color: #006600;">exit</span>=<span style="color: #000000; font-weight: bold;">null</span>;
	<span style="color: #000000; font-weight: bold;">var</span> a : <span style="color: #0066CC;">Number</span> = <span style="color: #66cc66;">&#40;</span>B.<span style="color: #006600;">x</span> - A.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> * <span style="color: #66cc66;">&#40;</span>B.<span style="color: #006600;">x</span> - A.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #66cc66;">&#40;</span>B.<span style="color: #006600;">y</span> - A.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span> * <span style="color: #66cc66;">&#40;</span>B.<span style="color: #006600;">y</span> - A.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #000000; font-weight: bold;">var</span> b : <span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">2</span> * <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>B.<span style="color: #006600;">x</span> - A.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> * <span style="color: #66cc66;">&#40;</span>A.<span style="color: #006600;">x</span> - C.<span style="color: #006600;">x</span><span style="color: #66cc66;">&#41;</span> +<span style="color: #66cc66;">&#40;</span>B.<span style="color: #006600;">y</span> - A.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span> * <span style="color: #66cc66;">&#40;</span>A.<span style="color: #006600;">y</span> - C.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #000000; font-weight: bold;">var</span> cc : <span style="color: #0066CC;">Number</span> = C.<span style="color: #006600;">x</span> * C.<span style="color: #006600;">x</span> + C.<span style="color: #006600;">y</span> * C.<span style="color: #006600;">y</span> + A.<span style="color: #006600;">x</span> * A.<span style="color: #006600;">x</span> + A.<span style="color: #006600;">y</span> * A.<span style="color: #006600;">y</span> - <span style="color: #cc66cc;">2</span> * <span style="color: #66cc66;">&#40;</span>C.<span style="color: #006600;">x</span> * A.<span style="color: #006600;">x</span> + C.<span style="color: #006600;">y</span> * A.<span style="color: #006600;">y</span><span style="color: #66cc66;">&#41;</span> - r * r;
	<span style="color: #000000; font-weight: bold;">var</span> deter : <span style="color: #0066CC;">Number</span> = b * b - <span style="color: #cc66cc;">4</span> * a * cc;
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>deter &lt;= <span style="color: #cc66cc;">0</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		result.<span style="color: #006600;">inside</span> = <span style="color: #000000; font-weight: bold;">false</span>;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">e</span> : <span style="color: #0066CC;">Number</span> = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">sqrt</span> <span style="color: #66cc66;">&#40;</span>deter<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #000000; font-weight: bold;">var</span> u1 : <span style="color: #0066CC;">Number</span> = <span style="color: #66cc66;">&#40;</span> - b + <span style="color: #0066CC;">e</span> <span style="color: #66cc66;">&#41;</span> / <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span> * a <span style="color: #66cc66;">&#41;</span>;
		<span style="color: #000000; font-weight: bold;">var</span> u2 : <span style="color: #0066CC;">Number</span> = <span style="color: #66cc66;">&#40;</span> - b - <span style="color: #0066CC;">e</span> <span style="color: #66cc66;">&#41;</span> / <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span> * a <span style="color: #66cc66;">&#41;</span>;
		<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>u1 &lt; <span style="color: #cc66cc;">0</span> || u1 &gt; <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> &amp;&amp; <span style="color: #66cc66;">&#40;</span>u2 &lt; <span style="color: #cc66cc;">0</span> || u2 &gt; <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>u1 &lt; <span style="color: #cc66cc;">0</span> &amp;&amp; u2 &lt; <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #66cc66;">&#40;</span>u1 &gt; <span style="color: #cc66cc;">1</span> &amp;&amp; u2 &gt; <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				result.<span style="color: #006600;">inside</span> = <span style="color: #000000; font-weight: bold;">false</span>;
			<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
				result.<span style="color: #006600;">inside</span> = <span style="color: #000000; font-weight: bold;">true</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span> &lt;= u2 &amp;&amp; u2 &lt;= <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				result.<span style="color: #0066CC;">enter</span>=Point.<span style="color: #006600;">interpolate</span> <span style="color: #66cc66;">&#40;</span>A, B, <span style="color: #cc66cc;">1</span> - u2<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span> &lt;= u1 &amp;&amp; u1 &lt;= <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				result.<span style="color: #006600;">exit</span>=Point.<span style="color: #006600;">interpolate</span> <span style="color: #66cc66;">&#40;</span>A, B, <span style="color: #cc66cc;">1</span> - u1<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
			result.<span style="color: #006600;">intersects</span> = <span style="color: #000000; font-weight: bold;">true</span>;
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>result.<span style="color: #006600;">exit</span> != <span style="color: #000000; font-weight: bold;">null</span> &amp;&amp; result.<span style="color: #0066CC;">enter</span> != <span style="color: #000000; font-weight: bold;">null</span> &amp;&amp; result.<span style="color: #006600;">exit</span>.<span style="color: #006600;">equals</span> <span style="color: #66cc66;">&#40;</span>result.<span style="color: #0066CC;">enter</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				result.<span style="color: #006600;">tangent</span> = <span style="color: #000000; font-weight: bold;">true</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">return</span> result;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://keith-hair.net/blog/2008/08/05/line-to-circle-intersection-data/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Find Intersection Point of two lines in AS3</title>
		<link>http://keith-hair.net/blog/2008/08/04/find-intersection-point-of-two-lines-in-as3/</link>
		<comments>http://keith-hair.net/blog/2008/08/04/find-intersection-point-of-two-lines-in-as3/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 04:07:43 +0000</pubDate>
		<dc:creator>Keith H</dc:creator>
				<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[Flash 9]]></category>
		<category><![CDATA[Intersection]]></category>

		<guid isPermaLink="false">http://keith-hair.com/blog/?p=22</guid>
		<description><![CDATA[The intersection Point of two lines is useful to know. This is a function to find it in AS3.

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_line_to_line_intersection_1688892008"
			class="flashmovie"
			width="550"
			height="550">
	<param name="movie" value="/blog/examples/intersections/line_to_line_intersection.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/blog/examples/intersections/line_to_line_intersection.swf"
			name="fm_line_to_line_intersection_1688892008"
			width="550"
			height="550">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>


//---------------------------------------------------------------
//Checks for intersection of Segment if as_seg is true.
//Checks for intersection of Line if as_seg is false.
//Return intersection of Segment AB and Segment EF as a Point
//Return null if there is no intersection
//---------------------------------------------------------------
function [...]]]></description>
			<content:encoded><![CDATA[<p>The intersection Point of two lines is useful to know. This is a function to find it in AS3.</p>
<p style="text-align: center;">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_line_to_line_intersection_536479776"
			class="flashmovie"
			width="550"
			height="550">
	<param name="movie" value="/blog/examples/intersections/line_to_line_intersection.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/blog/examples/intersections/line_to_line_intersection.swf"
			name="fm_line_to_line_intersection_536479776"
			width="550"
			height="550">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object><br />
<span id="more-22"></span></p>
<pre class="brush: as3;">
//---------------------------------------------------------------
//Checks for intersection of Segment if as_seg is true.
//Checks for intersection of Line if as_seg is false.
//Return intersection of Segment AB and Segment EF as a Point
//Return null if there is no intersection
//---------------------------------------------------------------
function lineIntersectLine(A:Point,B:Point,E:Point,F:Point,as_seg:Boolean=true):Point {
    var ip:Point;
    var a1:Number;
    var a2:Number;
    var b1:Number;
    var b2:Number;
    var c1:Number;
    var c2:Number;

    a1= B.y-A.y;
    b1= A.x-B.x;
    c1= B.x*A.y - A.x*B.y;
    a2= F.y-E.y;
    b2= E.x-F.x;
    c2= F.x*E.y - E.x*F.y;

    var denom:Number=a1*b2 - a2*b1;
    if (denom == 0) {
        return null;
    }
    ip=new Point();
    ip.x=(b1*c2 - b2*c1)/denom;
    ip.y=(a2*c1 - a1*c2)/denom;

    //---------------------------------------------------
    //Do checks to see if intersection to endpoints
    //distance is longer than actual Segments.
    //Return null if it is with any.
    //---------------------------------------------------
    if(as_seg){
        if(Math.pow(ip.x - B.x, 2) + Math.pow(ip.y - B.y, 2) &gt; Math.pow(A.x - B.x, 2) + Math.pow(A.y - B.y, 2))
        {
           return null;
        }
        if(Math.pow(ip.x - A.x, 2) + Math.pow(ip.y - A.y, 2) &gt; Math.pow(A.x - B.x, 2) + Math.pow(A.y - B.y, 2))
        {
           return null;
        }

        if(Math.pow(ip.x - F.x, 2) + Math.pow(ip.y - F.y, 2) &gt; Math.pow(E.x - F.x, 2) + Math.pow(E.y - F.y, 2))
        {
           return null;
        }
        if(Math.pow(ip.x - E.x, 2) + Math.pow(ip.y - E.y, 2) &gt; Math.pow(E.x - F.x, 2) + Math.pow(E.y - F.y, 2))
        {
           return null;
        }
    }
    return ip;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://keith-hair.net/blog/2008/08/04/find-intersection-point-of-two-lines-in-as3/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>
