<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Saksham_Sharma]]></title><description><![CDATA[Saksham_Sharma]]></description><link>https://sakshamsharma880460.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!wyAJ!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsakshamsharma880460.substack.com%2Fimg%2Fsubstack.png</url><title>Saksham_Sharma</title><link>https://sakshamsharma880460.substack.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 08 May 2026 04:34:50 GMT</lastBuildDate><atom:link href="https://sakshamsharma880460.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Saksham_Sharma]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[sakshamsharma880460@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[sakshamsharma880460@substack.com]]></itunes:email><itunes:name><![CDATA[Saksham_Sharma]]></itunes:name></itunes:owner><itunes:author><![CDATA[Saksham_Sharma]]></itunes:author><googleplay:owner><![CDATA[sakshamsharma880460@substack.com]]></googleplay:owner><googleplay:email><![CDATA[sakshamsharma880460@substack.com]]></googleplay:email><googleplay:author><![CDATA[Saksham_Sharma]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Week 6:  From Cubes to Cameras: How Our Project Found Its Final Form]]></title><description><![CDATA[What started as a geometric transformation visualiser ended up somewhere we didn&#8217;t quite expect &#8212; a full security camera planning tool with a 3D house, quad viewports, and gesture control.]]></description><link>https://sakshamsharma880460.substack.com/p/from-cubes-to-cameras-how-our-project</link><guid isPermaLink="false">https://sakshamsharma880460.substack.com/p/from-cubes-to-cameras-how-our-project</guid><dc:creator><![CDATA[Saksham_Sharma]]></dc:creator><pubDate>Sat, 02 May 2026 18:34:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!y8NX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>What started as a geometric transformation visualiser ended up somewhere we didn&#8217;t quite expect &#8212; a full security camera planning tool with a 3D house, quad viewports, and gesture control. This is the story of that shift.</p><p><strong>Where We Started:</strong></p><p><strong>The geometric visualiser was our first real dive into Three.js and AR. We had Platonic solids rotating in real time, hand gesture recognition, four viewports synced together, and an AR mode that projected geometry onto a Hiro marker. It worked, and it worked well. But somewhere along the way we asked ourselves, 'What if this wasn't just a maths toy? What if the same rendering pipeline served something more applied?'</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TwXj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TwXj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png 424w, https://substackcdn.com/image/fetch/$s_!TwXj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png 848w, https://substackcdn.com/image/fetch/$s_!TwXj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png 1272w, https://substackcdn.com/image/fetch/$s_!TwXj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TwXj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png" width="924" height="943" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:943,&quot;width&quot;:924,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:244391,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/196247155?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TwXj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png 424w, https://substackcdn.com/image/fetch/$s_!TwXj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png 848w, https://substackcdn.com/image/fetch/$s_!TwXj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png 1272w, https://substackcdn.com/image/fetch/$s_!TwXj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F335e9f4e-16b4-4b0a-b1cb-a154f9d104b1_924x943.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The Pivot</strong></p><p>The idea of a security camera planner came from a simple observation: placing cameras in a space is fundamentally a geometry problem. Coverage cones, field of view, blind spots &#8212; all of it is just 3D math dressed up in a practical context. We already had the rendering infrastructure. We just needed to reframe it.</p><p>The first version was a basic 2D floor plan. Click to place a camera, see a coverage cone, and identify blind spots. Simple, clean, immediately useful.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lGSh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lGSh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png 424w, https://substackcdn.com/image/fetch/$s_!lGSh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png 848w, https://substackcdn.com/image/fetch/$s_!lGSh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png 1272w, https://substackcdn.com/image/fetch/$s_!lGSh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lGSh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57609,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/196247155?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lGSh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png 424w, https://substackcdn.com/image/fetch/$s_!lGSh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png 848w, https://substackcdn.com/image/fetch/$s_!lGSh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png 1272w, https://substackcdn.com/image/fetch/$s_!lGSh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6eb4308d-0324-48ab-b942-56bd2e277068_1918x949.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Adding the Third Dimension</strong></p><p>The 2D view was useful but flat &#8212; literally. So we brought in a GLB house model and rebuilt the viewport system to show the same scene from four angles simultaneously: perspective, top, front, and side. The quad-viewport system from the geometric visualiser carried over almost directly. That felt like the project clicking into place.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y8NX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y8NX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png 424w, https://substackcdn.com/image/fetch/$s_!y8NX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png 848w, https://substackcdn.com/image/fetch/$s_!y8NX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png 1272w, https://substackcdn.com/image/fetch/$s_!y8NX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y8NX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png" width="1456" height="717" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:717,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:320312,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/196247155?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!y8NX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png 424w, https://substackcdn.com/image/fetch/$s_!y8NX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png 848w, https://substackcdn.com/image/fetch/$s_!y8NX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png 1272w, https://substackcdn.com/image/fetch/$s_!y8NX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038f6e82-e3b7-4400-ad2a-8b5b1f91b4dd_1919x945.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Gesture Control</strong></p><p>We kept gesture mode from the previous project because it made sense here too &#8211; orbiting a 3D scene with your hands rather than a mouse is just better when you&#8217;re presenting or demonstrating. MediaPipe handled the hand tracking, same as before.</p><p><strong>What It Is Now</strong></p><p>The current version lets you plan an entire camera layout in 2D, switch to 3D to validate placement against the actual house geometry, orbit the scene in four views simultaneously, and use gesture control throughout. It&#8217;s a tool that could genuinely be used before installing a real system.</p><p>The geometric visualizer taught us the rendering pipeline. The camera planner taught us that a good pipeline is only as useful as the problem it&#8217;s pointed at.</p>]]></content:encoded></item><item><title><![CDATA[Week 5 - From Gestures to Gimbal]]></title><description><![CDATA[The final stretch brought three critical features together: hand tracking, gimbal mode, and transformation sequences. What started as isolated experiments became a unified, intuitive interface for exploring linear algebra in real-time.]]></description><link>https://sakshamsharma880460.substack.com/p/week-5-from-gestures-to-gimbal</link><guid isPermaLink="false">https://sakshamsharma880460.substack.com/p/week-5-from-gestures-to-gimbal</guid><dc:creator><![CDATA[Saksham_Sharma]]></dc:creator><pubDate>Tue, 28 Apr 2026 05:16:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TDJo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The final stretch brought three critical features together: <strong>hand tracking</strong>, <strong>gimbal mode</strong>, and <strong>transformation sequences</strong>. What started as isolated experiments became a unified, intuitive interface for exploring linear algebra in real-time.</p><h4>Hand Tracking: Teaching the App to See Your Hands</h4><p>Implementing MediaPipe Hands was a turning point. Instead of sliders and buttons, users could now interact with 3D objects naturally&#8212;the way humans naturally communicate through gesture.</p><p><strong>The Challenge:</strong> Getting hand landmarks to map smoothly onto 3D space. Our hand was visible on-screen via webcam, but translating (x, y, z) coordinates from the camera feed into meaningful cube transformations required careful calibration.</p><p><strong>The Solution:</strong> Three core gestures emerged:</p><ol><li><p><strong>Pinch (Thumb + Index)</strong> &#8212; Distance between fingertips directly controls scale. Closer pinch = larger scale. It&#8217;s intuitive: pinching makes things grow, spreading fingers shrinks them.</p></li><li><p><strong>Grab (Open Hand)</strong> &#8212; Palm center position maps to cube position. Moving your hand moves the cube. Pure spatial mapping.</p></li><li><p><strong>Swipe (Hand History)</strong> &#8212; We tracked hand position over 10 frames. Horizontal swipes rotate around the Y-axis, vertical swipes around X. The velocity of the swipe controls rotation speed.</p></li></ol><p>The so-called magic lied in the simplicity using just simple libraries, raw landmarks and basic geometry.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TDJo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TDJo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png 424w, https://substackcdn.com/image/fetch/$s_!TDJo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png 848w, https://substackcdn.com/image/fetch/$s_!TDJo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png 1272w, https://substackcdn.com/image/fetch/$s_!TDJo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TDJo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png" width="1456" height="724" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:724,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66191,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/195713273?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TDJo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png 424w, https://substackcdn.com/image/fetch/$s_!TDJo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png 848w, https://substackcdn.com/image/fetch/$s_!TDJo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png 1272w, https://substackcdn.com/image/fetch/$s_!TDJo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F970a4f12-80f8-4bb5-98e4-ab065bb5d78a_1911x950.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h4>Gimbal Mode: When Your Device Becomes the Controller</h4><p>After gesture control, we wanted users to manipulate objects by tilting their phone. This required accessing device motion sensors&#8212;a feature that works differently across browsers and operating systems.</p><p><strong>The Discovery:</strong> Android Brave doesn&#8217;t expose device orientation the way Safari on iOS does. So we had two fallbacks:</p><ol><li><p><strong>Mobile:</strong> Device accelerometer via <code>devicemotion</code> event</p></li><li><p><strong>Desktop:</strong> Arrow keys (&#8593;&#8595;&#8592;&#8594;) for X/Y rotation, Q/E for Z-axis</p></li></ol><p>This dual approach meant gimbal mode works <em>everywhere</em>&#8212;you&#8217;re never locked out by hardware limitations. Demonstrating on a laptop? Use arrow keys. On a phone? Tilt it.</p><p><strong>How It Works:</strong> Device acceleration gets fed through <code>atan2</code> to calculate tilt angles. These angles become Euler rotation values for the cube. The result: your device becomes an extension of the 3D space. Tilt forward, the cube tilts. Rotate your phone, the cube spins.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!alei!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!alei!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png 424w, https://substackcdn.com/image/fetch/$s_!alei!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png 848w, https://substackcdn.com/image/fetch/$s_!alei!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png 1272w, https://substackcdn.com/image/fetch/$s_!alei!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!alei!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png" width="1280" height="939" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:939,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:34141,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/195713273?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!alei!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png 424w, https://substackcdn.com/image/fetch/$s_!alei!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png 848w, https://substackcdn.com/image/fetch/$s_!alei!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png 1272w, https://substackcdn.com/image/fetch/$s_!alei!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4d33987-3933-41f2-b62e-8049ae4cc5b0_1280x939.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h4>Transformation Sequences: Visualizing Order Matters</h4><p>The final piece was pedagogical&#8212;showing students <em>why</em> matrix multiplication order matters.</p><p><strong>T Only, T+R, T+R+S</strong> buttons preset the cube to specific states, building complexity gradually:</p><ul><li><p><strong>T Only:</strong> Pure translation. Position changes; shape stays same.</p></li><li><p><strong>T+R:</strong> Translation + rotation. Now the position AND orientation change.</p></li><li><p><strong>T+R+S:</strong> Full transformation suite. The cube translates, rotates, <em>and</em> scales.</p></li><li><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oqTj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oqTj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png 424w, https://substackcdn.com/image/fetch/$s_!oqTj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png 848w, https://substackcdn.com/image/fetch/$s_!oqTj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png 1272w, https://substackcdn.com/image/fetch/$s_!oqTj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oqTj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png" width="1456" height="719" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:719,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1489596,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/195713273?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oqTj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png 424w, https://substackcdn.com/image/fetch/$s_!oqTj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png 848w, https://substackcdn.com/image/fetch/$s_!oqTj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png 1272w, https://substackcdn.com/image/fetch/$s_!oqTj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9624181f-cb25-4c11-90e9-82727baa178e_1914x945.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><p></p><p>Then came the punchline: <strong>Order Matters</strong>.</p><p>When you toggle &#8220;Order Matters,&#8221; the same transformations apply but in different order:</p><ul><li><p><strong>T&#215;R&#215;S order:</strong> Translate first (smaller effect), rotate, then scale</p></li><li><p><strong>S&#215;R&#215;T order:</strong> Scale first, rotate, <em>then</em> translate (translation now travels further because the cube is bigger)</p></li></ul><p>This allows for students to visually see why the order in matrix multiplication actually matters and not learn to do algebraically.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qba0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qba0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png 424w, https://substackcdn.com/image/fetch/$s_!qba0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png 848w, https://substackcdn.com/image/fetch/$s_!qba0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png 1272w, https://substackcdn.com/image/fetch/$s_!qba0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qba0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png" width="1456" height="602" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1020774,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/195713273?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qba0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png 424w, https://substackcdn.com/image/fetch/$s_!qba0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png 848w, https://substackcdn.com/image/fetch/$s_!qba0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png 1272w, https://substackcdn.com/image/fetch/$s_!qba0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30a174eb-84bc-45d8-a703-bba1b146e2fd_1853x766.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h4>Integration: Making It All Work Together</h4><p>The challenge wasn&#8217;t individual features&#8212;it was <em>unifying</em> them:</p><ul><li><p>Hand tracking runs on Three.js</p></li><li><p>Gimbal works on the same cube</p></li><li><p>Transformation sequences trigger on both</p></li><li><p>State syncs to localStorage for AR mode</p></li><li><p>All without conflicts or performance loss</p></li></ul><p>We built it modular: gesture control in <code>ar-mode.html</code>, Hiro AR in <code>hiro-ar-mode.html</code>, desktop in <code>index.html</code>. Each mode is self-contained but contributes to the same learning experience.</p><h4>The Result</h4><p>Users can now:</p><ul><li><p>Manipulate 3D objects with their hands (gestural interface)</p></li><li><p>Control objects by tilting their phone (embodied interface)</p></li><li><p>See transformation sequences build complexity step-by-step (pedagogical interface)</p></li><li><p>View everything in AR space (immersive interface)</p></li></ul><p>What began as abstract math&#8212;matrices, transformations, composition&#8212;became something tangible. Graspable. Literally graspable with your hands!</p>]]></content:encoded></item><item><title><![CDATA[From a Static Cube to an Interactive AR System: Our Journey Through 3D Transformations]]></title><description><![CDATA[Culmination up until week 4]]></description><link>https://sakshamsharma880460.substack.com/p/from-a-static-cube-to-an-interactive</link><guid isPermaLink="false">https://sakshamsharma880460.substack.com/p/from-a-static-cube-to-an-interactive</guid><dc:creator><![CDATA[Saksham_Sharma]]></dc:creator><pubDate>Mon, 30 Mar 2026 09:26:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kRor!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>1. Starting Point &#8212; Just a Cube</h2><p>We began with a very simple goal: to build a system that could visually demonstrate basic geometric transformations. At this stage, the focus was only on a single cube, without any surrounding environment or context. While the functionality worked, it felt isolated and lacked depth. It did the job technically, but it didn&#8217;t feel intuitive or engaging.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OSdy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OSdy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png 424w, https://substackcdn.com/image/fetch/$s_!OSdy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png 848w, https://substackcdn.com/image/fetch/$s_!OSdy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png 1272w, https://substackcdn.com/image/fetch/$s_!OSdy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OSdy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png" width="936" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:936,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:33455,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/192590267?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OSdy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png 424w, https://substackcdn.com/image/fetch/$s_!OSdy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png 848w, https://substackcdn.com/image/fetch/$s_!OSdy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png 1272w, https://substackcdn.com/image/fetch/$s_!OSdy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F881f26c1-b851-4965-8ffb-35efc8b503e3_936x750.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>2. Understanding Translation</h2><p>The first transformation we explored was translation. Moving the cube along the X, Y, and Z axes helped us understand how position changes in 3D space. While this was straightforward mathematically, visualising it in real time gave a much clearer perspective than static diagrams ever could.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!32cr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!32cr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png 424w, https://substackcdn.com/image/fetch/$s_!32cr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png 848w, https://substackcdn.com/image/fetch/$s_!32cr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png 1272w, https://substackcdn.com/image/fetch/$s_!32cr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!32cr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png" width="936" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:936,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36125,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/192590267?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!32cr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png 424w, https://substackcdn.com/image/fetch/$s_!32cr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png 848w, https://substackcdn.com/image/fetch/$s_!32cr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png 1272w, https://substackcdn.com/image/fetch/$s_!32cr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43b4904a-850e-4912-bd69-4763fdf9e72d_936x761.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>3. Exploring Rotation</h2><p>Rotation introduced a new layer of complexity. Unlike translation, it wasn&#8217;t just about movement but orientation. Watching the cube rotate across different axes made us realise how easily one can lose track of spatial orientation without proper visualisation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kNpb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kNpb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png 424w, https://substackcdn.com/image/fetch/$s_!kNpb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png 848w, https://substackcdn.com/image/fetch/$s_!kNpb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png 1272w, https://substackcdn.com/image/fetch/$s_!kNpb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kNpb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png" width="947" height="756" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:756,&quot;width&quot;:947,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36860,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/192590267?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kNpb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png 424w, https://substackcdn.com/image/fetch/$s_!kNpb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png 848w, https://substackcdn.com/image/fetch/$s_!kNpb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png 1272w, https://substackcdn.com/image/fetch/$s_!kNpb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9e6bedf-3b3f-4e2a-957c-a695845fe2dd_947x756.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>4. Building an Environment</h2><p>At this point, it became clear that the cube alone wasn&#8217;t enough. We needed a better sense of space and interaction. This led us to introduce an environment around the object, making the transformations feel more grounded and visually meaningful.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kRor!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kRor!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png 424w, https://substackcdn.com/image/fetch/$s_!kRor!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png 848w, https://substackcdn.com/image/fetch/$s_!kRor!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png 1272w, https://substackcdn.com/image/fetch/$s_!kRor!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kRor!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png" width="955" height="914" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:914,&quot;width&quot;:955,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127363,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/192590267?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kRor!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png 424w, https://substackcdn.com/image/fetch/$s_!kRor!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png 848w, https://substackcdn.com/image/fetch/$s_!kRor!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png 1272w, https://substackcdn.com/image/fetch/$s_!kRor!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3a7de8-c42f-41fd-aec7-7caa9bbdd1a3_955x914.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>5. Pushing Beyond &#8212; Introducing AR</h2><p>While the system was now functional, we felt it still lacked a level of interactivity that others were exploring. This led us to experiment with camera-based interaction using marker detection. Initially, this was confusing &#8212; especially understanding how markers work and whether we needed complex AI models. Eventually, we realised that a simple marker-based system could achieve what we needed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0wNJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0wNJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png 424w, https://substackcdn.com/image/fetch/$s_!0wNJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png 848w, https://substackcdn.com/image/fetch/$s_!0wNJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png 1272w, https://substackcdn.com/image/fetch/$s_!0wNJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0wNJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1460161,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://sakshamsharma880460.substack.com/i/192590267?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0wNJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png 424w, https://substackcdn.com/image/fetch/$s_!0wNJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png 848w, https://substackcdn.com/image/fetch/$s_!0wNJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png 1272w, https://substackcdn.com/image/fetch/$s_!0wNJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d4fcd9-cd26-4c67-8b17-97040f0ad754_1919x943.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>6. Bringing It All Together</h2><p>With AR integrated, the system finally started to feel complete. The ability to detect a marker, visualize an object, and then bring that object into the transformation environment created a seamless flow. It connected real-world interaction with digital manipulation in a way that made the entire system more intuitive.</p>]]></content:encoded></item><item><title><![CDATA[Week 3 (Functional Prototype to Structured Learning Interface)]]></title><description><![CDATA[Today marked a transition point in our project.]]></description><link>https://sakshamsharma880460.substack.com/p/week-3-functional-prototype-to-structured</link><guid isPermaLink="false">https://sakshamsharma880460.substack.com/p/week-3-functional-prototype-to-structured</guid><dc:creator><![CDATA[Saksham_Sharma]]></dc:creator><pubDate>Wed, 25 Feb 2026 06:19:22 GMT</pubDate><content:encoded><![CDATA[<p>Today marked a transition point in our project. What initially began as a simple interactive cube rendered using Three.js has now evolved into a more structured and academically presentable learning interface.</p><p>In the early stages, the focus was purely functional &#8212; implementing translation, rotation, and scaling controls along with a transformation matrix display. The goal was to ensure correctness before refinement. With the base working reliably, we shifted attention toward improving usability, structure, and clarity.</p><p>One of the primary upgrades today was interface refinement. The transformation controls were reorganized to reduce visual clutter and cognitive overload. Instead of presenting controls as isolated sliders, they were grouped logically under translation, rotation, and scaling sections. This not only improves readability but also reinforces conceptual grouping for learners studying affine transformations.</p><p>A ghost cube was retained at the origin as a static reference. This decision was pedagogical rather than aesthetic. By keeping a fixed baseline object, users can visually compare transformed states against the original configuration. This strengthens spatial intuition, especially when dealing with compounded transformations.</p><p>The transformation matrix visualization was also preserved and emphasized. Rather than treating the matrix as a background computation, it is now framed as an educational component. The learner can observe how each interaction modifies matrix elements in real time, bridging theory with practice.</p><p>Beyond the prototype itself, today&#8217;s work also focused on structural improvements to project presentation. The GitHub Pages deployment was reorganized into a documentation-style layout with hierarchical navigation. A left sidebar now organizes sections such as overview, live demo, architecture, blogs, and future scope. This transforms the repository from a static deployment link into a structured project portal.</p><p>Deployment workflow was also streamlined. The project is now connected to Netlify via CI/CD, ensuring that updates pushed to the repository reflect automatically on the live site. This reduces friction during iterative development and demonstrates professional workflow practices.</p><p>What is important about today&#8217;s progress is not just the features added, but the mindset shift. The system is no longer just a working demo &#8212; it is becoming a learning tool. Every addition is now evaluated based on clarity, educational value, and scalability.</p><p>Looking ahead, the next phase of exploration involves AI-assisted object recognition. The idea is not full 3D reconstruction from images &#8212; that would be computationally intensive and beyond current scope. Instead, the aim is to experiment with image-based object classification, where a photographed object could be mapped to a predefined 3D model. The learner could then apply transformations to that model within the existing framework.</p><p>This would extend the platform from abstract geometric primitives to real-world contextual learning. Even if implemented in a simplified manner, it opens the door to research-oriented expansion.</p><p>At this stage, the project forms a stable structural foundation. The core transformation engine works, the interface is organized, deployment is automated, and documentation is structured. The next iterations will focus on extending capability without compromising simplicity.</p><p>Today&#8217;s milestone was about strengthening the dhaancha &#8212; the structural base. From here, refinement and innovation can proceed with clarity and purpose.</p>]]></content:encoded></item><item><title><![CDATA[Week 2 – Turning Theory Into an Interactive Prototype]]></title><description><![CDATA[This week focused on transforming our abstract idea into something tangible.]]></description><link>https://sakshamsharma880460.substack.com/p/week-2-turning-theory-into-an-interactive</link><guid isPermaLink="false">https://sakshamsharma880460.substack.com/p/week-2-turning-theory-into-an-interactive</guid><dc:creator><![CDATA[Saksham_Sharma]]></dc:creator><pubDate>Mon, 16 Feb 2026 09:29:41 GMT</pubDate><content:encoded><![CDATA[<p>This week focused on transforming our abstract idea into something tangible. The core goal of our project is to reduce the gap between 2D mathematical representations and 3D spatial understanding. To test this, I developed a browser-based prototype that visualises transformations in real time.</p><p>The prototype allows users to translate and rotate a cube in 3D space while simultaneously observing the corresponding 4x4 transformation matrix update live. This immediate feedback loop is critical to our learning philosophy &#8212; it directly connects symbolic mathematics to spatial motion.</p><p>Alongside the implementation, I structured the <strong>Design System</strong> documentation to formalise our UI logic, axis colour standards, and interaction model. The <strong>Research document</strong> was also developed to ground the project in constructivist learning theory and identify the pedagogical &#8220;2D bottleneck&#8221; we aim to address.</p><p>This phase proved something important: before building in full VR, validating interaction flow through a lightweight web prototype is both efficient and strategically sound. It allowed us to test usability and conceptual clarity without heavy development overhead.</p><p>The next step is refining interaction depth and expanding the system into more advanced transformations.</p>]]></content:encoded></item><item><title><![CDATA[The very first step]]></title><description><![CDATA[This is our very first foray into the concept of Augmented and Virtual Reality and its effects were seen at the initial stages of our ideation process as well]]></description><link>https://sakshamsharma880460.substack.com/p/the-very-first-step</link><guid isPermaLink="false">https://sakshamsharma880460.substack.com/p/the-very-first-step</guid><dc:creator><![CDATA[Saksham_Sharma]]></dc:creator><pubDate>Mon, 09 Feb 2026 10:45:47 GMT</pubDate><content:encoded><![CDATA[<p>This is our very first foray into the concept of Augmented and Virtual Reality and its effects were seen at the initial stages of our ideation process as well</p><p>While planning our VR-based geometric transformation project, we faced several practical and conceptual challenges in the early stages. One major issue was clearly defining the &#8220;need&#8221; for the project, as our initial idea sounded more like a cool visualization rather than a necessary solution. We realized that simply using VR was not enough and that we had to justify why traditional 2D teaching methods were insufficient.</p><p>The need factor wasn't properly justified and hence, some minor hiccups occurred while the ideation cane about. </p>]]></content:encoded></item></channel></rss>