<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>Orthonormal basis by Mankyu Sung</title>
      <link>https://padlet.com/mksung89/orthonormal</link>
      <description></description>
      <language>en-us</language>
      <pubDate>2025-03-17 05:43:17 UTC</pubDate>
      <lastBuildDate>2025-04-24 05:31:48 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url></url>
      </image>
      <item>
         <title>5646432_남현우</title>
         <author>tranate1231</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3368893258</link>
         <description><![CDATA[<p>#include&lt;iostream&gt;</p><p>#define <em>USE</em>MATH_DEFINES</p><p>#include&lt;cmath&gt;</p><p>#include"core.h"</p><p>using namespace cyclone;</p><p>int main() {</p><p>	Vector3 A(1, 2, -1);   </p><p>	Vector3 B(3, 0, 2);</p><p>	//0</p><p>	A.normalise();</p><p>	//1</p><p>	B.normalise();</p><p>	//2</p><p>	Vector3 C = A.cross(B);</p><p>	//3</p><p>	if (C.magnitude() == 0)</p><p>	{</p><p>		std::cout &lt;&lt; "a and b are parallel.\n";</p><p>	}</p><p>	else </p><p>	{</p><p>		C.normalise();</p><p>		B = C.cross(A);</p><p>	}</p><p>	std::cout &lt;&lt; "Orthonormal Basis Vectors:\n";</p><p>	std::cout &lt;&lt; "u1 = " &lt;&lt; A.toString() &lt;&lt; "\n";</p><p>	std::cout &lt;&lt; "u2 = " &lt;&lt; B.toString() &lt;&lt; "\n";</p><p>	std::cout &lt;&lt; "u3 = " &lt;&lt; C.toString() &lt;&lt; "\n";</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3522563796/56c8cf12773d810377ae5f87fdd2c921/image.png" />
         <pubDate>2025-03-17 07:34:24 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3368893258</guid>
      </item>
      <item>
         <title>7701676_Thomas_Laprie</title>
         <author>totolaprie</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3369039658</link>
         <description><![CDATA[<p>#define NOMINMAX</p><p>#define <em>USE</em>MATH_DEFINES</p><p>#include &lt;iostream&gt;</p><p>#include "core.h"</p><p>#include &lt;cmath&gt;</p><p>using namespace cyclone;</p><p>int main() {</p><p>	Vector3 A(1, 2, -1);</p><p>	Vector3 B(3, 0, 2);</p><p>	A.normalise();</p><p>	B.normalise();</p><p>	Vector3 C = A.cross(B);</p><p>	if (C.magnitude() == 0)</p><p>		std::cout &lt;&lt; "a and b are parallel" &lt;&lt; std::endl;</p><p>	else {</p><p>		C.normalise();</p><p>		B = C.cross(A);</p><p>	}</p><p>	std::cout &lt;&lt; "orthonormal basis" &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "O1: " &lt;&lt; A.x &lt;&lt; " " &lt;&lt; A.y &lt;&lt; " " &lt;&lt; A.z &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "O2: " &lt;&lt; B.x &lt;&lt; " " &lt;&lt; B.y &lt;&lt; " " &lt;&lt; B.z &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "O3: " &lt;&lt; C.x &lt;&lt; " " &lt;&lt; C.y &lt;&lt; " " &lt;&lt; C.z &lt;&lt; std::endl;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2681261339/ee9844b25fcd09c49dfee0268a9d99ee/Screenshot_1.png" />
         <pubDate>2025-03-17 09:30:36 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3369039658</guid>
      </item>
      <item>
         <title>7701640_Jovan_Hillion</title>
         <author>jovanhillion</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3369046781</link>
         <description><![CDATA[<p>#define NOMINMAX</p><p>#define <em>USE</em>MATH_DEFINES</p><p>#include &lt;iostream&gt;</p><p>#include "core.h"</p><p>#include &lt;cmath&gt;</p><p>int main()</p><p>{</p><p>	cyclone::Vector3 A(1, 2, -1);</p><p>	cyclone::Vector3 B(3, 0, 2);</p><p>	A.normalise();</p><p>	B.normalise();</p><p>	cyclone::Vector3 C = A.cross(B);</p><p>	if (C.magnitude() != 0) {</p><p>		C.normalise();</p><p>		B = C.cross(A);</p><p>	}</p><p>	std::cout &lt;&lt; "Orthonormal:" &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "A:" &lt;&lt; A.toString() &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "B:" &lt;&lt; B.toString() &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "C:" &lt;&lt; C.toString() &lt;&lt; std::endl;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/1073960726/15a431158c9af31d2aca149355fdf859/image.png" />
         <pubDate>2025-03-17 09:36:09 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3369046781</guid>
      </item>
      <item>
         <title>7701583_Ethan_HERNOU</title>
         <author>ethanhernou</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3369048594</link>
         <description><![CDATA[<pre><code>#include &lt;iostream&gt;

#define USEMATH_DEFINES
        #include &lt;cmath&gt;

#include "core.h"

static cyclone::Vector3 Project(const cyclone::Vector3 &amp;a, const cyclone::Vector3 &amp;b)
{
	return (a.dot(b) / a.dot(a)) * a;
}

int main()
{
	cyclone::Vector3 A(1, 2, -1);
	cyclone::Vector3 B(3, 0, 2);

	A.normalise();

	cyclone::Vector3 u2 = B - Project(A, B);

	u2.normalise();

	cyclone::Vector3 u3 = A.cross(u2);

	std::cout &lt;&lt; "Orthogonal Basis :\n";
	std::cout &lt;&lt; "u1 = " &lt;&lt; A.toString()  &lt;&lt; std::endl;
	std::cout &lt;&lt; "u2 = " &lt;&lt; u2.toString() &lt;&lt; std::endl;
	std::cout &lt;&lt; "u3 = " &lt;&lt; u3.toString() &lt;&lt; std::endl;

    return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676256945/b108ef3bdd25e374b0c9ef8d488f2cbe/image.png" />
         <pubDate>2025-03-17 09:37:30 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3369048594</guid>
      </item>
      <item>
         <title>7701672_Louis_BASSAGAL</title>
         <author>siphrano53</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3369051369</link>
         <description><![CDATA[<p>#define NOMINMAX</p><p>#include &lt;iostream&gt;</p><p>#define <em>USE</em>MATH_DEFINES</p><p>#include "core.h"</p><p>int main() {</p><p>	cyclone::Vector3 A{ 1, 2, -1 };</p><p>	cyclone::Vector3 B{ 3, 0, 2 };</p><p>	</p><p>	A.normalise();</p><p>	B.normalise();</p><p>	cyclone::Vector3 C{ A.cross(B) };</p><p>	C.normalise();</p><p>	B = C.cross(A);</p><p>	std::cout &lt;&lt; "A: " &lt;&lt; A.toString() &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "B: " &lt;&lt; B.toString() &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "C: " &lt;&lt; C.toString() &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3549212560/63b073255cc423ece1b8159d596412cd/WindowsTerminal_RBVyswvpHz.png" />
         <pubDate>2025-03-17 09:40:02 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3369051369</guid>
      </item>
      <item>
         <title>7701567_Enzo_GARNIER</title>
         <author>bestioslash</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3369100976</link>
         <description><![CDATA[<pre><code>#define NOMINMAX
#include &lt;iostream&gt;
#include "core.h"

int main()
{
	cyclone::Vector3 e1(1, 2, -1);
	cyclone::Vector3 e2(3, 0, 2);

	e1.normalise();
	e2.normalise();
	cyclone::Vector3 e3 = e1.cross(e2);

	if (e3.magnitude() != 0) {
		e3.normalise();
		e2 = e3.cross(e1);
	}

	std::cout &lt;&lt; "Orthonormal Basis :" &lt;&lt; std::endl;
	std::cout &lt;&lt; "e1:" &lt;&lt; e1.toString() &lt;&lt; std::endl;
	std::cout &lt;&lt; "e2:" &lt;&lt; e2.toString() &lt;&lt; std::endl;
	std::cout &lt;&lt; "e3:" &lt;&lt; e3.toString() &lt;&lt; std::endl;
}
</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2708765362/6f9c720c363f0f3ee146bd85eefb3ae0/image.png" />
         <pubDate>2025-03-17 10:18:23 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3369100976</guid>
      </item>
      <item>
         <title>7701614_Antonin_Laudon</title>
         <author></author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3369191607</link>
         <description><![CDATA[<pre><code>#include &lt;iostream&gt;
#include "core.h"

int main()
{
    cyclone::Vector3 A(1, 2, -1);
    cyclone::Vector3 B(3, 0, 2);
    
    A.normalise();

    cyclone::Vector3 ob2 = (B - (A.dot(B) / A.dot(A)) * A);
    ob2.normalise();
    
    cyclone::Vector3 ob3 = A.cross(ob2);
    ob3.normalise();

    std::cout &lt;&lt; "ob1 = " &lt;&lt; A.toString() &lt;&lt; std::endl;
    std::cout &lt;&lt; "ob2 = " &lt;&lt; ob2.toString() &lt;&lt; std::endl;
    std::cout &lt;&lt; "ob3 = " &lt;&lt; ob3.toString() &lt;&lt; std::endl;
    return 0;
}</code></pre><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3550493601/bb57da11d30b45bfee74f00fc9fcdda1/Screenshot_2025_03_17_203025.png" />
         <pubDate>2025-03-17 11:32:22 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3369191607</guid>
      </item>
      <item>
         <title>7701664_Eliot_Janvier</title>
         <author></author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3370303413</link>
         <description><![CDATA[<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;chrono&gt;
#include &lt;cmath&gt;
#include &lt;iostream&gt;
#include &lt;ranges&gt;
#include &lt;type_traits&gt;

#define NOMINMAX
#include "core.h"
#include &lt;iostream&gt;

using vec3 = cyclone::Vector3;

void printBasis(vec3 a, vec3 b) {
  a.normalize();
  b.normalize();
  vec3 c = a.cross(b);
  c.normalize();
  if (c.magnitude() == 0) {
    std::cout &lt;&lt; "a and b are parallel" &lt;&lt; std::endl;
    return;
  }
  b = c.cross(a);

  std::cout &lt;&lt; "basis is : " &lt;&lt; std::endl;
  std::cout &lt;&lt; a.toString() &lt;&lt; ", " &lt;&lt; b.toString() &lt;&lt; ", " &lt;&lt; c.toString()
            &lt;&lt; std::endl;
}

int main() {

  const double DEGREES_TO_RADIAN = M_PI / 180.0f;
  const double RADIAN_TO_DEGREES = 180.0f / M_PI;
  vec3 a(1, 2, -1);
  vec3 b(3, 0, 2);
  printBasis(a, b);
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3554425752/a9e94ca210e6827d4760ac8bd4fa43f4/image.png" />
         <pubDate>2025-03-18 01:46:37 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3370303413</guid>
      </item>
      <item>
         <title>7701625_Ludovic_de_Chavagnac</title>
         <author>ludovicdechavagnac</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3370570262</link>
         <description><![CDATA[<p>#define NOMINMAX</p><p>#include &lt;iostream&gt;</p><p>#define <em>USE</em>MATH_DEFINES</p><p>#include &lt;cmath&gt;</p><p>#include "core.h"</p><p>int main()</p><p>{</p><p>	cyclone::Vector3 a(1, 2, -1);</p><p>	cyclone::Vector3 b(3, 0, 2);</p><p>	a.normalise();</p><p>	b.normalise();</p><p>	cyclone::Vector3 c = a.cross(b);</p><p>	if (c.magnitude() != 0) {</p><p>		c.normalise();</p><p>		b = c.cross(a);</p><p>	}</p><p>	std::cout &lt;&lt; "Orthonormal basis" &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "a: " &lt;&lt; a.toString() &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "b: " &lt;&lt; b.toString() &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "c: " &lt;&lt; c.toString() &lt;&lt; std::endl;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723481541/71d098f5bff7e5298177967abb86beb0/_B4C60050_E84A_4AB4_94D8_AEDCCD0E4C27_.png" />
         <pubDate>2025-03-18 04:43:37 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3370570262</guid>
      </item>
      <item>
         <title>7701659_Hugo_MEUNIER</title>
         <author></author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3370578185</link>
         <description><![CDATA[<p>#define NOMINMAX</p><p>#include &lt;iostream&gt;</p><p>#include "core.h"</p><p>int main()</p><p>{</p><p>    cyclone::Vector3 A(1, 2, -1);</p><p>    cyclone::Vector3 B(3, 0, 2);</p><p>    cyclone::Vector3 u1 = A.unit();</p><p>    cyclone::Vector3 projB_on_u1 = u1 * (<a rel="noopener noreferrer nofollow" href="http://B.dot">B.dot</a>(u1));</p><p>    cyclone::Vector3 u2 = (B - projB_on_u1).unit();</p><p>    cyclone::Vector3 u3 = u1.cross(u2).unit();</p><p>    std::cout &lt;&lt; "Orthonormal basis vectors:" &lt;&lt; std::endl;</p><p>    std::cout &lt;&lt; "u1: (" &lt;&lt; u1.x &lt;&lt; ", " &lt;&lt; u1.y &lt;&lt; ", " &lt;&lt; u1.z &lt;&lt; ")" &lt;&lt; std::endl;</p><p>    std::cout &lt;&lt; "u2: (" &lt;&lt; u2.x &lt;&lt; ", " &lt;&lt; u2.y &lt;&lt; ", " &lt;&lt; u2.z &lt;&lt; ")" &lt;&lt; std::endl;</p><p>    std::cout &lt;&lt; "u3: (" &lt;&lt; u3.x &lt;&lt; ", " &lt;&lt; u3.y &lt;&lt; ", " &lt;&lt; u3.z &lt;&lt; ")" &lt;&lt; std::endl;</p><p>    return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3555224838/9e25371248edc561214d9a3b6fe8ac16/Capture_d__cran_2025_03_18_134743.png" />
         <pubDate>2025-03-18 04:48:56 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3370578185</guid>
      </item>
      <item>
         <title>7701550_JOURDAIN_Aldric</title>
         <author></author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3370722843</link>
         <description><![CDATA[<pre><code>#define NOMINMAX
#define _USE_MATH_DEFINES

#include &lt;iostream&gt;
#include &lt;cmath&gt;

#include "core.h"

const double DEGREES_TO_RADIANS = M_PI / 180.0f;
const double RADIANS_TO_DEGREES = 180.0f / M_PI;

int main()
{
	cyclone::Vector3 a(1, 2, -1);
	cyclone::Vector3 b(3, 0, 2);
	a.normalise();
	b.normalise();

	std::cout &lt;&lt; "Orthonormal basis:" &lt;&lt; std::endl;

	cyclone::Vector3 c = a.cross(b);

	if (c.magnitude() != 0) {
		c.normalise();
		b = c.cross(a);
		std::cout &lt;&lt; "a: " &lt;&lt; a.toString() &lt;&lt; std::endl;
		std::cout &lt;&lt; "b: " &lt;&lt; b.toString() &lt;&lt; std::endl;
		std::cout &lt;&lt; "c: " &lt;&lt; c.toString() &lt;&lt; std::endl;
	}
	else {
		std::cout &lt;&lt; "Vector A and B are parallel" &lt;&lt; std::endl;
		std::cout &lt;&lt; "a: " &lt;&lt; a.toString() &lt;&lt; std::endl;
		std::cout &lt;&lt; "b: " &lt;&lt; b.toString() &lt;&lt; std::endl;
	}

   return 0;
}
</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3555602763/a8c7fc5efdf66402c47d9445b0b4cdc2/Capture_d__cran_2025_03_18_153415.png" />
         <pubDate>2025-03-18 06:36:14 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3370722843</guid>
      </item>
      <item>
         <title>7701564_Arthur_Aillet</title>
         <author>ailletarthur70</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3370931915</link>
         <description><![CDATA[<p>#include "core.h"</p><p>#include &lt;iostream&gt;</p><p><br/></p><p>int main()</p><p>{</p><p>    cyclone::Vector3 a(1, 2, -1); // fixed</p><p>    cyclone::Vector3 b(3, 0, 2);</p><p>    a.normalise();</p><p>    b.normalise();</p><p>    </p><p>    cyclone::Vector3 c = a % b;</p><p>    if (c.magnitude() == 0) {</p><p>        std::cout &lt;&lt; "a and b are parallel" &lt;&lt; std::endl;</p><p>    } else {</p><p>        c.normalise();</p><p>        b = c % a;</p><p>        std::cout &lt;&lt; "a: " &lt;&lt; a.toString() &lt;&lt; std::endl;</p><p>        std::cout &lt;&lt; "b: " &lt;&lt; b.toString() &lt;&lt; std::endl;</p><p>        std::cout &lt;&lt; "c: " &lt;&lt; c.toString() &lt;&lt; std::endl;</p><p>    }</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2953304112/f316e2adccb15b7ac8ac9674b38e2ee4/image.png" />
         <pubDate>2025-03-18 09:11:44 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3370931915</guid>
      </item>
      <item>
         <title>7701615_Fievez_Stephane</title>
         <author>stefanfievez</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3370959520</link>
         <description><![CDATA[<p>//#define NOMINMAX</p><p>#define <em>USE</em>MATH_DEFINES</p><p>#include &lt;iostream&gt;</p><p>#include &lt;cmath&gt;</p><p>#include "core.h"</p><p>int main()</p><p>{</p><p>	cyclone::Vector3 A, B, C;</p><p>	A = cyclone::Vector3(1, 2, -1);</p><p>	B = cyclone::Vector3(3, 0, 2);</p><p>	A.normalise();</p><p>	B.normalise();</p><p>	C = A.cross(B);</p><p>	if (C.magnitude() != 0) {</p><p>		C.normalise();</p><p>		B = C.cross(A);</p><p>		std::cout &lt;&lt; "Orthonormal :" &lt;&lt; std::endl;</p><p>		std::cout &lt;&lt; "A: " &lt;&lt; A.toString() &lt;&lt; std::endl;</p><p>		std::cout &lt;&lt; "B: " &lt;&lt; B.toString() &lt;&lt; std::endl;</p><p>		std::cout &lt;&lt; "C: " &lt;&lt; C.toString() &lt;&lt; std::endl;</p><p>	} else {</p><p>		std::cout &lt;&lt; "Vectors are parallel" &lt;&lt; std::endl;</p><p>	}</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3556358976/d380c817648e551fb4474189c9f3363f/_41FCEF23_DBE9_4D17_A3A0_D54BAAADF788_.png" />
         <pubDate>2025-03-18 09:34:49 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3370959520</guid>
      </item>
      <item>
         <title>7701613_Tom_Daniel</title>
         <author></author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371015627</link>
         <description><![CDATA[<pre><code>Vector3 ProjectVector(const Vector3 &amp;a, const Vector3 &amp;b)
{
   return a.dot(b) / a.dot(a) * a;
}

void SecondClassTests()
{
   Vector3 u1(1, 2, -1);
   Vector3 b(3, 0, 2);

   u1.normalise();

   Vector3 u2 = b - ProjectVector(u1, b);

   u2.normalise();

   const Vector3 u3 = u1.cross(u2);

   std::cout &lt;&lt; "u1 = " &lt;&lt; u1.toString()  &lt;&lt; std::endl;
   std::cout &lt;&lt; "u2 = " &lt;&lt; u2.toString() &lt;&lt; std::endl;
   std::cout &lt;&lt; "u3 = " &lt;&lt; u3.toString() &lt;&lt; std::endl;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3556613735/ad972c03caaf39ce1aafd4a62104d34b/image.png" />
         <pubDate>2025-03-18 10:19:54 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371015627</guid>
      </item>
      <item>
         <title>7701639_Hippolyte_Aubert</title>
         <author>hippolyteaubert87</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371118112</link>
         <description><![CDATA[<p>#define NOMINMAX</p><p>#include &lt;iostream&gt;</p><p>#include "core.h"</p><p>int main()</p><p>{</p><p>	cyclone::Vector3 a(1, 2, -1);</p><p>	cyclone::Vector3 b(3, 0, 2);</p><p>	a.normalise();</p><p>	b.normalise();</p><p>	cyclone::Vector3 c = a.cross(b);</p><p>	if (c.magnitude() == 0) {</p><p>		std::cout &lt;&lt; "Vectors are parallel" &lt;&lt; std::endl;</p><p>		return 0;</p><p>	} else {</p><p>		c.normalise();</p><p>		b = c.cross(a);</p><p>	}</p><p>	std::cout &lt;&lt; "a: " &lt;&lt; a.toString() &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "b: " &lt;&lt; b.toString() &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; "c: " &lt;&lt; c.toString() &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2963004693/35e5235a0c858e516cdc6e84739e1c5f/image.png" />
         <pubDate>2025-03-18 11:46:03 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371118112</guid>
      </item>
      <item>
         <title>7701516_Léo_soidiki</title>
         <author></author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371184680</link>
         <description><![CDATA[<p>#define NOMINMAX</p><p>#include &lt;iostream&gt;</p><p>#include "core.h"</p><p>int main()</p><p>{</p><p>    cyclone::Vector3 u(1, 2, -1);</p><p>    cyclone::Vector3 v(3, 0, 2);</p><p>    u.normalise();</p><p>    v.normalise();</p><p>    cyclone::Vector3 w = u.cross(v);</p><p>    if (w.magnitude() &gt; 0) {</p><p>        w.normalise();</p><p>        v = w.cross(u);</p><p>    }</p><p>    std::cout &lt;&lt; "Orthonormal Basis:" &lt;&lt; std::endl;</p><p>    std::cout &lt;&lt; "u: " &lt;&lt; u.toString() &lt;&lt; std::endl;</p><p>    std::cout &lt;&lt; "v: " &lt;&lt; v.toString() &lt;&lt; std::endl;</p><p>    std::cout &lt;&lt; "w: " &lt;&lt; w.toString() &lt;&lt; std::endl;</p><p>   </p><p>   return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3557132337/ceddb66c87096d329b5a8bcfba40fd5c/assignement.png" />
         <pubDate>2025-03-18 12:32:19 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371184680</guid>
      </item>
      <item>
         <title>7701663_Samuel_Florentin</title>
         <author></author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371210255</link>
         <description><![CDATA[<p>#define NOMINMAX</p><p>#include &lt;iostream&gt;</p><p>#define <em>USE</em>MATH_DEFINES</p><p>#include "core.h"</p><p>int main()</p><p>{</p><p>	cyclone::Vector3 a{1, 2, -1};</p><p>	cyclone::Vector3 b{3, 0, 2};</p><p>	a.normalise();</p><p>	b.normalise();</p><p>	cyclone::Vector3 c{ a.cross(b) };</p><p>	if (c.magnitude() == 0)</p><p>		std::cout &lt;&lt; "a &amp; b are parallel\n";</p><p>	else {</p><p>		c.normalise();</p><p>		b = c.cross(a);</p><p>	}</p><p>	std::cout &lt;&lt; "a: " &lt;&lt; a.toString() &lt;&lt; '\n';</p><p>	std::cout &lt;&lt; "b: " &lt;&lt; b.toString() &lt;&lt; '\n';</p><p>	std::cout &lt;&lt; "c: " &lt;&lt; c.toString() &lt;&lt; '\n';</p><p>   return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3549213436/6f3a42240409f5ad9f7efe01b57e3dd9/image.png" />
         <pubDate>2025-03-18 12:49:18 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371210255</guid>
      </item>
      <item>
         <title>7701542_MARQUES_Mathieu</title>
         <author></author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371229552</link>
         <description><![CDATA[<pre><code>#define NOMINMAX
#define _USE_MATH_DEFINES
#include &lt;iostream&gt;
#include "core.h"
#include &lt;cmath&gt;

int main()
{
	cyclone::Vector3 a(1, 2, -1);
	cyclone::Vector3 b(3, 0, 2);

	a.normalise();
	b.normalise();

	cyclone::Vector3 c = a.cross(b);

	if (c.magnitude() != 0)
	{
		c.normalise();
		b = c.cross(a);
	}

	std::cout &lt;&lt; a.toString() &lt;&lt; std::endl;
	std::cout &lt;&lt; b.toString() &lt;&lt; std::endl;
	std::cout &lt;&lt; c.toString() &lt;&lt; std::endl;
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3557205600/f55480539b795984ae674f8882ee229d/image.png" />
         <pubDate>2025-03-18 13:01:06 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371229552</guid>
      </item>
      <item>
         <title>7701520_Adèle_DE_PREMONVILLE</title>
         <author></author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371258733</link>
         <description><![CDATA[<pre><code>int main()</code></pre><pre><code>{</code></pre><pre><code>	const double RADIANS_TO_DEGREES = 180.0f / R_PI;</code></pre><pre><code>	const double DEGREES_TO_RADIANS = R_PI / 180.0f;</code></pre><pre><code>	Vector3 A(1, 2, -1);</code></pre><pre><code>	Vector3 B(3, 0, 2);</code></pre><pre><code>	A.normalise();</code></pre><pre><code>	B.normalise();</code></pre><pre><code>	Vector3 C = A.cross(B);</code></pre><pre><code>	C.normalise();</code></pre><pre><code>	B = C.cross(A);</code></pre><pre><code>	std::cout &lt;&lt; "A: " &lt;&lt; A.toString() &lt;&lt; "\nB: " &lt;&lt; B.toString() &lt;&lt; "\nC: " &lt;&lt; C.toString() &lt;&lt; std::endl;</code></pre><pre><code>	return 0;</code></pre><pre><code>};</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3557452674/213cdc555c1d22147abbb5b629ce5d3a/image.png" />
         <pubDate>2025-03-18 13:18:33 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371258733</guid>
      </item>
      <item>
         <title>7701616_Alexandre_DE_FREITAS_MARTINS</title>
         <author>alexandrekevindefreitasmartins</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371292931</link>
         <description><![CDATA[<pre><code>#include &lt;iostream&gt;
#include "core.h"

int main() {
    cyclone::Vector3 a(1, 2, -1);
    cyclone::Vector3 b(3, 0, 2);

    a.normalise();
    b.normalise();

    cyclone::Vector3 c = a.cross(b);

    if (c.magnitude() == 0) {
        std::cout &lt;&lt; "Vector a and vector b are parallel, cannot form an orthonormal basis." &lt;&lt; std::endl;
        return 1;
    } else {
        c.normalise();
        b = c.cross(a);
    }

    std::cout &lt;&lt; "a: (" &lt;&lt; a.x &lt;&lt; ", " &lt;&lt; a.y &lt;&lt; ", " &lt;&lt; a.z &lt;&lt; ")" &lt;&lt; std::endl;
    std::cout &lt;&lt; "b: (" &lt;&lt; b.x &lt;&lt; ", " &lt;&lt; b.y &lt;&lt; ", " &lt;&lt; b.z &lt;&lt; ")" &lt;&lt; std::endl;
    std::cout &lt;&lt; "c: (" &lt;&lt; c.x &lt;&lt; ", " &lt;&lt; c.y &lt;&lt; ", " &lt;&lt; c.z &lt;&lt; ")" &lt;&lt; std::endl;

    return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676266331/bebabf38dc32c679ca667901d916b9f0/_0F55FFE7_B149_4C8B_9FF3_C29907EC4F7F_.png" />
         <pubDate>2025-03-18 13:37:38 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371292931</guid>
      </item>
      <item>
         <title>7701532_Yassin_Said</title>
         <author>saidmika9</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371444470</link>
         <description><![CDATA[<pre><code>#define NOMINMAX
#include &lt;iostream&gt;
#include "core.h"
#include &lt;cmath&gt;

int main()
{
	cyclone::Vector3 a(1, 2, -1);
	cyclone::Vector3 b(3, 0, 2);
	b.normalise();
	a.normalise();
	cyclone::Vector3 c = a.cross(b);
	if (c.magnitude() == 0)
		std::cout &lt;&lt; "Result: " &lt;&lt; "Parallel" &lt;&lt; std::endl;
	else {
		c.normalise();
		b = c.cross(a);
		std::cout &lt;&lt; "A: " &lt;&lt; a.toString() &lt;&lt; std::endl;
		std::cout &lt;&lt; "B: " &lt;&lt; b.toString() &lt;&lt; std::endl;
		std::cout &lt;&lt; "C: " &lt;&lt; c.toString() &lt;&lt; std::endl;
	}
   return 0;
}</code></pre><p><br/></p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2719055758/a46fa23f5f7140d1b75dd2185876595d/image.png" />
         <pubDate>2025-03-18 15:03:51 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371444470</guid>
      </item>
      <item>
         <title>7701618_Yann_DEMUYT</title>
         <author>yanndemuyt</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371452469</link>
         <description><![CDATA[<pre><code class="language-cpp">#define _USE_MATH_DEFINES
#include &lt;cmath&gt;
#include &lt;iostream&gt;
#include &lt;cyclone/cyclone.h&gt;

using namespace cyclone;

int main()
{
    Vector3 A(1, 2, -1); 
    Vector3 B(3, 0, 2);

    Vector3 e1 = A;
    e1.normalise();

    Vector3 proj_A_B = e1 * (B.scalarProduct(e1)); 
    Vector3 v2 = B - proj_A_B;

    Vector3 e2 = v2;
    e2.normalise();

    Vector3 e3 = e1.vectorProduct(e2);
    e3.normalise();

    std::cout &lt;&lt; "e1: (" &lt;&lt; e1.x &lt;&lt; ", " &lt;&lt; e1.y &lt;&lt; ", " &lt;&lt; e1.z &lt;&lt; ")" &lt;&lt; std::endl;
    std::cout &lt;&lt; "e2: (" &lt;&lt; e2.x &lt;&lt; ", " &lt;&lt; e2.y &lt;&lt; ", " &lt;&lt; e2.z &lt;&lt; ")" &lt;&lt; std::endl;
    std::cout &lt;&lt; "e3: (" &lt;&lt; e3.x &lt;&lt; ", " &lt;&lt; e3.y &lt;&lt; ", " &lt;&lt; e3.z &lt;&lt; ")" &lt;&lt; std::endl;

    return 0;
}
</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2712583437/bd30fb11b741793d11524ec024cfe46c/image.png" />
         <pubDate>2025-03-18 15:08:41 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371452469</guid>
      </item>
      <item>
         <title>7701576_Turpin_Raphael</title>
         <author>raphaelturpin20</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371479147</link>
         <description><![CDATA[<pre><code>#define NOMINMAX
#include &lt;iostream&gt;
#include "core.h"

int main() {
	cyclone::Vector3 a = cyclone::Vector3(1, 2, -1).unit();
	cyclone::Vector3 b = cyclone::Vector3(3, 0, 2).unit();
	cyclone::Vector3 c = a.cross(b).unit();
	if (c.magnitude() == 0)
		std::cout &lt;&lt; "Collinear" &lt;&lt; std::endl;
	else {
		b = c.cross(a);
		std::cout &lt;&lt; a.toString() &lt;&lt; std::endl;
		std::cout &lt;&lt; b.toString() &lt;&lt; std::endl;
		std::cout &lt;&lt; c.toString() &lt;&lt; std::endl;
	}
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676257873/29cba1a1c39d81c28765ade413b2a333/image.png" />
         <pubDate>2025-03-18 15:25:48 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371479147</guid>
      </item>
      <item>
         <title>7701565_Axel_HUMEAU</title>
         <author>axelhumeau</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3371498478</link>
         <description><![CDATA[<pre><code>#define NOMINMAX
#include &lt;iostream&gt;
#include "core.h"

int main()
{
	cyclone::Vector3 a(1, 2, -1);
	cyclone::Vector3 b(3, 0, 2);

	a.normalise();
	b.normalise();
	cyclone::Vector3 c = a.cross(b);

	if (c.magnitude() != 0) {
		c.normalise();
		b = c.cross(a);
	}

	std::cout &lt;&lt; "u1: " &lt;&lt; a.toString() &lt;&lt; std::endl;
	std::cout &lt;&lt; "u2: " &lt;&lt; b.toString() &lt;&lt; std::endl;
	std::cout &lt;&lt; "u3: " &lt;&lt; c.toString() &lt;&lt; std::endl;
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723481545/4c5bba2d0172a3036675ec869adfb02f/Capture_d__cran_2025_03_19_003655.png" />
         <pubDate>2025-03-18 15:37:43 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3371498478</guid>
      </item>
      <item>
         <title>7701641_Maxime_Novarese</title>
         <author>maximenovarese</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3372035142</link>
         <description><![CDATA[<p><br></p><p>#define NOMINMAX</p><p>#define <em>USE</em>MATH_DEFINES</p><p>#include &lt;iostream&gt;</p><p>#include &lt;cmath&gt;</p><p>#include "core.h"</p><p>int main()</p><p>{</p><p>    cyclone::Vector3 A, B, C;</p><p>    A = cyclone::Vector3(1, 2, -1);</p><p>    B = cyclone::Vector3(3, 0, 2);</p><p>    A.normalise();</p><p>    B.normalise();</p><p>    C = A.cross(B);</p><p>    if (C.magnitude() != 0) {</p><p>        C.normalise();</p><p>        B = C.cross(A);</p><p>        std::cout &lt;&lt; "Orthonormal :" &lt;&lt; std::endl;</p><p>        std::cout &lt;&lt; "A: " &lt;&lt; A.toString() &lt;&lt; std::endl;</p><p>        std::cout &lt;&lt; "B: " &lt;&lt; B.toString() &lt;&lt; std::endl;</p><p>        std::cout &lt;&lt; "C: " &lt;&lt; C.toString() &lt;&lt; std::endl;</p><p>    }</p><p>    else {</p><p>        std::cout &lt;&lt; "Vectors are parallel" &lt;&lt; std::endl;</p><p>    }</p><p>    return 0;</p><p>}</p><p><br></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3560160488/e32ed2a64141bdbecbe9e76cfb3b729d/Capture_d__cran_2025_03_19_090749.png" />
         <pubDate>2025-03-19 00:09:49 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3372035142</guid>
      </item>
      <item>
         <title>770150_DENIS_Axel</title>
         <author>therabbitlexa271</author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3372044341</link>
         <description><![CDATA[<pre><code>#define NOMINMAX
#include &lt;iostream&gt;
#include "core.h"
#include &lt;cmath&gt;
#define _USE_MATH_DEFINES

int main()
{
	cyclone::Vector3 a(1, 2, -1);
	cyclone::Vector3 b(3, 0, 2);

	a.normalise();
	b.normalise();
	cyclone::Vector3 c = a.cross(b);
	if (c.magnitude() == 0) {}
	else {
		c.normalise();
		b = a % b;
	}
	std::cout &lt;&lt; "a, b, c" &lt;&lt; std::endl &lt;&lt; a.toString() &lt;&lt; std::endl &lt;&lt; b.toString() &lt;&lt; std::endl &lt;&lt; c.toString() &lt;&lt; std::endl;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2718103450/c16847bff18b8c2e68fd328a647baa51/image.png" />
         <pubDate>2025-03-19 00:16:17 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3372044341</guid>
      </item>
      <item>
         <title>7701562_SCOTT_Julian</title>
         <author></author>
         <link>https://padlet.com/mksung89/orthonormal/wish/3372093655</link>
         <description><![CDATA[<pre><code>#include &lt;iostream&gt;
#include "core.h"

int main()
{
   cyclone::Vector3 a(1, 2, -1);
   cyclone::Vector3 b(3, 0, 2);

   a.normalise();
   b.normalise();

   cyclone::Vector3 c = a.cross(b);

   if (c.squareMagnitude()) {
      c.normalise();
      b = c.cross(a);
   }

   std::cout &lt;&lt; a.toString() &lt;&lt; std::endl;
   std::cout &lt;&lt; b.toString() &lt;&lt; std::endl;
   std::cout &lt;&lt; c.toString() &lt;&lt; std::endl;

   return 0;
}
</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/3560245280/9a7858705df34f4968cbc3353ebd67d8/image.png" />
         <pubDate>2025-03-19 00:39:24 UTC</pubDate>
         <guid>https://padlet.com/mksung89/orthonormal/wish/3372093655</guid>
      </item>
   </channel>
</rss>
