{"id":421,"date":"2007-04-19T21:02:22","date_gmt":"2007-04-20T04:02:22","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/the-legend-of-hilbert\/"},"modified":"2007-04-19T22:40:54","modified_gmt":"2007-04-20T05:40:54","slug":"the-legend-of-hilbert","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/the-legend-of-hilbert\/","title":{"rendered":"The Legend Of Hilbert"},"content":{"rendered":"<p>I&#8217;ve been wanting to learn how to use a basic vector drawing program <a href=\"http:\/\/multimedia.cx\/eggs\/primitive-drawing-tool\/\">for some time now<\/a> for the purpose of illustrating certain codec concepts more concretely. Sure, this will be for the benefit of others who are curious about the craft. But mostly, I do it for me because, well&#8230; <em>me like pictures<\/em>.<\/p>\n<p>Behold, my first vector drawing, constructed using <a href=\"http:\/\/www.openoffice.org\/\">OpenOffice&#8217;s<\/a> Draw program:<\/p>\n<p><center><br \/>\n<img decoding=\"async\" src=\"\/eggs\/images\/theora-superblock-traversal.png\" alt=\"VP3\/Theora Superblock Traversal Pattern\" \/><br \/>\n<\/center><\/p>\n<p>When I was first reverse engineering an <a href=\"http:\/\/multimedia.cx\/vp3-format.txt\">English language description of the VP3 format<\/a> and implementing a new decoder for <a href=\"http:\/\/www.ffmpeg.org\/\">FFmpeg<\/a>, I figured out the curious pattern that the codec uses to traverse 4&#215;4 fragments (blocks of 8&#215;8 samples) within a VP3 superblock. I posted to the theora-dev mailing list asking if the pattern struck anyone as familiar. Personally, the pattern reminded me of playing the original NES <a href=\"http:\/\/www.mobygames.com\/game\/nes\/legend-of-zelda\"><em>The Legend of Zelda<\/em><\/a> title, sort of like a pattern for traversing rooms in a dungeon. In fact, early iterations of my decoder used the identifier zelda[].<\/p>\n<p>However, someone on the list identified it as resembling a <a href=\"http:\/\/facstaff.unca.edu\/mcmcclur\/mathematicaGraphics\/Hilbert\/\">Hilbert curve<\/a>, discovered by some <a href=\"http:\/\/en.wikipedia.org\/wiki\/David_Hilbert\">famous math dude<\/a>. One of the codec&#8217;s designers chimed in on the list and stated that he had never even heard of Hilbert and that the traversal pattern was chosen to meet certain criteria. Any resemblance to the Hilbert curve was to be considered strictly coincidental.<\/p>\n<p>Looking back on that old mailing list traffic, and taking a good look at the actual Hilbert curve from the link above, I may have made a mistake in using the term &#8220;Hilbert pattern&#8221; to describe the traversal sequence pictured above. It&#8217;s a little late now to change it back to &#8220;Zelda pattern&#8221;&#8211; Google demonstrates that the first term sort of caught on for VP3\/Theora-related matters.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been wanting to learn how to use a basic vector drawing program for some time now for the purpose of illustrating certain codec concepts more concretely. Sure, this will be for the benefit of others who are curious about the craft. But mostly, I do it for me because, well&#8230; me like pictures. Behold, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,33],"tags":[],"class_list":["post-421","post","type-post","status-publish","format-standard","hentry","category-open-source-multimedia","category-vp3theora"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=421"}],"version-history":[{"count":0,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/421\/revisions"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=421"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=421"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}