{"id":4659,"date":"2019-04-17T20:26:52","date_gmt":"2019-04-18T01:26:52","guid":{"rendered":"https:\/\/blogs.mathworks.com\/cleve\/?p=4659"},"modified":"2019-04-18T14:39:38","modified_gmt":"2019-04-18T19:39:38","slug":"the-reuleaux-triangle-and-curves-of-constant-width","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/cleve\/2019\/04\/17\/the-reuleaux-triangle-and-curves-of-constant-width\/","title":{"rendered":"The Reuleaux Triangle and Curves of Constant Width"},"content":{"rendered":"<div class=\"content\"><!--introduction--><p>Why are manhole covers round?  It is so they won't fall through the hole they are intended to cover.  They have the same diameter regardless of where it is measured.  If the hole has a slightly smaller diameter, it is not possible to orient the cover so that it will fall through.  A square or rectangular cover can be turned slightly and it will easily fit through the hole.<\/p><p>The circle is not the only planar curve that has this constant width property.  The Reuleaux Triangle is the next best-known curve of constant width.  I want to describe an interactive MATLAB&reg; program that generates generalizations of the Reuleaux Triangle.<\/p><!--\/introduction--><h3>Contents<\/h3><div><ul><li><a href=\"#bc2c10f8-368d-4b93-8edb-1c8adb5b1a02\">Franz Reuleaux<\/a><\/li><li><a href=\"#ac33c490-cb4f-4c90-b044-b414f99e3919\">Reuleaux triangle<\/a><\/li><li><a href=\"#cb15fc5f-0466-44a0-849c-c9aa7079b5df\">Parameters<\/a><\/li><li><a href=\"#d4bfbdde-a2c8-4346-a3cd-aef407d53312\">Irregular spacing<\/a><\/li><li><a href=\"#d1aa3d2f-fa78-4d6b-a3ad-43dfd4905ac7\">Constant width app<\/a><\/li><li><a href=\"#dc8e38e6-1a9a-4e35-8582-778d4f5ef92c\">Support functions<\/a><\/li><li><a href=\"#cf88a72a-d5ee-4cf0-8284-752b9061d982\">Coins<\/a><\/li><li><a href=\"#b1f58d32-79eb-4eed-9ec4-c20d1e81bc33\">Wankle rotary engine<\/a><\/li><\/ul><\/div><h4>Franz Reuleaux<a name=\"bc2c10f8-368d-4b93-8edb-1c8adb5b1a02\"><\/a><\/h4><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/Franz_Reuleaux.jpg\" alt=\"\"> <\/p><p><i>Image Credit: Wikipedia<\/i><\/p><p>Franz Reuleaux (1829-1905) was a German mechanical engineer, a professor at the <i>Eidgen&ouml;ssische Technische Hochschule Z&uuml;rich<\/i>, then a lecturer at the Berlin Royal Technical Academy and ultimately President of the Academy.  In addition to his triangle and many other mechanical creations, he is known for the theory of <i>kinematic pairs<\/i>.<\/p><h4>Reuleaux triangle<a name=\"ac33c490-cb4f-4c90-b044-b414f99e3919\"><\/a><\/h4><p>Here is the Reuleaux triangle in action in an animated gif showing one full rotation. The sides of the \"triangle\" are circular arcs; each is one-sixth of a circle centered at the opposite vertex.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/reuleaux_triangle.gif\" alt=\"\"> <\/p><p>The triangle is rotating, but not about the origin at its center. These plots were made with the MATLAB command<\/p><p><tt>axis tight square<\/tt><\/p><p>so the bounding box is a square with the length of a side equal to the diameter of the curve.  The <tt>x<\/tt> and <tt>y<\/tt> labels show this diameter.  The fact that the diameter does not change as the figure rotates is the defining property of constant width.<\/p><h4>Parameters<a name=\"cb15fc5f-0466-44a0-849c-c9aa7079b5df\"><\/a><\/h4><p>These animations vary two parameters, <tt>n<\/tt> and <tt>delta<\/tt>.  In the next two figures there are <tt>n<\/tt> blue dots at the vertices of a regular polygonal.  There are <tt>n<\/tt> large arcs; each is one <tt>n<\/tt>-th of a circle centered at the opposite blue dot.  They join the <tt>n<\/tt> small arcs, each is one n-th of a circle of radius <tt>delta<\/tt> centered at the nearby blue dot. The resulting curve is smooth, except when <tt>delta<\/tt> is zero.<\/p><p>The diameter is always the distance from one large circular arc to the opposite small circular arc, no matter how the curve is rotated.<\/p><p>Here <tt>n<\/tt> is kept constant at three and <tt>delta<\/tt> varies.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/deltas.gif\" alt=\"\"> <\/p><p>Here <tt>delta<\/tt> is kept constant at 0.05 and <tt>n<\/tt> varies over odd integers.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/ns.gif\" alt=\"\"> <\/p><h4>Irregular spacing<a name=\"d4bfbdde-a2c8-4346-a3cd-aef407d53312\"><\/a><\/h4><p>The blue dots do not have to form a regular polygon. Here they form a 3-4-5 triangle.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/irregular.gif\" alt=\"\"> <\/p><h4>Constant width app<a name=\"d1aa3d2f-fa78-4d6b-a3ad-43dfd4905ac7\"><\/a><\/h4><p>I will add an interactive app, <tt>constant_width<\/tt>, to <a href=\"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/59085-cleve_s-laboratory\">Cleve's Laboratory.<\/a>  You can choose <tt>regular<\/tt> or <tt>irregular<\/tt> spacing, vary <tt>n<\/tt> and <tt>delta<\/tt>, and rotate the resulting curves at any speed.<\/p><h4>Support functions<a name=\"dc8e38e6-1a9a-4e35-8582-778d4f5ef92c\"><\/a><\/h4><p>I was intrigued by <a href=\"http:\/\/citeseerx.ist.psu.edu\/viewdoc\/download?doi=10.1.1.694.1280&amp;rep=rep1&amp;type=pdf\">a paper<\/a> by Stanley Rabinowitz.  He describes how curves of constant width can be generated by so-called \"support functions.\" An example is<\/p><p>$$ p(\\theta) = a \\cos^2{(\\frac{k\\theta}{2})} + b $$<\/p><p>Parametric equations for the curve are<\/p><p>$$ x = p(\\theta) \\cos{\\theta} - p'(\\theta) \\sin{\\theta} $$<\/p><p>$$ y = p(\\theta) \\sin{\\theta} + p'(\\theta) \\cos{\\theta} $$<\/p><p>Not all choices of the parameters produce convex curves, but $a = 2$, $b = 40$, and $k = 7$ produce a satisfactory heptagonal figure.  A constant step size $h = \\pi\/(12 k)$ yields<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/support.gif\" alt=\"\"> <\/p><p>Rabinowitz goes on to create a curve of constant width that is actually a <i>polynomial<\/i> of degree eight in the two variables $x$ and $y$.<\/p><h4>Coins<a name=\"cf88a72a-d5ee-4cf0-8284-752b9061d982\"><\/a><\/h4><p>Several countries mint coins shaped by curves of constant width. They are difficult to counterfeit and work perfectly well in vending machines.  Here are a few.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/coins.jpg\" alt=\"\"> <\/p><p><i>Image credit: cp4space<\/i><\/p><h4>Wankle rotary engine<a name=\"b1f58d32-79eb-4eed-9ec4-c20d1e81bc33\"><\/a><\/h4><p>Wankel engines, which incorporate a Reuleaux triangle, were invented in the early 1950s by Felix Wankel, a German engineer.<\/p><p><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/wankle.jpg\" alt=\"\"> <\/p><p><i>Image credit: gizmodo<\/i><\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_4ff24258c3514e8f932690d6e9d386d2() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='4ff24258c3514e8f932690d6e9d386d2 ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' 4ff24258c3514e8f932690d6e9d386d2';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2019 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_4ff24258c3514e8f932690d6e9d386d2()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2018b<br><\/p><\/div><!--\r\n4ff24258c3514e8f932690d6e9d386d2 ##### SOURCE BEGIN #####\r\n%% The Reuleaux Triangle and Curves of Constant Width\r\n% Why are manhole covers round?  It is so they won't fall through\r\n% the hole they are intended to cover.  They have the same diameter\r\n% regardless of where it is measured.  If the hole has a\r\n% slightly smaller diameter, it is not possible to orient the\r\n% cover so that it will fall through.  A square or rectangular cover\r\n% can be turned slightly and it will easily fit through the hole.\r\n%\r\n% The circle is not the only planar curve that has this constant\r\n% width property.  The Reuleaux Triangle is the next best-known curve\r\n% of constant width.  I want to describe an interactive MATLAB(R)\r\n% program that generates generalizations of the Reuleaux Triangle.\r\n\r\n%% Franz Reuleaux\r\n%\r\n% <<Franz_Reuleaux.jpg>>\r\n%\r\n% _Image Credit: Wikipedia_\r\n%\r\n% Franz Reuleaux (1829-1905) was a German mechanical engineer,\r\n% a professor at the _Eidgen\u00c3\u00b6ssische Technische Hochschule Z\u00c3\u00bcrich_,\r\n% then a lecturer at the Berlin Royal Technical Academy and ultimately\r\n% President of the Academy.  In addition to his triangle and many\r\n% other mechanical creations, he is known for the theory of\r\n% _kinematic pairs_.\r\n\r\n%% Reuleaux triangle\r\n% Here is the Reuleaux triangle in action in an animated gif showing one\r\n% full rotation. The sides of the \"triangle\" are circular arcs; each is\r\n% one-sixth of a circle centered at the opposite vertex.\r\n%\r\n% <<reuleaux_triangle.gif>>\r\n%\r\n% The triangle is rotating, but not about the origin at its center.\r\n% These plots were made with the MATLAB command\r\n%\r\n% |axis tight square|\r\n%\r\n% so the bounding box is a square with the length of a side equal\r\n% to the diameter of the curve.  The |x| and |y| labels show this\r\n% diameter.  The fact that the diameter does not change as the\r\n% figure rotates is the defining property of constant width.\r\n\r\n%% Parameters\r\n% These animations vary two parameters, |n| and |delta|.  In the next\r\n% two figures there are |n| blue dots at the vertices of a regular\r\n% polygonal.  There are |n| large arcs; each is one |n|-th of a circle\r\n% centered at the opposite blue dot.  They join the |n| small arcs, each\r\n% is one n-th of a circle of radius |delta| centered at the nearby blue\r\n% dot. The resulting curve is smooth, except when |delta| is zero.\r\n%\r\n% The diameter is always the distance from one large circular arc to the\r\n% opposite small circular arc, no matter how the curve is rotated.\r\n%\r\n% Here |n| is kept constant at three and |delta| varies.\r\n%\r\n% <<deltas.gif>>\r\n%\r\n% Here |delta| is kept constant at 0.05 and |n| varies over odd\r\n% integers.\r\n%\r\n% <<ns.gif>>\r\n%\r\n%% Irregular spacing\r\n% The blue dots do not have to form a regular polygon.\r\n% Here they form a 3-4-5 triangle.\r\n% \r\n% <<irregular.gif>>\r\n\r\n%% Constant width app\r\n% I will add an interactive app, |constant_width|, to\r\n% <https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/59085-cleve_s-laboratory\r\n% Cleve's Laboratory.>  You can choose |regular| or |irregular| spacing,\r\n% vary |n| and |delta|, and rotate the resulting curves at any speed.\r\n\r\n%% Support functions\r\n% I was intrigued by\r\n% <http:\/\/citeseerx.ist.psu.edu\/viewdoc\/download?doi=10.1.1.694.1280&rep=rep1&type=pdf\r\n% a paper> by Stanley Rabinowitz.  He describes how curves of constant\r\n% width can be generated by so-called \"support functions.\"\r\n% An example is\r\n%\r\n% $$ p(\\theta) = a \\cos^2{(\\frac{k\\theta}{2})} + b $$\r\n%\r\n% Parametric equations for the curve are\r\n%\r\n% $$ x = p(\\theta) \\cos{\\theta} - p'(\\theta) \\sin{\\theta} $$\r\n%\r\n% $$ y = p(\\theta) \\sin{\\theta} + p'(\\theta) \\cos{\\theta} $$\r\n%\r\n% Not all choices of the parameters produce convex curves,\r\n% but $a = 2$, $b = 40$, and $k = 7$ produce a satisfactory\r\n% heptagonal figure.  A constant step size $h = \\pi\/(12 k)$ yields\r\n% \r\n% <<support.gif>>\r\n%\r\n% Rabinowitz goes on to create a curve of constant width that is\r\n% actually a _polynomial_ of degree eight in the two variables\r\n% $x$ and $y$.\r\n\r\n%% Coins\r\n% Several countries mint coins shaped by curves of constant width.\r\n% They are difficult to counterfeit and work perfectly well in\r\n% vending machines.  Here are a few.\r\n%\r\n% <<coins.jpg>>\r\n%\r\n% _Image credit: cp4space_\r\n\r\n%% Wankle rotary engine\r\n% Wankel engines, which incorporate a Reuleaux triangle, were invented\r\n% in the early 1950s by Felix Wankel, a German engineer.\r\n%\r\n% <<wankle.jpg>>\r\n%\r\n% _Image credit: gizmodo_\r\n##### SOURCE END ##### 4ff24258c3514e8f932690d6e9d386d2\r\n-->","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/cleve\/files\/tringle_small.png\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div><!--introduction--><p>Why are manhole covers round?  It is so they won't fall through the hole they are intended to cover.  They have the same diameter regardless of where it is measured.  If the hole has a slightly smaller diameter, it is not possible to orient the cover so that it will fall through.  A square or rectangular cover can be turned slightly and it will easily fit through the hole.... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/cleve\/2019\/04\/17\/the-reuleaux-triangle-and-curves-of-constant-width\/\">read more >><\/a><\/p>","protected":false},"author":78,"featured_media":4663,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5,23,8],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/4659"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/comments?post=4659"}],"version-history":[{"count":3,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/4659\/revisions"}],"predecessor-version":[{"id":4705,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/4659\/revisions\/4705"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/media\/4663"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/media?parent=4659"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/categories?post=4659"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/tags?post=4659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}