<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: 360 Visualizer</title>
	<atom:link href="http://www.projectatomic.com/2008/05/360-visualizer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.projectatomic.com/2008/05/360-visualizer/</link>
	<description>WEB DEVELOPMENT 2.0</description>
	<pubDate>Fri, 21 Nov 2008 11:09:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: James</title>
		<link>http://www.projectatomic.com/2008/05/360-visualizer/#comment-144</link>
		<dc:creator>James</dc:creator>
		<pubDate>Thu, 18 Sep 2008 13:55:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.projectatomic.com/?p=37#comment-144</guid>
		<description>Hi, I found your blog on this new directory of WordPress Blogs at blackhatbootcamp.com/listofwordpressblogs.  I dont know how your blog came up, must have been a typo, i duno.  Anyways, I just clicked it and here I am.  Your blog looks good.  Have a nice day.  James.</description>
		<content:encoded><![CDATA[<p>Hi, I found your blog on this new directory of WordPress Blogs at blackhatbootcamp.com/listofwordpressblogs.  I dont know how your blog came up, must have been a typo, i duno.  Anyways, I just clicked it and here I am.  Your blog looks good.  Have a nice day.  James.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Project Atomic &#187; Blog Archive &#187; 360 Visualizer Revisited</title>
		<link>http://www.projectatomic.com/2008/05/360-visualizer/#comment-89</link>
		<dc:creator>Project Atomic &#187; Blog Archive &#187; 360 Visualizer Revisited</dc:creator>
		<pubDate>Mon, 18 Aug 2008 20:02:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.projectatomic.com/?p=37#comment-89</guid>
		<description>[...] when a developer takes some of your code and improves it in ways you cannot imagine. The original 360 Visualizer was just an attempt to recreate some functionality that is often seen in Flash, but rarely in DHTML [...]</description>
		<content:encoded><![CDATA[<p>[...] when a developer takes some of your code and improves it in ways you cannot imagine. The original 360 Visualizer was just an attempt to recreate some functionality that is often seen in Flash, but rarely in DHTML [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: J5</title>
		<link>http://www.projectatomic.com/2008/05/360-visualizer/#comment-87</link>
		<dc:creator>J5</dc:creator>
		<pubDate>Sun, 17 Aug 2008 21:48:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.projectatomic.com/?p=37#comment-87</guid>
		<description>Emailed it to you.  Feel free to change it, improve it, post it here, whatever.</description>
		<content:encoded><![CDATA[<p>Emailed it to you.  Feel free to change it, improve it, post it here, whatever.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: J5</title>
		<link>http://www.projectatomic.com/2008/05/360-visualizer/#comment-86</link>
		<dc:creator>J5</dc:creator>
		<pubDate>Sun, 17 Aug 2008 21:42:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.projectatomic.com/?p=37#comment-86</guid>
		<description>Forgot to convert  and &#38; in the previous comment, and now it won't let me post.</description>
		<content:encoded><![CDATA[<p>Forgot to convert  and &amp; in the previous comment, and now it won&#8217;t let me post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: J5</title>
		<link>http://www.projectatomic.com/2008/05/360-visualizer/#comment-85</link>
		<dc:creator>J5</dc:creator>
		<pubDate>Sun, 17 Aug 2008 21:35:43 +0000</pubDate>
		<guid isPermaLink="false">http://www.projectatomic.com/?p=37#comment-85</guid>
		<description>Here's an extension of your plugin that can take a text file as source (rather than a folder of images), supports both click-and-hold and click-and-drag and has a parameter for the direction of spin (direction -1 or +1).

&lt;pre&gt;
jQuery.fn.view360 = function(o){
  var s = {
	first: 1, last: 36,
	direction: 1, responsiveness: 2.5,
	source: "http://www.projectatomic.com/wordpress/wp-content/uploads/2008/05/",
	sourceType: "folder",
	imageType: "jpg"
	/* source: "/360list.txt",
	sourceType: "text" */
  };
  if (o) jQuery.extend(s, o);
  var img = [], i = s.first, mouseover = false, mousedown = false, mousemove = false, mousedownpos = {}, mousemovepos = {}, posiX = 0, timer, delay = 0, _this = this;
  function load360(){
	switch (s.sourceType) {
		case "text":
			jQuery.get(s.source,function(data) {
				var dlist = data.split("\n");
				s.first = 1;
				s.last = dlist.length;
				for (i; i &#60;= s.last; ++i) {
					img[i] = jQuery('').appendTo(jQuery(_this));
				}
				i = s.first;
				img[s.last].load(function(){jQuery("img:gt(0)",_this).css({"z-index":"0"});});
				init360();
			});
			break;
		case "folder":
		default:
			for (i; i &#60;= s.last; ++i) {
				img[i] = jQuery('').appendTo(jQuery(_this));
			}
			i = s.first;
			img[s.last].load(function(){jQuery("img:gt(0)",_this).css({"z-index":"0"});});
			init360();
			break;
	}	
  }
  function init360(){
    jQuery(_this).css('cursor', 'move').mousemove(function(e){
      var scrollX = self.pageXOffset &#124;&#124; document.documentElement.scrollLeft &#124;&#124; document.body.scrollLeft;
      var offset = jQuery(this).offset();
      var centerX = parseInt(jQuery(this).width()) / 2 + offset.left - scrollX ;
      posiX = e.clientX - centerX;
    }).mousedown(function(e){
      mousedown = true;
	  mousedownpos.x = e.clientX;
	  mousedownpos.y = e.clientY;
      rotate360();
      return false;
    }).mouseup(function(e){
      mousedown = false;
	  mousemove = false;
	  img[i].css({"cursor":"move"});
      return false;
    }).mouseover(function(e){
      mouseover = true;
    }).mouseout(function(e){
      mouseover = false;
    }).mousemove(function(e){
	  if (mousedown) {
		  mousemove = true;
		  mousemovepos.x = e.clientX;
		  mousemovepos.y = e.clientY;
		  rotate360();
	  }
	});
  }
  function rotate360(){
    if (mouseover &#38;&#38; mousedown) {
	  var movex = 0;
	  if (mousemove) {
		movex = mousemovepos.x - mousedownpos.x;
		if (Math.abs(movex)  0)
				i+=s.direction;
			else
				i-=s.direction;
		} else {
	        if (posiX &#62; 0) 
	          i+=s.direction;
	        else 
	          i-=s.direction;
		}
        i = (i == 0 &#124;&#124; i == s.last) ? s.last : i % s.last;
		console.log("i: "+i+",prev: "+prev);
		img[prev].css({"z-index":"1"});
		img[i].css({"z-index":"2","cursor":"move"});
		img[prev].css({"z-index":"0"});
      }
      if (!mousemove) {
		// takes 300 milliseconds to start
 	    if (delay == 0) {
			delay = -100;
		} else {
			delay = Math.round(Math.abs(posiX*2) / parseInt(jQuery(_this).width()) * 200) - 10; // 0-100
		}	  
		timer = setTimeout(rotate360, 200 - delay);
	  }
    } 
  }
  load360();
}
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>Here&#8217;s an extension of your plugin that can take a text file as source (rather than a folder of images), supports both click-and-hold and click-and-drag and has a parameter for the direction of spin (direction -1 or +1).</p>
<pre>
jQuery.fn.view360 = function(o){
  var s = {
	first: 1, last: 36,
	direction: 1, responsiveness: 2.5,
	source: "http://www.projectatomic.com/wordpress/wp-content/uploads/2008/05/",
	sourceType: "folder",
	imageType: "jpg"
	/* source: "/360list.txt",
	sourceType: "text" */
  };
  if (o) jQuery.extend(s, o);
  var img = [], i = s.first, mouseover = false, mousedown = false, mousemove = false, mousedownpos = {}, mousemovepos = {}, posiX = 0, timer, delay = 0, _this = this;
  function load360(){
	switch (s.sourceType) {
		case "text":
			jQuery.get(s.source,function(data) {
				var dlist = data.split("\n");
				s.first = 1;
				s.last = dlist.length;
				for (i; i &lt;= s.last; ++i) {
					img[i] = jQuery('').appendTo(jQuery(_this));
				}
				i = s.first;
				img[s.last].load(function(){jQuery("img:gt(0)",_this).css({"z-index":"0"});});
				init360();
			});
			break;
		case "folder":
		default:
			for (i; i &lt;= s.last; ++i) {
				img[i] = jQuery('').appendTo(jQuery(_this));
			}
			i = s.first;
			img[s.last].load(function(){jQuery("img:gt(0)",_this).css({"z-index":"0"});});
			init360();
			break;
	}
  }
  function init360(){
    jQuery(_this).css('cursor', 'move').mousemove(function(e){
      var scrollX = self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;
      var offset = jQuery(this).offset();
      var centerX = parseInt(jQuery(this).width()) / 2 + offset.left - scrollX ;
      posiX = e.clientX - centerX;
    }).mousedown(function(e){
      mousedown = true;
	  mousedownpos.x = e.clientX;
	  mousedownpos.y = e.clientY;
      rotate360();
      return false;
    }).mouseup(function(e){
      mousedown = false;
	  mousemove = false;
	  img[i].css({"cursor":"move"});
      return false;
    }).mouseover(function(e){
      mouseover = true;
    }).mouseout(function(e){
      mouseover = false;
    }).mousemove(function(e){
	  if (mousedown) {
		  mousemove = true;
		  mousemovepos.x = e.clientX;
		  mousemovepos.y = e.clientY;
		  rotate360();
	  }
	});
  }
  function rotate360(){
    if (mouseover &amp;&amp; mousedown) {
	  var movex = 0;
	  if (mousemove) {
		movex = mousemovepos.x - mousedownpos.x;
		if (Math.abs(movex)  0)
				i+=s.direction;
			else
				i-=s.direction;
		} else {
	        if (posiX &gt; 0)
	          i+=s.direction;
	        else
	          i-=s.direction;
		}
        i = (i == 0 || i == s.last) ? s.last : i % s.last;
		console.log("i: "+i+",prev: "+prev);
		img[prev].css({"z-index":"1"});
		img[i].css({"z-index":"2","cursor":"move"});
		img[prev].css({"z-index":"0"});
      }
      if (!mousemove) {
		// takes 300 milliseconds to start
 	    if (delay == 0) {
			delay = -100;
		} else {
			delay = Math.round(Math.abs(posiX*2) / parseInt(jQuery(_this).width()) * 200) - 10; // 0-100
		}
		timer = setTimeout(rotate360, 200 - delay);
	  }
    }
  }
  load360();
}
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel MacDonald</title>
		<link>http://www.projectatomic.com/2008/05/360-visualizer/#comment-45</link>
		<dc:creator>Daniel MacDonald</dc:creator>
		<pubDate>Fri, 20 Jun 2008 15:43:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.projectatomic.com/?p=37#comment-45</guid>
		<description>The CGI was produced by With a Twist Studio for the launch of the Nissan GTR. Here's a story about the video: http://www.cgchannel.com/news/viewfeature.jsp?newsid=7341

Thirty-six frames were exported from the video for the 360 Visualizer (a process repeated for each available exterior color). The JavaScript tracks the mouse position and loads either the next or previous frame after a short delay to create the spinning effect.</description>
		<content:encoded><![CDATA[<p>The CGI was produced by With a Twist Studio for the launch of the Nissan GTR. Here&#8217;s a story about the video: <a href="http://www.cgchannel.com/news/viewfeature.jsp?newsid=7341" rel="nofollow">http://www.cgchannel.com/news/viewfeature.jsp?newsid=7341</a></p>
<p>Thirty-six frames were exported from the video for the 360 Visualizer (a process repeated for each available exterior color). The JavaScript tracks the mouse position and loads either the next or previous frame after a short delay to create the spinning effect.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sil3ncer7</title>
		<link>http://www.projectatomic.com/2008/05/360-visualizer/#comment-41</link>
		<dc:creator>Sil3ncer7</dc:creator>
		<pubDate>Wed, 18 Jun 2008 18:36:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.projectatomic.com/?p=37#comment-41</guid>
		<description>What was required for the 3d part. How does it render the "next" image? Looks awesome.. I love it.. Is that gt5 prologue?

-Thanks</description>
		<content:encoded><![CDATA[<p>What was required for the 3d part. How does it render the &#8220;next&#8221; image? Looks awesome.. I love it.. Is that gt5 prologue?</p>
<p>-Thanks</p>
]]></content:encoded>
	</item>
</channel>
</rss>
