﻿<?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; Circle</title>
	<atom:link href="http://keith-hair.net/blog/tag/circle/feed/" rel="self" type="application/rss+xml" />
	<link>http://keith-hair.net/blog</link>
	<description>Scripting is fun like any other hobby</description>
	<lastBuildDate>Thu, 18 Feb 2010 04:56:32 +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>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_603635447"
			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_603635447"
			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_1825385787"
			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_1825385787"
			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>
	</channel>
</rss>
