<?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: Z-map model for 3-axis machining</title>
	<atom:link href="http://www.anderswallin.net/2008/02/z-map-model-for-3-axis-machining/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anderswallin.net/2008/02/z-map-model-for-3-axis-machining/</link>
	<description></description>
	<pubDate>Wed, 07 Jan 2009 19:22:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: Dan</title>
		<link>http://www.anderswallin.net/2008/02/z-map-model-for-3-axis-machining/#comment-34218</link>
		<dc:creator>Dan</dc:creator>
		<pubDate>Sat, 16 Feb 2008 01:02:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.anderswallin.net/2008/02/z-map-model-for-3-axis-machining/#comment-34218</guid>
		<description>I don't think wikipedia is really appropriate to be a primary repository of information, especially in-progress "thoughts".

The zmap you describe is a memoized dropcutter.  The one Anders was describing is the simulated result of a toolpath.  Different application (though still a very similar algorithm underneath).</description>
		<content:encoded><![CDATA[<p>I don&#8217;t think wikipedia is really appropriate to be a primary repository of information, especially in-progress &#8220;thoughts&#8221;.</p>
<p>The zmap you describe is a memoized dropcutter.  The one Anders was describing is the simulated result of a toolpath.  Different application (though still a very similar algorithm underneath).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Julian Todd</title>
		<link>http://www.anderswallin.net/2008/02/z-map-model-for-3-axis-machining/#comment-34116</link>
		<dc:creator>Julian Todd</dc:creator>
		<pubDate>Thu, 14 Feb 2008 16:15:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.anderswallin.net/2008/02/z-map-model-for-3-axis-machining/#comment-34116</guid>
		<description>Yes, I am glad someone has spotted that zmap and drop cutter are the same algorithm.  That puts you at greater understanding than most professors in the field.  

The basic function is 

   dropcutter(triangle, tool, (x,y))

For a surface S, which is a set of triangles, 

   dropcutter(S, tool, (x,y)) = 
     max({dropcutter(triangle, tool, (x,y)) for all triangles in S})

This function is handy, because you can go and calculate it at any (x,y) you like when you need it.

The zmap idea is to pre-calculate the value of dropcutter on a regular grid of (x,y)s by running this maximization over all of them while looping through the triangles.  So:

zmap = { regular set of points (x,y,z) initialized with z = -100 }

Then for each triangle in S:

zmap = { max(z, dropcutter(triangle, tool, (x,y)) for each (x,y,z) in zmap }

The reason why this is stupid is that (a) it uses a tonne of memory which is unnecessary, and (b) it gives a whole bunch of values where you don't want them.


Anyhow, I'm still waiting for you guys to start posting up thoughts on the structure of this algorithm on links from:  
  http://en.wikipedia.org/wiki/Computer-aided_manufacturing

Unlike blogs, wikipedia can handle mathematical equations.  And I will contribute and work with people until they are got right.</description>
		<content:encoded><![CDATA[<p>Yes, I am glad someone has spotted that zmap and drop cutter are the same algorithm.  That puts you at greater understanding than most professors in the field.  </p>
<p>The basic function is </p>
<p>   dropcutter(triangle, tool, (x,y))</p>
<p>For a surface S, which is a set of triangles, </p>
<p>   dropcutter(S, tool, (x,y)) =<br />
     max({dropcutter(triangle, tool, (x,y)) for all triangles in S})</p>
<p>This function is handy, because you can go and calculate it at any (x,y) you like when you need it.</p>
<p>The zmap idea is to pre-calculate the value of dropcutter on a regular grid of (x,y)s by running this maximization over all of them while looping through the triangles.  So:</p>
<p>zmap = { regular set of points (x,y,z) initialized with z = -100 }</p>
<p>Then for each triangle in S:</p>
<p>zmap = { max(z, dropcutter(triangle, tool, (x,y)) for each (x,y,z) in zmap }</p>
<p>The reason why this is stupid is that (a) it uses a tonne of memory which is unnecessary, and (b) it gives a whole bunch of values where you don&#8217;t want them.</p>
<p>Anyhow, I&#8217;m still waiting for you guys to start posting up thoughts on the structure of this algorithm on links from:<br />
  <a href="http://en.wikipedia.org/wiki/Computer-aided_manufacturing" onclick="javascript:pageTracker._trackPageview('/outbound/comment/en.wikipedia.org');" rel="nofollow">http://en.wikipedia.org/wiki/Computer-aided_manufacturing</a></p>
<p>Unlike blogs, wikipedia can handle mathematical equations.  And I will contribute and work with people until they are got right.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan</title>
		<link>http://www.anderswallin.net/2008/02/z-map-model-for-3-axis-machining/#comment-34094</link>
		<dc:creator>Dan</dc:creator>
		<pubDate>Thu, 14 Feb 2008 07:35:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.anderswallin.net/2008/02/z-map-model-for-3-axis-machining/#comment-34094</guid>
		<description>A technique I was experimenting with (which may well be covered in some of the papers you cite, or be totally unworkable) for efficiently generating z-maps is to precompute what I call the "marginal impact profile" of the tool at position X given that it has already (or will) remove material from positions X-iota and X+iota with a specific height at each position.  The marginal impact profile is much more limited than the full tool shape, so for the same CPU power you can compute a much higher resolution z-map than you could by removing the entire tool profile at each iota-step along the path.

Note that I believe z-map and drop-cutter are basically identical algorithms at their core.  Both are a pseudo-convolution of a surface (the desired shape for drop-cutter, the toolpath for z-map) with a kernel (the tool shape), only (and this is the pseudo- part) where a true convolution would use an integral, here we are using the max (or min) operator: what is the maximum tool depth that does not infringe the desired shape (drop-cutter), or what is the minimum material depth that was not cut by any tool pass (z-map).  Of course it's complicated in reality because g-code (or whatever toolpath representation you use) and STL (or whatever polygon mesh format you use) are very different ways to represent surfaces.

This is all too terse to make much sense, but I'm hoping you know it already and can tell me the proper names people use for the stuff I'm making up.</description>
		<content:encoded><![CDATA[<p>A technique I was experimenting with (which may well be covered in some of the papers you cite, or be totally unworkable) for efficiently generating z-maps is to precompute what I call the &#8220;marginal impact profile&#8221; of the tool at position X given that it has already (or will) remove material from positions X-iota and X+iota with a specific height at each position.  The marginal impact profile is much more limited than the full tool shape, so for the same CPU power you can compute a much higher resolution z-map than you could by removing the entire tool profile at each iota-step along the path.</p>
<p>Note that I believe z-map and drop-cutter are basically identical algorithms at their core.  Both are a pseudo-convolution of a surface (the desired shape for drop-cutter, the toolpath for z-map) with a kernel (the tool shape), only (and this is the pseudo- part) where a true convolution would use an integral, here we are using the max (or min) operator: what is the maximum tool depth that does not infringe the desired shape (drop-cutter), or what is the minimum material depth that was not cut by any tool pass (z-map).  Of course it&#8217;s complicated in reality because g-code (or whatever toolpath representation you use) and STL (or whatever polygon mesh format you use) are very different ways to represent surfaces.</p>
<p>This is all too terse to make much sense, but I&#8217;m hoping you know it already and can tell me the proper names people use for the stuff I&#8217;m making up.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
