<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>View Matrix/Projection Matrix by Mankyu Sung</title>
      <link>https://padlet.com/mksung89/viewMatrix</link>
      <description>Made with swagger</description>
      <language>en-us</language>
      <pubDate>2020-10-21 00:19:41 UTC</pubDate>
      <lastBuildDate>2025-04-24 08:39:11 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url></url>
      </image>
      <item>
         <title>Ethan_HERNOU_7701583</title>
         <author>ethanhernou</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156317208</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>	#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>	#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>glm::mat4 LookAt(const glm::vec3&amp; cameraPosition, const glm::vec3&amp; look, const glm::vec3&amp; up)</p><p>{</p><p>	glm::vec3 zaxis = glm::normalize(cameraPosition - look);</p><p>	glm::vec3 xaxis = glm::normalize(glm::cross(up, zaxis));</p><p>	glm::vec3 yaxis = glm::cross(zaxis, xaxis);</p><p>	glm::mat4 translation = glm::mat4(1.0f);</p><p>	translation[3] = glm::vec4(-cameraPosition, 1.0f);</p><p>	glm::mat4 rotation = glm::mat4(1.0f);</p><p>	rotation[0][0] = xaxis.x;</p><p>	rotation[1][0] = xaxis.y;</p><p>	rotation[2][0] = xaxis.z;</p><p>	rotation[0][1] = yaxis.x;</p><p>	rotation[1][1] = yaxis.y;</p><p>	rotation[2][1] = yaxis.z;</p><p>	rotation[0][2] = zaxis.x;</p><p>	rotation[1][2] = zaxis.y;</p><p>	rotation[2][2] = zaxis.z;</p><p>	return rotation * translation;</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 camPos = glm::vec3(5.f);</p><p>	glm::vec3 look = glm::vec3(0.f);</p><p>	glm::vec3 up = glm::vec3(0.f, 1.f, 0.f);</p><p>	glm::mat4 view = LookAt(camPos, look, up);</p><p>	std::cout &lt;&lt; glm::to_string(view) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p><p><br></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676256945/937015e2e1e35854ad19eaafdd8a7a80/Class4_Result.png" />
         <pubDate>2024-10-07 05:38:56 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156317208</guid>
      </item>
      <item>
         <title>Guillaume_CLEMENT--BONNIEL-VEYRON_7701465</title>
         <author>lapuissancedelafunk</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156318711</link>
         <description><![CDATA[<p>#define GLM_FORCE_SWIZZLE</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>const double DEG_TO_RAD = glm::pi&lt;double&gt;() / 180.0;</p><p>const double RAD_TO_DEG = 180.0 / glm::pi&lt;double&gt;();</p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up)</p><p>{</p><p>	glm::vec3 f = glm::normalize(campos - look);</p><p>	glm::vec3 s = glm::normalize(glm::cross(up, f));</p><p>	glm::vec3 u = glm::cross(f, s);</p><p>	glm::mat4 rot(1.0f);</p><p>	rot[0] = glm::vec4(s, 0.0f);</p><p>	rot[1] = glm::vec4(u, 0.0f);</p><p>	rot[2] = glm::vec4(f, 0.0f);</p><p>	rot = glm::transpose(rot);</p><p>	return rot;</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 campos(5.0f, 5.0f, 5.0f);</p><p>	glm::vec3 look(0.0f, 0.0f, 0.0f);</p><p>	glm::vec3 up(0.0f, 1.0f, 0.0f);</p><p>	glm::mat4 view = lookAt(campos, look, up);</p><p>	std::cout &lt;&lt; glm::to_string(view) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p><p><br></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723928984/346c19915d5f9e2188e95778dcb2d9eb/image.png" />
         <pubDate>2024-10-07 05:39:56 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156318711</guid>
      </item>
      <item>
         <title>Romain_PANNO_7701538</title>
         <author>romainpanno</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156324106</link>
         <description><![CDATA[<p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up)</p><p>{</p><p>	glm::vec3 zaxis = glm::normalize(campos - look);</p><p>	glm::vec3 xaxis = glm::normalize(glm::cross(up, zaxis));</p><p>	glm::vec3 yaxis = glm::cross(zaxis, xaxis);</p><p>	glm::mat4 view = glm::mat4(1.0f);</p><p>	view[0] = glm::vec4(xaxis.x, yaxis.x, zaxis.x, 0);</p><p>	view[1] = glm::vec4(xaxis.y, yaxis.y, zaxis.y, 0);</p><p>	view[2] = glm::vec4(xaxis.z, yaxis.z, zaxis.z, 0);</p><p>	view[3] = glm::vec4(-glm::dot(xaxis, campos), -glm::dot(yaxis, campos), -glm::dot(zaxis, campos), 1);</p><p>	return view;</p><p>}</p><p>int ex1()</p><p>{</p><p>	glm::vec3 camPos = glm::vec3(5, 5, 5);</p><p>	glm::vec3 look = glm::vec3(0, 0, 0);</p><p>	glm::vec3 up = glm::vec3(0, 1, 0);</p><p>	glm::mat4 view = lookAt(camPos, look, up);</p><p>	std::cout &lt;&lt; to_string(view) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2719065559/663a81c672fbc2f4ee3f8a78ee81e333/image.png" />
         <pubDate>2024-10-07 05:43:19 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156324106</guid>
      </item>
      <item>
         <title>Enzo_GARNIER_7701567</title>
         <author>bestioslash</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156324139</link>
         <description><![CDATA[<pre><code>#include &lt;iostream&gt;
#include &lt;glm/glm.hpp&gt;
#include &lt;glm/gtx/transform.hpp&gt;
#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;

glm::mat4 lookAt(glm::vec3 camPos, glm::vec3 look, glm::vec3 up)
{
	glm::vec3 zaxis = glm::normalize(camPos - look);
	glm::vec3 xaxis = glm::normalize(glm::cross(up, zaxis));
	glm::vec3 yaxis = glm::cross(zaxis, xaxis);

	glm::mat4 view = glm::mat4(1.0f);

	view[0][0] = xaxis.x;
	view[1][0] = xaxis.y;
	view[2][0] = xaxis.z;

	view[0][1] = yaxis.x;
	view[1][1] = yaxis.y;
	view[2][1] = yaxis.z;

	view[0][2] = zaxis.x;
	view[1][2] = zaxis.y;
	view[2][2] = zaxis.z;

	view[3][0] = -glm::dot(xaxis, camPos);
	view[3][1] = -glm::dot(yaxis, camPos);
	view[3][2] = -glm::dot(zaxis, camPos);

	return view;
}

void main()
{
	glm::vec3 camPos(5, 5, 5);
	glm::vec3 look(0, 0, 0);
	glm::vec3 up(0, 1, 0);
	glm::mat4 view = lookAt(camPos, look, up);
	std::cout &lt;&lt; glm::to_string(view) &lt;&lt; std::endl;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2708765362/52b03b8295ea6d3b948f000c993dc355/Screenshot_2024_10_07_144255.png" />
         <pubDate>2024-10-07 05:43:20 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156324139</guid>
      </item>
      <item>
         <title>Ulysse_Decottignies_7701473</title>
         <author>odycepro</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156325857</link>
         <description><![CDATA[<p>#define GLM_FORCE_SWIZZLE</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/gtc/type_ptr.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/mat3x3.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>const float DEGREES_TO_RADIANS = glm::pi &lt;float&gt;() / 180;</p><p>const float RADIANS_TO_DEGREES = 180 / glm::pi &lt;float&gt;();</p><p><br/></p><p>static glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up) {</p><p>	glm::vec3 Z = glm::normalize(campos - look);</p><p>	glm::vec3 X = glm::normalize(glm::cross(up, Z));</p><p>	glm::vec3 Y = glm::normalize(glm::cross(Z, X));</p><p>	glm::vec4 P(X.x, Y.x, Z.x, 0);</p><p>	glm::vec4 S(X.y, Y.y, Z.y, 0);</p><p>	glm::vec4 T(X.z, Y.z, Z.z, 0);</p><p>	glm::vec4 Q(0, 0, 0, 1);</p><p>	glm::mat4 res;</p><p>	res[0] = P;</p><p>	res[1] = S;</p><p>	res[2] = T;</p><p>	res[3] = Q;</p><p>	return res;</p><p>}</p><p>static int main() {</p><p>	glm::vec3 camPos(5, 5, 5);</p><p>	glm::vec3 lookat(0, 0, 0);</p><p>	glm::vec3 up(0, 1, 0);</p><p>	</p><p>	std::cout &lt;&lt; to_string(lookAt(camPos, lookat, up)) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723468159/955a6b0984fb6da17bb0ea64f9f30cc3/image.png" />
         <pubDate>2024-10-07 05:44:27 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156325857</guid>
      </item>
      <item>
         <title>7701596_Tovy_REN</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156326645</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p><br></p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up){</p><p>glm::vec3 zaxis = glm::normalize(campos - look);</p><p>glm::vec3 xaxis = glm::normalize(glm::cross(up, zaxis));</p><p>glm::vec3 yaxis = glm::cross(zaxis, xaxis);</p><p>glm::mat4 view(</p><p>glm::vec4(xaxis.x, yaxis.x, zaxis.x, 0),</p><p>glm::vec4(xaxis.y, yaxis.y, zaxis.y, 0),</p><p>glm::vec4(xaxis.z, yaxis.z, zaxis.z, 0),</p><p>glm::vec4(-glm::dot(xaxis, campos), -glm::dot(yaxis, campos), -glm::dot(zaxis, campos), 1)</p><p> );</p><p>return view;</p><p>}</p><p><br></p><p>int main() {</p><p>glm::vec3 campos = glm::vec3(5,5,5);</p><p>glm::vec3 look = glm::vec3(0,0,0);</p><p>glm::vec3 up = glm::vec3(0,1,0);</p><p>glm::mat4 view = lookAt(campos, look, up);</p><p>std::cout &lt;&lt; glm::to_string(view) &lt;&lt; std::endl;</p><p>return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2850207417/81710275ed6a8631d67b44b138df90bc/image.png" />
         <pubDate>2024-10-07 05:44:59 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156326645</guid>
      </item>
      <item>
         <title>Leonore_clos_manescau_7701539</title>
         <author>tenshiitv</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156326914</link>
         <description><![CDATA[<p>static glm::mat4 LookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up)</p><p>{</p><p>	glm::vec3 zaxis = glm::normalize(campos - look);</p><p>	glm::vec3 xaxis = glm::normalize(glm::cross(up, zaxis));</p><p>	glm::vec3 yaxis = glm::cross(zaxis, xaxis);</p><p>	glm::mat4 view = {</p><p>		xaxis.x, yaxis.x, zaxis.x, 0,</p><p>		xaxis.y, yaxis.y, zaxis.y, 0,</p><p>		xaxis.z, yaxis.z, zaxis.z, 0,</p><p>		-glm::dot(xaxis, campos), -glm::dot(yaxis, campos), -glm::dot(zaxis, campos), 1</p><p>	};</p><p>	return view;</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 campos(5, 5, 5);</p><p>	glm::vec3 look(0, 0, 0);</p><p>	glm::vec3 up(0, 1, 0);</p><p>	LookAt(campos, look, up);</p><p>	std::cout &lt;&lt; to_string(LookAt(campos, look, up)) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723589223/7821016eabb106d8a8afd4e1d86a4c98/image.png" />
         <pubDate>2024-10-07 05:45:11 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156326914</guid>
      </item>
      <item>
         <title>7701664 Eliot Janvier</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156327511</link>
         <description><![CDATA[<pre><code class="language-cpp">#define GLM_ENABLE_EXPERIMENTAL
#include &lt;glm/glm.hpp&gt;
#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;
#include &lt;glm/gtx/transform.hpp&gt;
#include &lt;iostream&gt;
#include &lt;stdexcept&gt;

glm::mat4 lookAt(glm::vec3 camPos, glm::vec3 look, glm::vec3 up) {
  auto zc = glm::normalize(camPos - look);
  auto xc = glm::normalize(glm::cross(up, zc));
  auto yc = glm::normalize(glm::cross(zc, xc));

  glm::mat4 view(1.0f);
  view[0] = glm::vec4(xc, 0.0f);
  view[1] = glm::vec4(yc, 0.0f);
  view[2] = glm::vec4(zc, 0.0f);

  view = glm::transpose(view);
  view = glm::translate(view, -camPos);
  return view;
}

int main() {
  glm::vec3 camPos(5, 5, 5);
  glm::vec3 look(0, 0, 0);
  glm::vec3 up(0, 1, 0);

  std::cout &lt;&lt; "view matrix: " &lt;&lt; glm::to_string(lookAt(camPos, look, up))
            &lt;&lt; std::endl;

  return 0;
}
</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2851252182/3c830663784a297ac0ddbdbfcd418193/image.png" />
         <pubDate>2024-10-07 05:45:36 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156327511</guid>
      </item>
      <item>
         <title>Thomas_Laprie_7701676</title>
         <author>totolaprie</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156327652</link>
         <description><![CDATA[<p>#define GLM_FORCE_SWIZZLE</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up)</p><p>{</p><p>	glm::vec3 zaxis = glm::normalize(campos - look);</p><p>	glm::vec3 xaxis = glm::normalize(glm::cross(up, zaxis));</p><p>	glm::vec3 yaxis = glm::cross(zaxis, xaxis);</p><p>	glm::mat4 viewMatrix = glm::mat4(1.0f);</p><p>	viewMatrix[0] = glm::vec4(xaxis, 0.0f);</p><p>	viewMatrix[1] = glm::vec4(yaxis, 0.0f);</p><p>	viewMatrix[2] = glm::vec4(zaxis, 0.0f);</p><p>	viewMatrix = glm::transpose(viewMatrix);</p><p>	viewMatrix = glm::translate(viewMatrix, -campos);</p><p>	return viewMatrix;</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 cameraPos = glm::vec3(5.0f, 5.0f, 5.0f);</p><p>	glm::vec3 lookat = glm::vec3(0.0f, 0.0f, 0.0f);</p><p>	glm::vec3 up = glm::vec3(0.0f, 1.0f, 0.0f);</p><p>	glm::mat4 viewMatrix = lookAt(cameraPos, lookat, up);</p><p>	std::cout &lt;&lt; glm::to_string(viewMatrix) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2681261339/36bfa3ee64f8108581607c87be4c05bb/Screenshot_1.png" />
         <pubDate>2024-10-07 05:45:42 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156327652</guid>
      </item>
      <item>
         <title>7701504_Alexandre_Franquet</title>
         <author>alexandrefranquetty</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156328607</link>
         <description><![CDATA[<pre><code>glm::mat4x4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up)
{
	glm::vec3 zc = glm::normalize(campos - look);
	glm::vec3 xc = glm::normalize(glm::cross(up, zc));
	glm::vec3 yc = glm::normalize(glm::cross(zc, xc));

	glm::mat4x4 viewMatRot = {
		{xc.x, yc.x, zc.x, 0},
		{xc.y, yc.y, zc.y, 0},
		{xc.z, yc.z, zc.z, 0},
		{0, 0, 0, 1}
	};

	glm::mat4x4 viewMatTrans(1);
	viewMatTrans[3][0] = -campos.x;
	viewMatTrans[3][1] = -campos.y;
	viewMatTrans[3][2] = -campos.z;
	return viewMatRot * viewMatTrans;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2712499930/0532c719fd4d7a59110747f1ddb2179b/Capture_d__cran_2024_10_07_144509.png" />
         <pubDate>2024-10-07 05:46:14 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156328607</guid>
      </item>
      <item>
         <title>7701581_MARTINS-GANDRA_Hugo</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156329001</link>
         <description><![CDATA[<p>#include "CMakeProject1.h"</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>using namespace std;</p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up)</p><p>{</p><p>	glm::vec3 zaxis = glm::normalize(campos - look);</p><p>	glm::vec3 xaxis = glm::normalize(glm::cross(up, zaxis));</p><p>	glm::vec3 yaxis = glm::cross(zaxis, xaxis);</p><p>	glm::mat4 view = glm::mat4(1.0f);</p><p>	view[0][0] = xaxis.x;</p><p>	view[1][0] = xaxis.y;</p><p>	view[2][0] = xaxis.z;</p><p>	view[0][1] = yaxis.x;</p><p>	view[1][1] = yaxis.y;</p><p>	view[2][1] = yaxis.z;</p><p>	view[0][2] = zaxis.x;</p><p>	view[1][2] = zaxis.y;</p><p>	view[2][2] = zaxis.z;</p><p>	view[3][0] = -glm::dot(xaxis, campos);</p><p>	view[3][1] = -glm::dot(yaxis, campos);</p><p>	view[3][2] = -glm::dot(zaxis, campos);</p><p>	return view;</p><p>}</p><p>int main()</p><p>{</p><p>	const float DEGREES_TO_RADIANS = glm::pi&lt;float&gt;() / 180.0;</p><p>	const float RADIANS_TO_DEGREES = 180.0 / glm::pi&lt;float&gt;();</p><p>	</p><p>	glm::vec3 camPos(5, 5, 5);</p><p>	glm::vec3 lookat(0, 0, 0);</p><p>	glm::vec3 up(0, 1, 0);</p><p>	glm::mat4 view = lookAt(camPos, lookat, up);</p><p>	std::cout &lt;&lt; glm::to_string(view) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2851144211/93d8133945e3ad6682615dc154303729/image.png" />
         <pubDate>2024-10-07 05:46:22 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156329001</guid>
      </item>
      <item>
         <title>7701595_Denis_Maillot</title>
         <author>d3nxfr</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156329222</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>template&lt;typename T&gt;</p><p>void display(T x, const std::string&amp; prefix = "") {</p><p>	std::cout &lt;&lt; prefix &lt;&lt; glm::to_string(x) &lt;&lt; std::endl;</p><p>}</p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up) {</p><p>	glm::mat4x4 translationMatrix(1, 0, 0, -look.x, 0, 1, 0, -look.y, 0, 0, 1, -look.z, 0, 0, 0, 1.f);</p><p>	glm::vec3 zAxis = glm::normalize(campos - look);</p><p>	glm::vec3 xAxis = glm::normalize(glm::cross(up, zAxis));</p><p>	glm::vec3 yAxis = glm::normalize(glm::cross(zAxis, xAxis));</p><p>	glm::mat4x4 rotationMatrix(xAxis.x, yAxis.x, zAxis.x, 0,</p><p>							   xAxis.y, yAxis.y, zAxis.y, 0,</p><p>							   xAxis.z, yAxis.z, zAxis.z, 0,</p><p>							   0,		0,		 0,		  1);</p><p>	glm::mat4x4 viewMatrix = rotationMatrix * translationMatrix;</p><p>	return viewMatrix;</p><p>}</p><p>int main(void) {</p><p>	glm::vec3 camPos(5, 5, 5);</p><p>	glm::vec3 lookat(0, 0, 0);</p><p>	glm::vec3 up(0, 1, 0);</p><p>	glm::mat4 viewMatrix = lookAt(camPos, lookat, up);</p><p>	display(viewMatrix, "viewMatrix = ");</p><p>	return 0;</p><p>}</p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2712574292/1c2a8b645673e4259f5a63f972d3a7ef/image.png" />
         <pubDate>2024-10-07 05:46:30 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156329222</guid>
      </item>
      <item>
         <title>7701564_Arthur_Aillet</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156329426</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>	</p><p>//const float DEGREES_TO_RADIANS = 180.0 / glm::pi&lt;float&gt;();</p><p>glm::mat4 lookat(glm::vec3 campos, glm::vec3 look, glm::vec3 up) {</p><p>	glm::vec3 zc = glm::normalize(campos - look);</p><p>	glm::vec3 xc = glm::normalize(glm::cross(up, zc));</p><p>	glm::vec3 yc = glm::normalize(glm::cross(zc, xc));</p><p>	glm::vec4 c1 = glm::vec4(xc.x, yc.x, zc.x, 0);</p><p>	glm::vec4 c2 = glm::vec4(xc.y, yc.y, zc.y, 0);</p><p>	glm::vec4 c3 = glm::vec4(xc.z, yc.z, zc.z, 0);</p><p>	glm::vec4 c4 = glm::vec4(0, 0, 0, 1);</p><p>	</p><p>	glm::mat4 rot;</p><p>	rot[0] = c1;</p><p>	rot[1] = c2;</p><p>	rot[2] = c3;</p><p>	rot[3] = c4;</p><p>	return rot;</p><p>}</p><p>int main() {</p><p>	glm::vec3 cam_pos (5, 5, 5);</p><p>	glm::vec3 look_at(0, 0, 0);</p><p>	glm::vec3 up(0, 1, 0);</p><p>	std::cout &lt;&lt; glm::to_string(lookat(cam_pos, look_at, up)) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2851202837/a7c48f43eed5b3549f62702e0e717ab6/image.png" />
         <pubDate>2024-10-07 05:46:36 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156329426</guid>
      </item>
      <item>
         <title>7701674_BOUSCH_Laetitia</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3156366014</link>
         <description><![CDATA[<p><br/></p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p><br/></p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p><br/></p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up)</p><p>{</p><p>	glm::vec3 f = glm::normalize(look - campos);</p><p>	glm::vec3 s = glm::normalize(glm::cross(f, up));</p><p>	glm::vec3 u = glm::cross(s, f);</p><p>    glm::vec3 Zc = glm::normalize(campos - look);</p><p>    glm::vec3 Xc = glm::normalize(glm::cross(up, Zc));</p><p>    glm::vec3 Yc = glm::cross(Zc, Xc);</p><p>	glm::mat4 result(1.0f);</p><p>	result[0][0] = Xc.x;</p><p>	result[1][0] = Xc.y;</p><p>	result[2][0] = Xc.z;</p><p>	result[0][1] = Yc.x;</p><p>	result[1][1] = Yc.y;</p><p>	result[2][1] = Yc.z;</p><p>	result[0][2] = Zc.x;</p><p>	result[1][2] = Zc.y;</p><p>	result[2][2] = Zc.z;</p><p>	result[3][0] = glm::dot(Xc, campos);</p><p>	result[3][1] = glm::dot(Yc, campos);</p><p>	result[3][2] = -glm::dot(Zc, campos);</p><p>	std::cout &lt;&lt; glm::to_string(result) &lt;&lt; std::endl;</p><p>	return result;</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 campos(5, 5, 5);</p><p>	glm::vec3 look(0, 0, 0);</p><p>	glm::vec3 up(0, 1, 0);</p><p>	lookAt(campos, look, up);</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2851347447/9279874ae44f21cb623aa357b1074b67/image.png" />
         <pubDate>2024-10-07 06:10:14 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3156366014</guid>
      </item>
      <item>
         <title>7701672_Bassagal_Louis</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3157020665</link>
         <description><![CDATA[<pre><code>#include &lt;iostream&gt;
#include &lt;glm/glm.hpp&gt;
#include "CMakeProject2.h"
#include &lt;glm/ext/matrix_transform.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;
glm::mat4 lookAt(glm::vec3 camPos, glm::vec3 lookAt, glm::vec3 up)
{
 camPos *= -1;
 glm::mat4 identityMatrix{ 1.0F };
 glm::vec3 newZAxis = glm::normalize(lookAt - camPos);
 glm::vec3 newXAxis = glm::normalize(glm::cross(up, newZAxis));
 glm::vec3 newYAxis = glm::normalize(glm::cross(newZAxis, newXAxis));
 glm::mat4 translateMatrix = glm::translate(identityMatrix, camPos);
 glm::mat4 rotateMatrix{ // Column wise matrix
 {newXAxis.x, newYAxis.x, newZAxis.x, 0},
 {newXAxis.y, newYAxis.y, newZAxis.y, 0},
 {newXAxis.z, newYAxis.z, newZAxis.z, 0},
 {0, 0, 0, 1}
 };
 glm::mat4 viewMatrix = rotateMatrix * translateMatrix;
 return viewMatrix;
}

void main()
{
 glm::vec3 camPos{ 5, 5, 5 };
 glm::vec3 lookAtPoint{ 0, 0, 0 };
 glm::vec3 up{ 0, 1, 0 };
 std::cout &lt;&lt; glm::to_string(lookAt(camPos, lookAtPoint, up)) &lt;&lt; std::endl;
 return;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2853318752/a2fcc667ef6c199c38468b4df2a10891/Capture_d__cran_2024_10_07_221147.png" />
         <pubDate>2024-10-07 13:12:47 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3157020665</guid>
      </item>
      <item>
         <title>Hillion_Jovan_7701640</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3157100053</link>
         <description><![CDATA[<p>glm::mat4 lookAt(glm::vec3 camPos, glm::vec3 look, glm::vec3 up)</p><p>{</p><p>	glm::vec3 z = glm::normalize(camPos - look);</p><p>	glm::vec3 x = glm::normalize(glm::cross(up, z));</p><p>	glm::vec3 y = glm::normalize(glm::cross(z, x));</p><p>	glm::vec4 v1 = glm::vec4(x[0], y[0], z[0], 0.f);</p><p>	glm::vec4 v2 = glm::vec4(x[1], y[1], z[1], 0.f);</p><p>	glm::vec4 v3 = glm::vec4(x[2], y[2], z[2], 0.f);</p><p>	glm::mat4 m(1.0);</p><p>	m[0] = v1;</p><p>	m[1] = v2;</p><p>	m[2] = v3;</p><p>	glm::mat4 t(1.0);</p><p>	glm::mat4 translation = glm::translate(t, -camPos);</p><p>	glm::mat4 viewMatrix = m * translation;</p><p>	std::cout &lt;&lt; "viewMatrix -&gt; " &lt;&lt; glm::to_string(viewMatrix) &lt;&lt; std::endl;</p><p>	return viewMatrix;</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 camPos(5.f, 5.f, 5.f);</p><p>	glm::vec3 look(0.f, 0.f, 0.f);</p><p>	glm::vec3 up(0.f, 1.f, 0.f);</p><p>	glm::mat4 result = lookAt(camPos, look, up);</p><p>	return 0;</p><p>}</p><p><br></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2852838149/850f306359b663fc7d87fca2352b03e1/Capture_d__cran_2024_10_07_155143.png" />
         <pubDate>2024-10-07 13:49:43 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3157100053</guid>
      </item>
      <item>
         <title>Ludovic_de_Chavagnac_7701625</title>
         <author>ludovicdechavagnac</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3158089979</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p><br/></p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up) {</p><p>	glm::vec3 z = glm::normalize(campos - look);</p><p>	glm::vec3 x = glm::normalize(glm::cross(up, z));</p><p>	glm::vec3 y = glm::normalize(glm::cross(z, x));</p><p>	glm::mat4 rot(1.0);</p><p>	rot[0] = glm::vec4(x[0], y[0], z[0], 0);</p><p>	rot[1] = glm::vec4(x[1], y[1], z[1], 0);</p><p>	rot[2] = glm::vec4(x[2], y[2], z[2], 0);</p><p>	glm::mat4 t(1.0);</p><p>	glm::mat4 translation = glm::translate(t, -campos);</p><p>	glm::mat4 viewingMatrix = rot * translation;</p><p>	return viewingMatrix;</p><p>}</p><p>int main() {</p><p>	glm::vec3 campos(5, 5, 5);</p><p>	glm::vec3 look(0, 0, 0);</p><p>	glm::vec3 up(0, 1, 0);</p><p>	std::cout &lt;&lt; glm::to_string(lookAt(campos, look, up)) &lt;&lt; std::endl;</p><p>}</p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723481541/033fb1103de78d32861ffc55e9caa18b/_4E983B93_A1D1_411E_AAB7_C57FDBBA9598_.png" />
         <pubDate>2024-10-08 01:31:50 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3158089979</guid>
      </item>
      <item>
         <title>Brice_DESOUSA_7701521</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3158385339</link>
         <description><![CDATA[<p><br/></p><p>#define GLM_FORCE_SWIZZLE</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/mat3x3.hpp&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>#include "ComputerGraphicsLecture2.h"</p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up)</p><p>{</p><p>	glm::vec3 zc = glm::normalize(campos - look);</p><p>	glm::vec3 xc = glm::normalize(glm::cross(up, zc));</p><p>	glm::vec3 yc = glm::normalize(glm::cross(zc, xc));</p><p>	glm::vec4 c1(xc.x, yc.x, zc.x, 0);</p><p>	glm::vec4 c2(xc.y, yc.y, zc.y, 0);</p><p>	glm::vec4 c3(xc.z, yc.z, zc.z, 0);</p><p>	glm::vec4 c4(-glm::dot(xc, campos), -glm::dot(yc, campos), -glm::dot(zc, campos), 1);</p><p>	</p><p>	glm::mat4 m;</p><p>	m[0] = c1;</p><p>	m[1] = c2;</p><p>	m[2] = c3;</p><p>	m[3] = c4;</p><p>	return m;</p><p>}</p><p>int main()</p><p>{</p><p>	std::cout &lt;&lt; glm::to_string(lookAt(glm::vec3(5, 5, 5), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0))) &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/2857207112/d59c4f6ba89283168e22618c98afb9ca/image.png" />
         <pubDate>2024-10-08 04:35:46 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3158385339</guid>
      </item>
      <item>
         <title>7701542_MARQUES_Mathieu</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3158675343</link>
         <description><![CDATA[<pre><code>#define GLM_ENABLE_EXPERIMENTAL

#include &lt;glm/vec3.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;
#include &lt;iostream&gt;

#include &lt;glm/mat4x4.hpp&gt;
#include &lt;glm/mat2x2.hpp&gt;
#include &lt;glm/mat3x2.hpp&gt;

static glm::mat4 lookAt(const glm::vec3 &amp;camPos, const glm::vec3 &amp;look, const glm::vec3 &amp;up)
{
	glm::vec3 z = glm::normalize(camPos - look);
	glm::vec3 x = glm::normalize(glm::cross(up, z));
	glm::vec3 y = glm::normalize(glm::cross(z, x));

	glm::mat4 res = {
		{x.x, y.x, z.x, 0},
		{x.y, y.y, z.y, 0},
		{ x.z, y.z, z.z, 0 },
		{glm::dot(-camPos, x), glm::dot(-camPos, y), glm::dot(-camPos, z), 1}
	};
	return res;
}

int main()
{
	glm::vec3 camPos(5, 5, 5);
	glm::vec3 look(0, 0, 0);
	glm::vec3 up(0, 1, 0);

	std::cout &lt;&lt; glm::to_string(lookAt(camPos, look, up)) &lt;&lt; std::endl;
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2858057051/6aeeeb37088764da60373600be18733d/image.png" />
         <pubDate>2024-10-08 07:35:11 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3158675343</guid>
      </item>
      <item>
         <title>7701550_JOURDAIN_Aldric</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3158676622</link>
         <description><![CDATA[<pre><code class="language-a">#define GLM_ENABLE_EXPERIMENTAL

#include &lt;iostream&gt;

#include &lt;glm/vec3.hpp&gt;
#include &lt;glm/mat4x4.hpp&gt;
#include &lt;glm/mat2x2.hpp&gt;
#include &lt;glm/mat3x2.hpp&gt;

#include &lt;glm/gtx/string_cast.hpp&gt;
#include &lt;glm/gtc/constants.hpp&gt;

glm::mat4 lookAt(const glm::vec3 &amp;camPos, const glm::vec3 &amp;lookAt, const glm::vec3 &amp;up) {
	glm::vec3 z = glm::normalize(camPos - lookAt);
	glm::vec3 x = glm::normalize(glm::cross(up, z));
	glm::vec3 y = glm::normalize(glm::cross(z, x));
	return { {x.x, y.x, z.x, 0}, {x.y, y.y, z.y, 0}, {x.z, y.z, z.z, 0}, {glm::dot(-camPos, x) , glm::dot(-camPos, y), glm::dot(-camPos, z), 1}};
}

int main() {

	glm::vec3 camPos(5, 5, 5);
	glm::vec3 lookat(0, 0, 0);
	glm::vec3 up(0, 1, 0);
	std::cout &lt;&lt; glm::to_string(lookAt(camPos, lookat, up));
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2858033775/bdb823c6ea641dce5bf8f1705c2ccf5a/image.png" />
         <pubDate>2024-10-08 07:35:55 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3158676622</guid>
      </item>
      <item>
         <title>7701592_HOAREAU_Nathan</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3158929957</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up)</p><p>{</p><p>	glm::vec3 Zc = glm::normalize(campos - look);</p><p>	glm::vec3 Xc = glm::normalize(glm::cross(up, Zc));</p><p>	glm::vec3 Yc = glm::normalize(glm::cross(Zc, Xc));</p><p>	glm::vec4 r1(Xc.x, Yc.x, Zc.x, 0);</p><p>	glm::vec4 r2(Xc.y, Yc.y, Zc.y, 0);</p><p>	glm::vec4 r3(Xc.z, Yc.z, Zc.z, 0);</p><p>	glm::vec4 r4(0, 0, 0, 1);</p><p>	glm::mat4 res(r1, r2, r3, r4);</p><p>	//glm::mat4 res = ((Xc.x, Yc.x, Zc.x, 0), (Xc.y, Yc.y, Zc.y, 0), (Xc.z, Yc.z, Zc.z, 0), (0, 0, 0, 1));</p><p>	return res;</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 camPos(5, 5, 5);</p><p>	glm::vec3 lookat(0, 0, 0);</p><p>	glm::vec3 up(0, 1, 0);</p><p>	std::cout &lt;&lt; glm::to_string(lookAt(camPos, lookat, up)) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2858835819/a503153f4ce634eede7b3a6f358c60e8/image.png" />
         <pubDate>2024-10-08 10:29:20 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3158929957</guid>
      </item>
      <item>
         <title>7701663_samuel_florentin</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3160184624</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include "CMakeProject1.h"</p><p>#include &lt;glm/vec3.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 lookat, glm::vec3 up)</p><p>{</p><p>	glm::vec3 z{glm::normalize(campos - lookat)};</p><p>	glm::vec3 x{glm::normalize(glm::cross(up, z)) };</p><p>	glm::vec3 y{glm::normalize(glm::cross(z, x)) };</p><p>	glm::mat4 rotation{};</p><p>	rotation[0] = { x.x, y.x, z.x, 0 }; </p><p>	rotation[1] = { x.y, y.y, z.y, 0 };</p><p>	rotation[2] = { x.z, y.z, z.z, 0 };</p><p>	rotation[3] = { 0, 0, 0, 1 };</p><p>	glm::mat4 translation{};</p><p>	translation[0] = { 1, 0, 0, 0 };</p><p>	translation[1] = { 0, 1, 0, 0 };</p><p>	translation[2] = { 0, 0, 1, 0 };</p><p>	translation[3] = { -campos.x, -campos.y, -campos.z, 1 };</p><p>	return rotation * translation;</p><p>}</p><p>int main()</p><p>{</p><p>	std::cout &lt;&lt; glm::to_string(lookAt({ 5.0F,5.0F,5.0F }, { 0.0F,0.0F,0.0F }, { 0.0F,1.0F,0.0F })) &lt;&lt; '\n';</p><p>	return 0;</p><p>}</p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2862819114/0e0f8adefb9c377fcf03a5f7d6652928/image.png" />
         <pubDate>2024-10-09 01:51:17 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3160184624</guid>
      </item>
      <item>
         <title>7701650_leo_lhuillier</title>
         <author>leolhulhuillierleoillier</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3160275642</link>
         <description><![CDATA[<p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up) {</p><p>    glm::vec3 z = glm::normalize(campos - look);</p><p>    glm::vec3 x = glm::normalize(glm::cross(up, z));</p><p>    glm::vec3 y = glm::normalize(glm::cross(z, x));</p><p>    glm::mat4 res = { {x.x, y.x, z.x, 0}, {x.y, y.y, z.y, 0}, {x.z, y.z, z.z, 0}, {glm::dot(-campos, x), glm::dot(-campos, y), glm::dot(-campos, z), 1}};</p><p>    return res;</p><p>}</p><p><br/></p><p>int main() {</p><p>    </p><p>    std::cout &lt;&lt; glm::to_string(lookAt(glm::vec3{ 5,5,5 }, glm::vec3{ 0,0,0 }, glm::vec3{ 0,1,0 })) &lt;&lt; std::endl;</p><p>    return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/414798071/99fc44255bbef78cbe637e5d13c79ba1/image.png" />
         <pubDate>2024-10-09 03:07:08 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3160275642</guid>
      </item>
      <item>
         <title>7701613_DANIEL_Tom</title>
         <author>tagemania</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3160580955</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include "TestProject.h"</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>using namespace std;</p><p>glm::mat4 lookAt(glm::vec3 camPos, glm::vec3 target, glm::vec3 up)</p><p>{</p><p>	glm::vec3 z = glm::normalize(camPos - target);</p><p>	glm::vec3 x = glm::normalize(glm::cross(up, z));</p><p>	glm::vec3 y = glm::normalize(glm::cross(z, x));</p><p>	glm::mat4 viewMatrix = {</p><p>		{x.x, y.x, z.x, 0},</p><p>		{x.y, y.y, z.y, 0},</p><p>		{x.z, y.z, z.z, 0},</p><p>		{glm::dot(-camPos, x), glm::dot(-camPos, y), glm::dot(-camPos, z), 1}</p><p>	};</p><p>	return viewMatrix;</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 camPos(5, 5, 5);</p><p>	glm::vec3 target(0, 0, 0);</p><p>	glm::vec3 up(0, 1, 0);</p><p>	glm::mat4 viewMatrix = lookAt(camPos, target, up);</p><p>	std::cout &lt;&lt; glm::to_string(viewMatrix) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2720540983/2e17248ac8909bc2299d3dc0f925041f/image.png" />
         <pubDate>2024-10-09 07:35:54 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3160580955</guid>
      </item>
      <item>
         <title>7701520_Adèle_de_Premonville</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3160734507</link>
         <description><![CDATA[<p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p># define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p><br/></p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up) {</p><p>	glm::mat4 rotation;</p><p>	glm::mat4 translation(1.0f);</p><p>	glm::vec3 Z = glm::normalize(campos - look);</p><p>	glm::vec3 X = glm::normalize(glm::cross(up, Z));</p><p>	glm::vec3 Y = glm::normalize(glm::cross(Z, X));</p><p>	rotation[0] = { X.x, Y.x, Z.x, 0 };</p><p>	rotation[1] = { X.y, Y.y, Z.y, 0 };</p><p>	rotation[2] = { X.z, Y.z, Z.z, 0 };</p><p>	rotation[3] = { 0, 0, 0, 1 };</p><p>	translation[3] = { -campos.x, -campos.y, -campos.z, 1 };</p><p>	glm::mat4 res = rotation * translation;</p><p>	return res;</p><p>}</p><p>int main()</p><p>{</p><p>	const double DEGREES_TO_RADIANS = glm::pi&lt;float&gt;() / 180.0;</p><p>	const double RADIANS_TO_DEGREES = 180.0 / glm::pi&lt;float&gt;();</p><p>	glm::vec3 camPos(5, 5, 5);</p><p>	glm::vec3 lookat(0, 0, 0);</p><p>	glm::vec3 up(0, 1, 0);</p><p>	glm::mat4 res = lookAt(camPos, lookat, up);</p><p>	std::cout &lt;&lt; to_string(res) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2864408808/7b4a2fd73d397d22610a1d7e826a883a/image.png" />
         <pubDate>2024-10-09 09:20:16 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3160734507</guid>
      </item>
      <item>
         <title>7701587 Apolline Fontaine</title>
         <author>apollinefontaine</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3162832501</link>
         <description><![CDATA[<pre><code>
glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up) {
    glm::mat4 result;
    glm::vec3 z = glm::normalize(campos - look);
    glm::vec3 x = glm::normalize(glm::cross(up, z));
    glm::vec3 y = glm::normalize(glm::cross(z, x));

    result[0] = glm::vec4(x.x, y.x, z.x, 0.0f);
    result[1] = glm::vec4(x.y, y.y, z.y, 0.0f);
    result[2] = glm::vec4(x.z, y.z, z.z, 0.0f);
    result[3] = glm::vec4(-glm::dot(x, campos), -glm::dot(x, campos), -glm::dot(z, campos), 1.0f);
    return result;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2681261983/c471dcde97bbf4e0bec792cb4ed10e34/image.png" />
         <pubDate>2024-10-10 10:14:45 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3162832501</guid>
      </item>
      <item>
         <title>7701505_Axel_Denis</title>
         <author>therabbitlexa271</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3166449408</link>
         <description><![CDATA[<pre><code>#define GLM_ENABLE_EXPERIMENTAL
#include&lt;iostream&gt;
#include&lt;glm/glm.hpp&gt;
#include&lt;glm/gtx/transform.hpp&gt;
#include&lt;glm/gtx/matrix_transform_2d.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;

glm::mat4 lookAt(glm::vec3 camPos, glm::vec3 lookat, glm::vec3 up) {
	glm::vec3 zc = glm::normalize(camPos - lookat);
	glm::vec3 xc = glm::normalize(glm::cross(up, zc));
	glm::vec3 yc = glm::normalize(glm::cross(zc, xc));

	glm::mat4 rotation(1);
	rotation[0] = { xc[0], yc[0], zc[0], 0 };
	rotation[1] = { xc[1], yc[1], zc[1], 0 };
	rotation[0] = { xc[2], yc[2], zc[2], 0 };

	glm::mat4 translation(1);
	translation = glm::translate(translation, -camPos);
	return rotation * translation;
}

int main()
{
	glm::vec3 camPos = { 5.0, 5.0, 5.0 };
	glm::vec3 lookat = { 0, 0, 0 };
	glm::vec3 up = { 0, 1.0, 0 };

	std::cout &lt;&lt; glm::to_string(lookAt(camPos, lookat, up)) &lt;&lt; std::endl;
	return 0;
}

</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2718103450/289cf763ef6fe9f4d30a51097dc7ae18/image.png" />
         <pubDate>2024-10-13 06:58:00 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3166449408</guid>
      </item>
      <item>
         <title>7701639_Hippolyte_Aubert</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3166592683</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>glm::mat4 lookAt(glm::vec3 camPos, glm::vec3 look, glm::vec3 up)</p><p>{</p><p>	const glm::vec3 w{ glm::normalize(camPos - look) };</p><p>	const glm::vec3 u{ glm::normalize(glm::cross(up, w)) };</p><p>	const glm::vec3 v{ glm::cross(w, u) };</p><p>	return glm::mat4{</p><p>		{u.x, v.x, w.x, 0.f},</p><p>		{u.y, v.y, w.y, 0.f},</p><p>		{u.z, v.z, w.z, 0.f},</p><p>		{glm::dot(u, camPos), glm::dot(v, camPos), glm::dot(w, camPos), 1.f}</p><p>	};</p><p>}</p><p>int main()</p><p>{</p><p>	glm::mat4 m = lookAt(glm::vec3(5.0f, 5.0f, 5.0f), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f));</p><p>	std::cout &lt;&lt; glm::to_string(m) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2882813930/f14f762cf8f0001e43023afbc0aca58c/image_2024_10_13_203805240.png" />
         <pubDate>2024-10-13 11:38:20 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3166592683</guid>
      </item>
      <item>
         <title>7701576_Turpin_Raphaël</title>
         <author>raphaelturpin20</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3166727267</link>
         <description><![CDATA[<pre><code>
#include &lt;iostream&gt;

#define GLM_ENABLE_EXPERIMENTAL

#include &lt;glm/gtx/string_cast.hpp&gt;
#include &lt;glm/mat4x4.hpp&gt;
#include &lt;glm/vec3.hpp&gt;

glm::mat4 lookAt(const glm::vec3 &amp;cameraPos, const glm::vec3 &amp;target, const glm::vec3 &amp;up) {
    glm::vec3 Z = glm::normalize(cameraPos - target);
    glm::vec3 X = glm::normalize(glm::cross(up, Z));
    glm::vec3 Y = glm::normalize(glm::cross(Z, X));

    return glm::translate(glm::mat4(glm::transpose(glm::mat3(X, Y, Z))), -cameraPos);
}

int main(void) {
    glm::mat4 m = lookAt(glm::vec3(5.f, 5.f, 5.f), glm::vec3(), glm::vec3(0.f, 1.f, 0.f));

    std::cout &lt;&lt; glm::to_string(m) &lt;&lt; std::endl;

    return 0;
}
</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676257873/7657a0eb70686fe3675b180211db1fd5/image.png" />
         <pubDate>2024-10-13 14:38:49 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3166727267</guid>
      </item>
      <item>
         <title>7701532_Yassin_Said</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3166733822</link>
         <description><![CDATA[<p>// CMakeProject2.cpp&nbsp;: définit le point d'entrée de l'application.</p><p>//</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#define GLM_FORCE_SWIZZLE</p><p>#include "glm/gtx/string_cast.hpp"</p><p>#include "CMakeProject2.h"</p><p>#include "glm/glm.hpp"</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up) {</p><p>	glm::vec3 Zc = glm::normalize(campos - look);</p><p>	glm::vec3 Xc = glm::normalize(glm::cross(up, Zc));</p><p>	glm::vec3 Yc = glm::normalize(glm::cross(Zc, Xc));</p><p>	glm::mat4 res = glm::mat4(glm::vec4(Xc.x, Yc.x,Zc.x, 0), glm::vec4(Xc.y, Yc.y,Zc.y, 0), glm::vec4(Xc.z, Yc.z,Zc.z, 0), glm::vec4(-glm::dot(Xc, campos), -glm::dot(Yc, campos), -glm::dot(Zc, campos), 1));</p><p>	</p><p>	return(res);</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 cpos(5, 5, 5);</p><p>	glm::vec3 lookat(0,0,0);</p><p>	glm::vec3 up(0,1,0);</p><p>	std::cout &lt;&lt; glm::to_string(lookAt(cpos, lookat, up));</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2883375512/b9741069c0146a85d0cfe4c0a6030f39/image.png" />
         <pubDate>2024-10-13 14:45:16 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3166733822</guid>
      </item>
      <item>
         <title>7701546_Clément_Lagier</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167136961</link>
         <description><![CDATA[<pre><code class="language-cpp">#define GLM_ENABLE_EXPERIMENTAL

#include &lt;iostream&gt;
#include &lt;glm/glm.hpp&gt;
#include &lt;glm/gtx/transform.hpp&gt;
#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;

glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up)
{
  glm::mat4 result(1.0f);
  glm::vec3 z = glm::normalize(campos - look);
  glm::vec3 x = glm::normalize(glm::cross(up, z));
  glm::vec3 y = glm::cross(z, x);

  glm::mat4 translation = glm::translate(glm::mat4(1.0f), -campos);
  glm::mat4 rotation = glm::mat4(1.0f);
  rotation[0] = glm::vec4(x, 0);
  rotation[1] = glm::vec4(y, 0);
  rotation[2] = glm::vec4(z, 0);
  rotation = glm::transpose(rotation);


  result = rotation * translation;
  return result;
}
int main(void)
{

  glm::vec3 camPos(5, 5, 5);
  glm::vec3 lookat(0, 0, 0);
  glm::vec3 up(0, 1, 0);

  std::cout &lt;&lt; glm::to_string(lookAt(camPos, lookat, up)) &lt;&lt; std::endl;
  return 0;
}
</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2884894206/4cc8bb72216dfd8019b53a5be11cf4c3/image.png" />
         <pubDate>2024-10-14 00:24:16 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167136961</guid>
      </item>
      <item>
         <title>7701622_Rayan_Banni</title>
         <author>bannirayan</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167537212</link>
         <description><![CDATA[<pre><code class="language-cpp">
glm::mat4 lookAt(const glm::vec3 &amp;campos, const glm::vec3 &amp;look, const glm::vec3 &amp;up) {
    glm::vec3 Zc = glm::normalize(campos - look);
    glm::vec3 Xc = glm::normalize(glm::cross(up, Zc));
    glm::vec3 Yc = glm::normalize(glm::cross(Zc, Xc));

    return glm::mat4(
        glm::vec4(Xc.x, Yc.x, Zc.x, 0),
        glm::vec4(Xc.y, Yc.y, Zc.y, 0),
        glm::vec4(Xc.z, Yc.z, Zc.z, 0),
        glm::vec4(-glm::dot(Xc, campos), -glm::dot(Yc, campos), -glm::dot(Zc, campos), 1)
    );
}


int main() {
    glm::vec3 cpos(5, 5, 5);
    glm::vec3 lookat(0, 0, 0);
    glm::vec3 up(0, 1, 0);

    std::cout &lt;&lt; glm::to_string(lookAt(cpos, lookat, up)) &lt;&lt; std::endl;

    return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723476241/62a26886fabccb0158ed7d297a4e8452/image.png" />
         <pubDate>2024-10-14 05:01:39 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167537212</guid>
      </item>
      <item>
         <title>7701639_Hippolyte_Aubert_perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167537957</link>
         <description><![CDATA[<p>glm::mat4 perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	return glm::mat4{</p><p>		{1.0f / (aspect * tan(fovy / 2.0f)), 0.0f, 0.0f, 0.0f},</p><p>		{0.0f, 1.0f / tan(fovy / 2.0f), 0.0f, 0.0f},</p><p>		{0.0f, 0.0f, (far + near) / (near - far), -1.0f},</p><p>		{0.0f, 0.0f, (2.0f <em> far </em> near) / (near - far), 0.0f}</p><p>	};</p><p>}</p><p>int main()</p><p>{</p><p>	glm::mat4 m = perspective(glm::radians(45.0f), 780.0f / 750.0f, 0.1f, 500.0f);</p><p>	std::cout &lt;&lt; glm::to_string(m) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885872109/7a2a9fac42f18e22c6ae479f481e1d57/image_2024_10_14_140145761.png" />
         <pubDate>2024-10-14 05:01:52 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167537957</guid>
      </item>
      <item>
         <title>7701618_Yann_Demuyt</title>
         <author>yanndemuyt</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167538954</link>
         <description><![CDATA[<pre><code class="language-cpp">#define GLM_ENABLE_EXPERIMENTAL

#include &lt;iostream&gt;
#include &lt;glm/glm.hpp&gt;
#include &lt;glm/gtx/transform.hpp&gt;
#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;


glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up) {
    glm::vec3 zaxis = glm::normalize(campos - look);  
    glm::vec3 xaxis = glm::normalize(glm::cross(glm::normalize(up), zaxis)); 
    glm::vec3 yaxis = glm::cross(zaxis, xaxis);  
    
    glm::mat4 viewMatrix(1.0f);  

    viewMatrix[0][0] = xaxis.x;
    viewMatrix[1][0] = xaxis.y;
    viewMatrix[2][0] = xaxis.z;
    
    viewMatrix[0][1] = yaxis.x;
    viewMatrix[1][1] = yaxis.y;
    viewMatrix[2][1] = yaxis.z;
    
    viewMatrix[0][2] = zaxis.x;
    viewMatrix[1][2] = zaxis.y;
    viewMatrix[2][2] = zaxis.z;

    viewMatrix[3][0] = -glm::dot(xaxis, campos);
    viewMatrix[3][1] = -glm::dot(yaxis, campos);
    viewMatrix[3][2] = -glm::dot(zaxis, campos);

    return viewMatrix;
}

int main() {
    glm::vec3 camPos = glm::vec3(5, 5, 5);
    glm::vec3 lookat = glm::vec3(0, 0, 0);
    glm::vec3 up = glm::vec3(0, 1, 0);

    std::cout &lt;&lt; to_string(lookAt(camPos, lookat, up)) &lt;&lt; std::endl;

    return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2712583437/08d5627dcb1b8dc413926e591d8e9d22/image.png" />
         <pubDate>2024-10-14 05:02:20 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167538954</guid>
      </item>
      <item>
         <title>7701504_Alexandre_Franquet_Perspective</title>
         <author>alexandrefranquetty</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167545857</link>
         <description><![CDATA[<pre><code>#define GLM_ENABLE_EXPERIMENTAL

#include &lt;iostream&gt;
#include &lt;glm/glm.hpp&gt;
#include &lt;glm/gtx/transform.hpp&gt;
#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;

glm::mat4 perspective(float fovy, float aspect, float near, float far) {
	glm::mat4 perspectiveMatrix;
	perspectiveMatrix[0] = { 1.0f / (aspect * tan(glm::radians(fovy) / 2.0f)), 0.0f, 0.0f, 0.0f };
	perspectiveMatrix[1] = { 0.0f, 1.0f / tan(glm::radians(fovy) / 2.0f), 0.0f, 0.0f };
	perspectiveMatrix[2] = { 0.0f, 0.0f, -(far + near) / (far - near), -1.0f };
	perspectiveMatrix[3] = { 0.0f, 0.0f, -(2.0f * far * near / (far - near)), 0.0f };
	return perspectiveMatrix;
}

int main()
{
	float W = 780;
	float H = 750;
	float FovY = 45.0f;
	float NearZ = 0.1f;
	float FarZ = 500.0f;


	std::cout &lt;&lt; glm::to_string(perspective(FovY, W / H, NearZ, FarZ)) &lt;&lt; std::endl;
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2712499930/bff627efc6ebd53b98338c95f6c45f71/Capture_d__cran_2024_10_14_140212.png" />
         <pubDate>2024-10-14 05:05:52 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167545857</guid>
      </item>
      <item>
         <title>7701622_Rayan_Banni_perspective</title>
         <author>bannirayan</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167546103</link>
         <description><![CDATA[<pre><code class="language-cpp">#define GLM_ENABLE_EXPERIMENTAL

#include &lt;glm/gtx/string_cast.hpp&gt;
#include &lt;glm/glm.hpp&gt;
#include &lt;glm/gtc/constants.hpp&gt;
#include &lt;glm/gtx/transform.hpp&gt;
#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;
#include &lt;iostream&gt;

glm::mat4 perspective(float fovy, float aspect, float near, float far) {
    float f = 1.0f / glm::tan(fovy / 2.0f);

    return glm::mat4(
        glm::vec4(f / aspect, 0, 0, 0),
        glm::vec4(0, f, 0, 0),
        glm::vec4(0, 0, (far + near) / (near - far), -1),
        glm::vec4(0, 0, (2 * far * near) / (near - far), 0)
    );
}

int main() {
    float W = 780;
    float H = 750;
    float FovY = 45.0f;
    float NearZ = 0.1f;
    float FarZ = 500.0f;

    glm::mat4 proj = perspective(glm::radians(FovY), W / H, NearZ, FarZ);

    std::cout &lt;&lt; glm::to_string(proj) &lt;&lt; std::endl;

    return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723476241/68214aa4d89fa20febe6290613b61ad8/image.png" />
         <pubDate>2024-10-14 05:05:59 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167546103</guid>
      </item>
      <item>
         <title>7701676_Thomas_Laprie_perspective</title>
         <author>totolaprie</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167549608</link>
         <description><![CDATA[<p>#define GLM_FORCE_SWIZZLE</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	float f = 1.0f / glm::tan(fovy / 2.0f);</p><p>	glm::mat4 projectionMatrix = glm::mat4(1.0f);</p><p>	projectionMatrix[0][0] = f / aspect;</p><p>	projectionMatrix[1][1] = f;</p><p>	projectionMatrix[2][2] = (far + near) / (near - far);</p><p>	projectionMatrix[2][3] = -1.0f;</p><p>	projectionMatrix[3][2] = (2.0f <em> far </em> near) / (near - far);</p><p>	return projectionMatrix;</p><p>}</p><p>int main()</p><p>{</p><p>	int width = 780;</p><p>	int height = 750;</p><p>	glm::mat4 perspectiveMatrix = perspective(glm::radians(45.0f), (float)width / (float)height, 0.1f, 500.0f);</p><p>	std::cout &lt;&lt; glm::to_string(perspectiveMatrix) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2681261339/1296055228ae3a4ca53bdd488dafa2e7/Screenshot_1.png" />
         <pubDate>2024-10-14 05:07:31 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167549608</guid>
      </item>
      <item>
         <title>7701539_Leonore_clos_manescau_Perspective</title>
         <author>tenshiitv</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167554602</link>
         <description><![CDATA[<p>static glm::mat4 Perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	float f = 1.0f / tan(glm::radians(fovy) / 2.0f);</p><p>	glm::mat4 perspective = {</p><p>		f / aspect, 0, 0, 0,</p><p>		0, f, 0, 0,</p><p>		0, 0, (far + near) / (near - far), -1,</p><p>		0, 0, (2 <em> far </em> near) / (near - far), 0</p><p>	};</p><p>	return perspective;	</p><p>}</p><p>int main()</p><p>{</p><p>	float nearz = 0.1f;</p><p>	float farz = 500.0f;</p><p>	float fovy = 45.0f;</p><p>	float aspect = 780.0f / 750.0f;</p><p>	Perspective(fovy, aspect, nearz, farz);</p><p>	std::cout &lt;&lt; "Perspective" &lt;&lt; std::endl;</p><p>	std::cout &lt;&lt; to_string(Perspective(fovy, aspect, nearz, farz)) &lt;&lt; std::endl &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723589223/523b291ca24a15dccf70ff8e513dc0eb/image.png" />
         <pubDate>2024-10-14 05:09:38 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167554602</guid>
      </item>
      <item>
         <title>7701664 Eliot Janvier Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167556410</link>
         <description><![CDATA[<pre><code class="language-cpp">
glm::mat4 perspective(float fovy, float aspect, float near, float far) {
  glm::mat4 proj(1.0f);
  proj[1][1] = 1.0f / std::tan(fovy / 2.0f);
  proj[0][0] = proj[1][1] / aspect;
  proj[2][2] = (far + near) / (near - far);
  proj[2][3] = 2.0f * far * near / (near - far);
  proj[3][2] = -1.0f;
  proj[3][3] = 0.0f;
  return proj;
}

int main() {
  float W = 780;
  float H = 750;
  float FovY = 45.0f;
  float NearZ = 0.1f;
  float FarZ = 500.0f;

  auto aspect = W / H;
  auto proj = perspective(glm::radians(FovY), aspect, NearZ, FarZ);
  std::cout &lt;&lt; "perspective matrix:\n" &lt;&lt; glm::to_string(proj) &lt;&lt; std::endl;
  return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885895835/6fbe38f61d1fb07cf2fe262f0eaab404/image.png" />
         <pubDate>2024-10-14 05:10:41 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167556410</guid>
      </item>
      <item>
         <title>7701596_Tovy_REN_Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167561175</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p><br></p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far){</p><p>float f = 1.0f / glm::tan(fovy / 2.0f);</p><p>glm::mat4 proj(</p><p>glm::vec4(f / aspect, 0, 0, 0),</p><p>glm::vec4(0, f, 0, 0),</p><p>glm::vec4(0, 0, - (far + near) / (far - near), -1),</p><p>glm::vec4(0, 0, -((2 <em> far </em> near) / (far - near)), 0)</p><p> );</p><p>return proj;</p><p>}</p><p><br></p><p>int main() {</p><p>float fovy = glm::radians(45.0f);</p><p>float aspect = 4.0f / 3.0f;</p><p>float near = 0.1f;</p><p>float far = 100.0f;</p><p>glm::mat4 proj = perspective(fovy, aspect, near, far);</p><p>std::cout &lt;&lt; glm::to_string(proj) &lt;&lt; std::endl;</p><p>return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885871461/219c0c3a4fa6226ccbcc56965071c5a1/image.png" />
         <pubDate>2024-10-14 05:12:56 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167561175</guid>
      </item>
      <item>
         <title>7701567_Enzo_GARNIER_perspective</title>
         <author>bestioslash</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167561335</link>
         <description><![CDATA[<pre><code>#define GLM_ENABLE_EXPERIMENTAL
#include &lt;glm/gtx/string_cast.hpp&gt;
#include &lt;iostream&gt;
#include &lt;glm/glm.hpp&gt;

glm::mat4 perspective(float fovy, float aspect, float near, float far)
{
	float f = 1.0f / glm::tan(fovy / 2.0f);
	glm::mat4 proj = glm::mat4(1.0f);
	proj[0][0] = f / aspect;
	proj[1][1] = f;
	proj[2][2] = -(far + near) / (near - far);
	proj[2][3] = -1.0f;
	proj[3][2] = -(2.0f * far * near) / (near - far);
	proj[3][3] = 0.0f;
	return proj;

}

int main()
{
	float width = 780;
	float height = 750;
	float fovy = 45.0f;
	float aspect = width / height;
	float near = 0.1f;
	float far = 500.0f;
	glm::mat4 proj = perspective(glm::radians(fovy), aspect, near, far);
	std::cout &lt;&lt; glm::to_string(proj) &lt;&lt; std::endl;
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2708765362/c34c5bdbb1e8bdec563e4a13dbde98f8/image.png" />
         <pubDate>2024-10-14 05:13:02 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167561335</guid>
      </item>
      <item>
         <title>7701583_Ethan_HERNOU_perspective</title>
         <author>ethanhernou</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167563176</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>	#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>	#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>glm::mat4 Perspective(float fovy, float aspect, float zNear, float zFar)</p><p>{</p><p>    const float tanHalfFovy = tan(fovy / 2.f);</p><p>    glm::mat4 result(0.f);</p><p>    result[0][0] = 1.f / (aspect * tanHalfFovy);</p><p>    result[1][1] = 1.f / (tanHalfFovy);</p><p>    result[2][2] = -((zFar + zNear) / (zFar - zNear));</p><p>    result[2][3] = -1.f;</p><p>    result[3][2] = -((2.0f <em> ((zFar </em> zNear) / (zFar - zNear))));</p><p>    return result;</p><p>}</p><p>int main()</p><p>{</p><p>    float width = 780.f;</p><p>    float height = 750.f;</p><p>    float fovY = 45.f;</p><p>    float nearZ = 0.1f;</p><p>    float farZ = 500.f;</p><p>    glm::mat4 proj = Perspective(glm::radians(fovY), width / height, nearZ, farZ);</p><p>    std::cout &lt;&lt; glm::to_string(proj) &lt;&lt; std::endl;</p><p>    return 0;</p><p>}</p><p><br></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676256945/cfc2ec9ade142a4cf591ff468e749e38/Class5_Result.png" />
         <pubDate>2024-10-14 05:14:02 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167563176</guid>
      </item>
      <item>
         <title>7701581_MARTINS-GANDRA_Hugo_PERSPECTIVE</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167564888</link>
         <description><![CDATA[<p>#define GLM_FORCE_SWIZZLE</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include "CMakeProject1.h"</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>using namespace std;</p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	float f = 1.0f / tan(fovy / 2.0f);</p><p>	glm::mat4 m(0.0f);</p><p>	m[0][0] = f / aspect;</p><p>	m[1][1] = f;</p><p>	m[2][2] = (far + near) / (near - far);</p><p>	m[2][3] = -1.0f;</p><p>	m[3][2] = (2.0f <em> far </em> near) / (near - far);</p><p>	return m;</p><p>}</p><p>int main()</p><p>{</p><p>	const float DEGREES_TO_RADIANS = glm::pi&lt;float&gt;() / 180.0;</p><p>	const float RADIANS_TO_DEGREES = 180.0 / glm::pi&lt;float&gt;();</p><p>	</p><p>	float W = 780.0f;</p><p>	float H = 750.0f;</p><p>	float FovY = 45.0f;</p><p>	float NearZ = 0.1f;</p><p>	float FarZ = 500.0f;</p><p>	float Aspect = W / H;</p><p>	glm::mat4 projection = perspective(FovY * DEGREES_TO_RADIANS, Aspect, NearZ, FarZ);</p><p>	std::cout &lt;&lt; "perspective: " &lt;&lt; glm::to_string(projection) &lt;&lt; std::endl;</p><p>	</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885873799/11ed12d7b62439720274033389b3cfcf/image.png" />
         <pubDate>2024-10-14 05:14:51 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167564888</guid>
      </item>
      <item>
         <title>7701564_Arthur_Aillet_Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167567023</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>	</p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far) {</p><p>	glm::mat4 pers {</p><p>		{ 1 / (aspect * std::tan(fovy / 2)), 0, 0, 0},</p><p>		{ 0, 1 / std::tan(fovy / 2), 0, 0},</p><p>		{ 0, 0, -(far + near) / (far - near), -1},</p><p>		{ 0, 0, -2.0f <em> (far </em> near/(far - near)), 0},</p><p>	};</p><p>	return pers;</p><p>}</p><p>int main() {</p><p>	std::cout &lt;&lt; glm::to_string(perspective(glm::radians(45.0f), 780.0f/750.0f, 0.1f, 500.0f)) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885900826/675cdf5143e4c1522f874598b62771e0/image.png" />
         <pubDate>2024-10-14 05:15:52 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167567023</guid>
      </item>
      <item>
         <title>7701650_leo_lhuillier_perspective</title>
         <author>leolhulhuillierleoillier</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167570051</link>
         <description><![CDATA[<p>glm::mat4 perspective(float fovy, float aspect, float near, float far) {</p><p>    glm::mat4 res = {</p><p>        {1 / (aspect * tan(fovy / 2)), 0, 0, 0},</p><p>        {0, 1 / tan(fovy / 2), 0, 0},</p><p>        {0, 0, -((far + near) / (far - near)), -1 },</p><p>        {0, 0, -(2 <em> ((far </em> near) / (far - near))), 0}</p><p>    };</p><p>    return res;</p><p>}</p><p><br/></p><p>int main() {</p><p>    </p><p>glm::to_string(perspective(glm::radians(45.0f), 780.0f/750.0f, 0.1f, 500.0f)) &lt;&lt; std::endl;</p><p>    </p><p>    return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/414798071/4caae9a81a1ba4727d48cb62a58c8a9f/image.png" />
         <pubDate>2024-10-14 05:17:27 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167570051</guid>
      </item>
      <item>
         <title>7701595_Denis_Maillot_Perspective</title>
         <author>d3nxfr</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167571779</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>#define PI			3.14159265358979323846</p><p>#define DEG2RAD(x)	((x) * (PI / 180.f))</p><p>template&lt;typename T&gt;</p><p>void display(T x, const std::string&amp; prefix = "") {</p><p>	std::cout &lt;&lt; prefix &lt;&lt; glm::to_string(x) &lt;&lt; std::endl;</p><p>}</p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far) {</p><p>	float fovyRad = DEG2RAD(fovy);</p><p>	glm::mat4 perspectiveMatrix(</p><p>		1.f / (aspect * tanf(fovyRad / 2.f)), 0, 0, 0,</p><p>		0, 1.f / tanf(fovyRad / 2.f), 0, 0,</p><p>		0, 0, -(far + near)/(far - near), -1,</p><p>		0, 0, -(2.f <em> ((far </em> near)/(far - near))), 0</p><p>	);</p><p>	return perspectiveMatrix;</p><p>}</p><p>int main(void) {</p><p>	const float W = 780.f;</p><p>	const float H = 750.f;</p><p>	float fovY = 45.f;</p><p>	float nearZ = .1f;</p><p>	float farZ = 500.f;</p><p>	glm::mat4 perspectiveMatrix = perspective(fovY, W / H, nearZ, farZ);</p><p>	display(perspectiveMatrix, "PerspectiveMatrix= ");</p><p>	return 0;</p><p>}</p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2712574292/c9d5318f24c2c767d838215092b90632/image.png" />
         <pubDate>2024-10-14 05:18:26 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167571779</guid>
      </item>
      <item>
         <title>7701546_Clément_Lagier_perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167573264</link>
         <description><![CDATA[<pre><code class="language-cpp">#define GLM_ENABLE_EXPERIMENTAL

#include &lt;iostream&gt;
#include &lt;glm/glm.hpp&gt;
#include &lt;glm/gtx/transform.hpp&gt;
#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;

glm::mat4 perspective(float fovy, float aspect, float near, float far)
{
  float f = 1.0f / tan(fovy / 2.0f);
  float nf = 1.0f / (near - far);

  glm::mat4 proj = glm::mat4(0.0f);
  proj[0][0] = f / aspect;
  proj[1][1] = f;
  proj[2][2] = (far + near) * nf;
  proj[2][3] = -1.0f;
  proj[3][2] = 2.0f * far * near * nf;

  return proj;
}

int main(void)
{
  float fovy = 45.0f;
  float near = 0.1f;
  float far = 500.0f;
  float aspect = (float)780 / (float)750;

  fovy = glm::radians(fovy);
  glm::mat4 proj = perspective(fovy, aspect, near, far);

  std::cout &lt;&lt; glm::to_string(proj) &lt;&lt; std::endl;

  return 0;
}
</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885926875/09d27efce92417457beb69ef8b6b1118/image.png" />
         <pubDate>2024-10-14 05:19:13 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167573264</guid>
      </item>
      <item>
         <title>7701465_Guillaume_CLEMENT--BONNIEL-VEYRON_perspective</title>
         <author>lapuissancedelafunk</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167573303</link>
         <description><![CDATA[<p>#define GLM_FORCE_SWIZZLE</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>const double DEG_TO_RAD = glm::pi&lt;double&gt;() / 180.0;</p><p>const double RAD_TO_DEG = 180.0 / glm::pi&lt;double&gt;();</p><p>glm::mat4 perpective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	fovy = fovy * DEG_TO_RAD;</p><p>	float f = 1.0f / glm::tan(fovy * 0.5f);</p><p>	float nf = 1.0f / (near - far);</p><p>	return glm::mat4(f / aspect, 0.0f, 0.0f, 0.0f,</p><p>		0.0f, f, 0.0f, 0.0f,</p><p>		0.0f, 0.0f, (far + near) <em> nf, (2.0f </em> far * near) / (near - far),</p><p>		0.0f, 0.0f, -1.0f, 0.0f);</p><p>}</p><p>int main()</p><p>{</p><p>	// W = 780 H = 750 FovY = 45.0f NearZ = 0.1f; FarZ = 500.0f;</p><p>	float W = 780.0f;</p><p>	float H = 750.0f;</p><p>	float FovY = 45.0f;</p><p>	float NearZ = 0.1f;</p><p>	float FarZ = 500.0f;</p><p>	glm::mat4 proj = perpective(FovY, W / H, NearZ, FarZ);</p><p>	std::cout &lt;&lt; glm::to_string(proj) &lt;&lt; std::endl;</p><p>	return 0;</p><p>	return 0;</p><p>}</p><p><br></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723928984/e56ed31d0bcbf4afd6a790114e7a2e23/image.png" />
         <pubDate>2024-10-14 05:19:15 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167573303</guid>
      </item>
      <item>
         <title>7701562_Julian_Scott Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167574803</link>
         <description><![CDATA[<pre><code>glm::mat4 perspective(float fovy, float aspect, float near, float far) {
	const float tanFovY_2 = std::tan(fovy / 2.0f);

	const glm::mat4 matrix{
		1.0f / (aspect * tanFovY_2), 0.f, 0.f, 0.f,
		0.f, 1.0f / tanFovY_2, 0.f, 0.f,
		0.f, 0.f, (near + far) / (near - far), -1.0f,
		0.f, 0.f, 2 * (near * far) / (near - far), 0.f
	};

	return matrix;
}

int main()
{
	const auto W = 780.f;
	const auto H = 750.f;
	const auto FovY = 45.0f * 3.14159f / 180.0f;
	const auto NearZ = 0.1f;
	const auto FarZ = 500.0f;

	const auto matrix = perspective(FovY, W / H, NearZ, FarZ);

	std::cout &lt;&lt; glm::to_string(matrix) &lt;&lt; std::endl;

	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885903522/07bc775151933d2698b55c193728d75c/image.png" />
         <pubDate>2024-10-14 05:20:02 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167574803</guid>
      </item>
      <item>
         <title>7701542-MARQUES_Mathieu_perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167574950</link>
         <description><![CDATA[<pre><code>#define GLM_ENABLE_EXPERIMENTAL

#include &lt;glm/vec3.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;
#include &lt;iostream&gt;

#include &lt;glm/mat4x4.hpp&gt;
#include &lt;glm/mat2x2.hpp&gt;
#include &lt;glm/mat3x2.hpp&gt;

static glm::mat4 perspective(float fovy, float aspect, float near, float far)
{
	glm::mat4 per = {
		{ 1 / glm::dot(aspect, glm::tan(fovy / 2)), 0, 0, 0 },
		{ 0, 1 / glm::tan(fovy / 2), 0, 0 },
		{ 0, 0, -((far + near) / (far - near)), -1 },
		{ 0, 0, -(2 * ((far * near) / (far - near))), 0}
	};

	return per;
}

int main()
{
	float width = 780;
	float height = 750;
	float fovy = 45.0f;
	float near = 0.1f;
	float far = 500.0f;

	std::cout &lt;&lt; glm::to_string(perspective(glm::radians(fovy), width / height, near, far)) &lt;&lt; std::endl;

	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885934190/c3bc1a793c20ac4e898d032e80b4beec/image.png" />
         <pubDate>2024-10-14 05:20:06 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167574950</guid>
      </item>
      <item>
         <title>7701618_Yann_Demuyt_Perspective</title>
         <author>yanndemuyt</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167575222</link>
         <description><![CDATA[<pre><code class="language-cpp">#define GLM_ENABLE_EXPERIMENTAL

#include &lt;iostream&gt;
#include &lt;glm/glm.hpp&gt;
#include &lt;glm/gtx/transform.hpp&gt;
#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;


glm::mat4 perspective(float fovy, float aspect, float zNear, float zFar) {
    glm::mat4 perspectiveMatrix(0.0f);
    perspectiveMatrix[0][0] = 1.0f / (aspect * tan(glm::radians(fovy) / 2.0f));
    perspectiveMatrix[1][1] = 1.0f / tan(glm::radians(fovy) / 2.0f);
    perspectiveMatrix[2][2] = -(zFar + zNear) / (zFar - zNear);
    perspectiveMatrix[2][3] = -1.0f;
    perspectiveMatrix[3][2] = -(2.0f * zFar * zNear) / (zFar - zNear);

    return perspectiveMatrix;
}


int main() {
    std::cout &lt;&lt; to_string(perspective(45.0f, (780.0f / 750.0f), 0.1f, 500.0f)) &lt;&lt; std::endl;
    return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2712583437/72a3d0f15a25fbcb2f73593ea4d5b18f/image.png" />
         <pubDate>2024-10-14 05:20:15 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167575222</guid>
      </item>
      <item>
         <title>7701576_Turpin_Raphaël_Perspective</title>
         <author>raphaelturpin20</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167575447</link>
         <description><![CDATA[<pre><code>
#include &lt;iostream&gt;

#define GLM_ENABLE_EXPERIMENTAL

#include &lt;glm/gtx/string_cast.hpp&gt;
#include &lt;glm/mat4x4.hpp&gt;
#include &lt;glm/vec3.hpp&gt;

glm::mat4 perspective(float fovy, float aspect, float near, float far) {
    glm::mat4 m(0.0f);
    float ratio = tan((fovy * (M_PI / 180.f)) / 2.0f);

    m[0][0] = 1 / (aspect * ratio);
    m[1][1] = 1 / ratio;
    m[2][2] = -(far + near)/(far - near);
    m[2][3] = -1.f;
    m[3][2] = -(2 * far * near)/(far - near);

    return m;
}

int main(void) {
    glm::mat4 m = perspective(45.0f, 780.f / 750.f, 0.1f, 500.f);

    std::cout &lt;&lt; glm::to_string(m) &lt;&lt; std::endl;

    return 0;
}
</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2676257873/ba7521b7e62e0fd695c6bda567f0930f/image.png" />
         <pubDate>2024-10-14 05:20:24 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167575447</guid>
      </item>
      <item>
         <title>7701674_BOUSCH_Laetitia</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167575748</link>
         <description><![CDATA[<p><br/></p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>glm::mat4  perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	glm::mat4 result(0.0f);</p><p>	result[0][0] = 1.0f / (aspect * glm::tan(fovy / 2.0f));</p><p>	result[1][1] = 1.0f / glm::tan(fovy / 2.0f);</p><p>	result[2][2] = -(far + near) / (far - near);</p><p>	result[2][3] = -1.0f;</p><p>	result[3][2] = -(2.0f <em> far </em> near) / (far - near);</p><p>	std::cout &lt;&lt; glm::to_string(result) &lt;&lt; std::endl;</p><p>	return result;</p><p>}</p><p>int main()</p><p>{</p><p>    float w = 780.0f;</p><p>    float h = 750.0f;</p><p>	float fovY = 45.0f;</p><p>    float nearZ = 0.1f;</p><p>	float farZ = 500.0f;</p><p>	glm::mat4 p = perspective(glm::radians(fovY), w / h, nearZ, farZ);</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885920510/2133091bbff467113ef16374861cfd0b/image.png" />
         <pubDate>2024-10-14 05:20:27 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167575748</guid>
      </item>
      <item>
         <title>7701538_Romain_PANNO_Perspective</title>
         <author>romainpanno</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167576363</link>
         <description><![CDATA[<p>glm::mat4 perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	float f = 1.0f / tan(fovy / 2.0f);</p><p>	glm::mat4 proj = glm::mat4(0.0f);</p><p>	proj[0] = glm::vec4(1.0f / glm::dot(aspect, glm::tan(fovy / 2.0f)), 0, 0, 0);</p><p>	proj[1] = glm::vec4(0, f, 0, 0);</p><p>	proj[2] = glm::vec4(0, 0, (far + near) / (near - far), -1);</p><p>	proj[3] = glm::vec4(0, 0, (2 <em> far </em> near) / (near - far), 0);</p><p>	return proj;</p><p>}</p><p>int ex2()</p><p>{</p><p>	glm::mat4 proj = perspective(glm::radians(45.0f), 780.0f / 750.0f, 0.1f, 500.0f);</p><p>	std::cout &lt;&lt; to_string(proj) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2719065559/f44c95d55587284296cda6dd8c45eeb4/image.png" />
         <pubDate>2024-10-14 05:20:48 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167576363</guid>
      </item>
      <item>
         <title>7701640_hillion_jovan_perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167576949</link>
         <description><![CDATA[<p>glm::mat4 Perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	glm::mat4 perspecticeMatrixProjection(0.f);</p><p>	perspecticeMatrixProjection[0][0] = 1 / (aspect * glm::tan(fovy / 2));</p><p>	perspecticeMatrixProjection[1][1] = 1 / (glm::tan(fovy / 2));</p><p>	perspecticeMatrixProjection[2][2] = (far + near) / (far - near) * -1;</p><p>	perspecticeMatrixProjection[3][2] = (far <em> near) / (far - near) </em> 2 * -1;</p><p>	perspecticeMatrixProjection[2][3] = -1;</p><p>	std::cout &lt;&lt; "Perspective Matrix : " &lt;&lt; glm::to_string(perspecticeMatrixProjection) &lt;&lt; std::endl;</p><p>	return perspecticeMatrixProjection;</p><p>}</p><p>int main()</p><p>{</p><p>	float w = 780;</p><p>	float h = 750;</p><p>	float aspect = w / h;</p><p>	float FovY = 45.0f;</p><p>	float NearZ = 0.1f;</p><p>	float FarZ = 500.0f;</p><p>	glm::mat4 perspectiveRes = Perspective(glm::radians(FovY), aspect, NearZ, FarZ);</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885934730/6f0a2e223c5237c946e068ea200b0182/Capture_d__cran_2024_10_14_072056.png" />
         <pubDate>2024-10-14 05:21:05 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167576949</guid>
      </item>
      <item>
         <title>7701663_samuel_florentin_perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167578591</link>
         <description><![CDATA[<p>glm::mat4 perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	glm::mat4 mtx{};</p><p>	mtx[0] = {1.0F/(aspect * glm::tan(glm::radians(fovy)/2.0F)), 0, 0, 0};</p><p>	mtx[1] = { 0, 1.0F / (glm::tan(glm::radians(fovy) / 2.0F)), 0, 0 };</p><p>	mtx[2] = { 0, 0, -((far + near) / (far - near)), -1 };</p><p>	mtx[3] = { 0, 0, -(2 <em> ((far </em> near) / (far - near))), 0 };</p><p>	return mtx;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885937294/ad18a2d7fc7bf3eb6fcd22640ef6c2d6/image.png" />
         <pubDate>2024-10-14 05:21:59 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167578591</guid>
      </item>
      <item>
         <title>7701550_JOURDAIN_Aldric_Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167579675</link>
         <description><![CDATA[<pre><code>#define GLM_ENABLE_EXPERIMENTAL

#include &lt;iostream&gt;

#include &lt;glm/vec3.hpp&gt;
#include &lt;glm/mat4x4.hpp&gt;
#include &lt;glm/mat2x2.hpp&gt;
#include &lt;glm/mat3x2.hpp&gt;

#include &lt;glm/gtx/string_cast.hpp&gt;
#include &lt;glm/gtc/constants.hpp&gt;

glm::mat4 perspective(float fovy, float aspect, float near, float far) {
	return {
		{ 1 / glm::dot(aspect, glm::tan(fovy / 2)), 0, 0, 0  },
		{ 0, 1 / glm::tan(fovy / 2), 0, 0 },
		{ 0, 0, -((far + near) / (far - near)), -1 },
		{ 0, 0, -(2 * ((far * near) / (far - near))), 0}
	};
}

int main() {

	float width = 780.0f;
	float height = 750.0f;
	float FovY = 45.0f;
	float NearZ = 0.1f;
	float FarZ = 500.0f;

	glm::mat4 perspectiveMatrix = perspective(glm::radians(FovY), width / height, NearZ, FarZ);
	std::cout &lt;&lt; glm::to_string(perspectiveMatrix) &lt;&lt; std::endl;
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885916571/bc05ba562bedf92aa7630e53183db87f/Capture_d__cran_2024_10_14_141942.png" />
         <pubDate>2024-10-14 05:22:30 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167579675</guid>
      </item>
      <item>
         <title>7701625_Ludovic_de_Chavagnac_perspective</title>
         <author>ludovicdechavagnac</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167580462</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/vec3.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far) {</p><p>	glm::mat4 persp(0.f);</p><p>	persp[0] = glm::vec4(1.0f / (aspect * glm::tan(fovy / 2.0f)), 0, 0, 0);</p><p>	persp[1] = glm::vec4(0, 1.0f / (glm::tan(fovy / 2.0f)), 0, 0);</p><p>	persp[2] = glm::vec4(0, 0, -1 <em> ((far + near) / (far - near)), (-1 </em> (2 <em> (far </em> near) / (far - near))));</p><p>	persp[3] = glm::vec4(0, 0, -1, 0);</p><p>	return persp;</p><p>}</p><p>int main() {</p><p>	float W = 780;</p><p>	float H = 750;</p><p>	float FovY = 45.0f;</p><p>	float NearZ = 0.1f; </p><p>	float FarZ = 500.0f;</p><p>	std::cout &lt;&lt; glm::to_string(perspective(glm::radians(FovY), W / H, NearZ, FarZ)) &lt;&lt; std::endl;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723481541/c3b8e72ce93348d8ace11d9ceba6f7b6/_9B073E7A_7B37_4023_B555_44CB9A259ED3_.png" />
         <pubDate>2024-10-14 05:23:05 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167580462</guid>
      </item>
      <item>
         <title>7701521_Brice_DESOUSA_Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167581479</link>
         <description><![CDATA[<p><br/></p><p>#define GLM_FORCE_SWIZZLE</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p><br/></p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/mat3x3.hpp&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>#include "ComputerGraphicsLecture2.h"</p><p><br/></p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	float a = 1 / (glm::dot(aspect, tan(fovy / 2)));</p><p>	float b = 1 / tan(fovy/2);</p><p>	float c = -((far + near) / (far - near));</p><p>	float d = -(2 <em> ((far </em> near) / (far - near)));</p><p>	glm::vec4 c1(a, 0 , 0, 0);</p><p>	glm::vec4 c2(0, b, 0, 0);</p><p>	glm::vec4 c3(0, 0, c, -1);</p><p>	glm::vec4 c4(0, 0, d, 0);</p><p>	glm::mat4 m;</p><p>	m[0] = c1;</p><p>	m[1] = c2;</p><p>	m[2] = c3;</p><p>	m[3] = c4;</p><p>	return m;</p><p>}</p><p>int main()</p><p>{</p><p>	std::cout &lt;&lt; glm::to_string(perspective(glm::radians(45.0f), 780/750, 0.1f, 500.0f)) &lt;&lt; std::endl;</p><p>	</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885920504/ae6c3e4972ae2f1fd228ff9ebb973b93/image.png" />
         <pubDate>2024-10-14 05:23:34 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167581479</guid>
      </item>
      <item>
         <title>7701565_HUMEAU_Axel Perspective</title>
         <author>axelhumeau</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167583664</link>
         <description><![CDATA[<pre><code>#define GLM_ENABLE_EXPERIMENTAL
#include &lt;glm/mat4x4.hpp&gt;
#include &lt;iostream&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;

const double DEGREES_TO_RADIANS = glm::pi&lt;float&gt;() / 180.0;

glm::mat4 perspective(float fovy, float aspect, float near, float far)
{
	return glm::mat4({
		1 / (aspect * glm::tan(fovy / 2)), 0, 0, 0, 
		0, 1 / glm::tan(fovy / 2), 0, 0,
		0, 0, - (far + near) / (far - near), -1,
		0, 0,  -2 * (far * near / (far - near)), 0
	});
}

int main()
{
	float width = 780;
	float height = 750;

	std::cout &lt;&lt; glm::to_string(perspective(45 * DEGREES_TO_RADIANS, width / height, 0.1f, 500)) &lt;&lt; std::endl;
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723481545/0d044eb70225205b621200e8801f0124/Capture_d__cran_2024_10_14_142350.png" />
         <pubDate>2024-10-14 05:24:43 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167583664</guid>
      </item>
      <item>
         <title>7701516_Léo_Soidiki_perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167583913</link>
         <description><![CDATA[<p>glm::mat4 perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	glm::mat4 result{{1/(aspect * tan(fovy/2)), 0 , 0 , 0},</p><p>					{0, 1/ glm::tan(fovy/2), 0 , 0}, </p><p>					{0 , 0 , -((far + near)/(far - near)) , -1}, </p><p>					{0, 0, -(2*((far * near)/(far - near))),0}};</p><p>	return result;</p><p>}</p><p>int main()</p><p>{</p><p>	float w = 780;</p><p>	float h = 750;</p><p>	float FovY = 45.0f;</p><p>	float nearZ = 0.1f;</p><p>	float FarZ = 500.0f;</p><p>	std::cout &lt;&lt; glm::to_string(perspective(glm::radians(FovY), (w / h), nearZ, FarZ)) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885804595/dcd8ffff5afbb8c18e97c3440d698a9d/perspec.png" />
         <pubDate>2024-10-14 05:24:53 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167583913</guid>
      </item>
      <item>
         <title>7701505_Axel_Denis_Perspective</title>
         <author>therabbitlexa271</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167583970</link>
         <description><![CDATA[<pre><code>glm::mat4 viewMatrix(float fovy, float aspect, float zNear, float zFar) {
	return glm::mat4{
		1 / (aspect * tan(fovy / 2)), 0, 0, 0,
		0, 1 / tan(fovy / 2), 0, 0,
		0 , 0, -1 * ((zFar + zNear) / (zFar - zNear)), -1,
		0, 0,  -2 * ((zFar * zNear) / (zFar - zNear)), 0
	};
}

int main()
{
	//glm::vec3 camPos = { 5.0, 5.0, 5.0 };
	//glm::vec3 lookat = { 0, 0, 0 };
	//glm::vec3 up = { 0, 1.0, 0 };
	float fovY = 45.0f;
	float nearZ = 0.1f;
	float farZ = 500.0f;
	float w = 780;
	float h = 750;

	//std::cout &lt;&lt; glm::to_string(lookAt(camPos, lookat, up)) &lt;&lt; std::endl;
	std::cout &lt;&lt; glm::to_string(viewMatrix(glm::radians(fovY), w / h, nearZ, farZ)) &lt;&lt; std::endl;
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2718103450/3d1c4bb916169da34b9ef9dab6720529/image.png" />
         <pubDate>2024-10-14 05:24:55 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167583970</guid>
      </item>
      <item>
         <title>7705132_Yassin_Said_Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167584869</link>
         <description><![CDATA[<p>// CMakeProject2.cpp&nbsp;: définit le point d'entrée de l'application.</p><p>//</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#define GLM_FORCE_SWIZZLE</p><p>#include "glm/gtx/string_cast.hpp"</p><p>#include "CMakeProject2.h"</p><p>#include "glm/glm.hpp"</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>glm::mat4 lookAt(glm::vec3 campos, glm::vec3 look, glm::vec3 up) {</p><p>	glm::vec3 Zc = glm::normalize(campos - look);</p><p>	glm::vec3 Xc = glm::normalize(glm::cross(up, Zc));</p><p>	glm::vec3 Yc = glm::normalize(glm::cross(Zc, Xc));</p><p>	glm::mat4 res = glm::mat4(glm::vec4(Xc.x, Yc.x,Zc.x, 0), glm::vec4(Xc.y, Yc.y,Zc.y, 0), glm::vec4(Xc.z, Yc.z,Zc.z, 0), glm::vec4(-glm::dot(Xc, campos), -glm::dot(Yc, campos), -glm::dot(Zc, campos), 1));</p><p>	</p><p>	return(res);</p><p>}</p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far) {</p><p>	glm::mat4 res = glm::mat4(glm::vec4(1 / glm::dot(aspect, glm::tan(fovy / 2)), 0, 0, 0), glm::vec4(0, 1 / glm::tan(fovy / 2), 0, 0), glm::vec4(0, 0, -((far + near) / (far - near)), -1), glm::vec4(0, 0, -(2 <em> (far </em> near) / (far - near)), 0));</p><p>	return (res);</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 cpos(5, 5, 5);</p><p>	glm::vec3 lookat(0,0,0);</p><p>	glm::vec3 up(0,1,0);</p><p>	std::cout &lt;&lt; glm::to_string(perspective(glm::radians(45.0f), 780.f/750.f, 0.1f, 500.0f));</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885950366/be210c33e8fc30f81b817e66ae2346e4/image.png" />
         <pubDate>2024-10-14 05:25:20 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167584869</guid>
      </item>
      <item>
         <title>7701674_BOUSCH_Laetitia_Perspective</title>
         <author>laetitiabousch</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167585096</link>
         <description><![CDATA[<p><br/></p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>glm::mat4  perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	glm::mat4 result(0.0f);</p><p>	result[0][0] = 1.0f / (aspect * glm::tan(fovy / 2.0f));</p><p>	result[1][1] = 1.0f / glm::tan(fovy / 2.0f);</p><p>	result[2][2] = -(far + near) / (far - near);</p><p>	result[2][3] = -1.0f;</p><p>	result[3][2] = -(2.0f <em> far </em> near) / (far - near);</p><p>	std::cout &lt;&lt; glm::to_string(result) &lt;&lt; std::endl;</p><p>	return result;</p><p>}</p><p>int main()</p><p>{</p><p>    float w = 780.0f;</p><p>    float h = 750.0f;</p><p>	float fovY = 45.0f;</p><p>    float nearZ = 0.1f;</p><p>	float farZ = 500.0f;</p><p>	glm::mat4 p = perspective(glm::radians(fovY), w / h, nearZ, farZ);</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885946964/20f391243671176d1d2e14f83a3b9c5e/image.png" />
         <pubDate>2024-10-14 05:25:32 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167585096</guid>
      </item>
      <item>
         <title>7701473_Ulysse_Decottignies_Perspective</title>
         <author>odycepro</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167585108</link>
         <description><![CDATA[<p>#define GLM_FORCE_SWIZZLE</p><p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/gtc/type_ptr.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/mat3x3.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>const float DEGREES_TO_RADIANS = glm::pi &lt;float&gt;() / 180;</p><p>const float RADIANS_TO_DEGREES = 180 / glm::pi &lt;float&gt;();</p><p><br/></p><p>static glm::mat4 perspective(float fovy, float aspect, float near, float far) {</p><p>	float tf = 1.0f / glm::tan(fovy / 2.0f);</p><p>	glm::vec4 P(tf / aspect, 0.0f, 0.0f, 0.0f);</p><p>	glm::vec4 S(0.0f, tf, 0.0f, 0.0f);</p><p>	glm::vec4 T(0.0f, 0.0f, -((far + near) / (far - near)), -(2.0f <em> ((far </em> near) / (far - near))));</p><p>	glm::vec4 Q(0.0f, 0.0f, -1.0f, 0.0f);</p><p>	glm::mat4 res;</p><p>	res[0] = P;</p><p>	res[1] = S;</p><p>	res[2] = T;</p><p>	res[3] = Q;</p><p>	return res;</p><p>}</p><p>static int MainEx() {</p><p>	float aspect = 780 / 750;</p><p>	float FovY = 45.0f;</p><p>	float NearZ = 0.1f;</p><p>	float FarZ = 500.0f;</p><p>	std::cout &lt;&lt; glm::to_string(perspective(glm::radians(FovY), aspect, NearZ, FarZ)) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723468159/16baa68f7720199c81ae5e81b75e8c8b/image.png" />
         <pubDate>2024-10-14 05:25:33 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167585108</guid>
      </item>
      <item>
         <title>Ewen_Briand_7701669_Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167586982</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	glm::mat4 res(0.0f);</p><p>	res[0][0]  = 1 / (aspect * std::tan(fovy / 2.f));</p><p>	res[1][1]  = 1 / (std::tan(fovy / 2.f));</p><p>	res[2][2]  = -(far + near) / (far - near);</p><p>	res[3][2]  = -(2 <em> ((far </em> near) / (far - near)));</p><p>	res[2][3] = -1;</p><p>	return res;</p><p>}</p><p>int main(void)</p><p>{</p><p>	float w = 780;</p><p>	float h = 750;</p><p>	float fovY = 45.0f;</p><p>	float NearZ = 0.1f;</p><p>	float FarZ = 500.0f;</p><p>	float aspect = (w / h);</p><p>	glm::mat4 res = perspective(glm::radians(fovY), aspect, NearZ, FarZ);</p><p>	std::cout &lt;&lt; "res " &lt;&lt; to_string(res) &lt;&lt; std::endl;</p><p>}</p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885931132/857faa7346e91675c8eefb86bc808f2b/Capture.PNG" />
         <pubDate>2024-10-14 05:26:36 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167586982</guid>
      </item>
      <item>
         <title>7701604_Sacha TOPALOFF_Perspective</title>
         <author>s_topaloff10</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167588277</link>
         <description><![CDATA[<pre><code class="language-cpp">#include &lt;glm/glm.hpp&gt;
#include &lt;glm/matrix.hpp&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;
#include &lt;iostream&gt;

glm::mat4 perspective(float fovy, float aspect, float near, float far)
{
	glm::mat4 mat = glm::zero&lt;glm::mat4&gt;();

	mat[0][0] = 1 / (aspect * glm::tan(fovy / 2));
	mat[1][1] = 1 / glm::tan(fovy / 2);
	mat[2][2] = -1 * ((far + near) / (far - near));
	mat[2][3] = -1;
	mat[3][2] = -2 * ((far * near) / (far - near));
	return mat;
}

int main()
{
	int w = 780;
	int h = 750;
	float fovy = 45.0f;
	float nearZ = 0.1f;
	float farZ = 500.0f;

	glm::mat4 viewMatrix = perspective(glm::radians(fovy), w / (h * 1.0f), nearZ, farZ);

	std::cout &lt;&lt; glm::to_string(viewMatrix) &lt;&lt; std::endl;
}
</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/221774522/005728a8a8d67097062fbc9750b1ae4f/Screenshot_from_2024_10_14_14_26_34.png" />
         <pubDate>2024-10-14 05:27:26 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167588277</guid>
      </item>
      <item>
         <title>7701672_Louis_BASSAGAL_Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167594513</link>
         <description><![CDATA[<pre><code>#include &lt;iostream&gt;</code></pre><pre><code>#include &lt;glm/glm.hpp&gt;</code></pre><pre><code>#include "CMakeProject2.h"</code></pre><pre><code>#include &lt;glm/ext/matrix_transform.hpp&gt;</code></pre><pre><code>#include &lt;glm/gtx/string_cast.hpp&gt;</code></pre><pre><code>glm::mat4 perspective(float fovy, float aspect, float near, float far)</code></pre><pre><code>{</code></pre><pre><code> float rho = glm::tan(glm::radians(fovy / 2));</code></pre><pre><code> glm::mat4 perspectiveProjectionMatrix = { // Column-wise</code></pre><pre><code> {1.f / (aspect * rho), 0, 0, 0},</code></pre><pre><code> {0, 1.f / rho, 0, 0},</code></pre><pre><code> {0, 0, -(far + near) / (far - near), -1},</code></pre><pre><code> {0, 0, -2 ((far near) / (far - near)), 0}</code></pre><pre><code> };</code></pre><pre><code> return perspectiveProjectionMatrix;</code></pre><pre><code>}</code></pre><pre><code>void main()</code></pre><pre><code>{</code></pre><pre><code> float width = 780;</code></pre><pre><code> float height = 750;</code></pre><pre><code> float fovY = 45.f;</code></pre><pre><code> float nearZ = 0.1f;</code></pre><pre><code> float farZ = 500.0f;</code></pre><pre><code> std::cout &lt;&lt; glm::to_string(perspective(fovY, width / height, nearZ, farZ)) &lt;&lt; std::endl;</code></pre><pre><code> return;</code></pre><pre><code>}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885965932/46742ac3d4b694d0159c6f6f541660ed/WindowsTerminal_MQzlFdHJD6.png" />
         <pubDate>2024-10-14 05:31:25 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167594513</guid>
      </item>
      <item>
         <title>7701592_HOAREAU_Nathan6Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167596948</link>
         <description><![CDATA[<p>#define GLM_ENABLE_EXPERIMENTAL</p><p>#include &lt;iostream&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p>#include &lt;glm/gtx/matrix_transform_2d.hpp&gt;</p><p>#include &lt;glm/gtx/transform.hpp&gt;</p><p><br/></p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far)</p><p>{</p><p>	glm::mat4 res(0);</p><p>	res[0] = glm::vec4(1.f / (aspect * tanf(glm::radians(fovy) / 2.f)), 0, 0, 0);</p><p>	res[1] = glm::vec4(0, 1.f / (tanf(glm::radians(fovy) / 2)), 0, 0);</p><p>	res[2] = glm::vec4(0, 0, -((far + near) / (far - near)), -1);</p><p>	res[3] = glm::vec4(0, 0, -(2 <em> (far </em> near) / (far - near)), 0);</p><p>	return res;</p><p>}</p><p>int main()</p><p>{</p><p>	float H = 750;</p><p>	float W = 780;</p><p>	float FovY = 45.0f;</p><p>	float NearZ = 0.1f;</p><p>	float FarZ = 500.0f;</p><p>	std::cout &lt;&lt; glm::to_string(perspective(FovY, W / H, NearZ, FarZ)) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885897400/013fa9d8d3caf2b4a2cec0676d167bb7/image_2024_10_14_143204980.png" />
         <pubDate>2024-10-14 05:32:55 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167596948</guid>
      </item>
      <item>
         <title>7701477_Hugo_RAYGADE_Perspective</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167603111</link>
         <description><![CDATA[<p>#include &lt;iostream&gt;</p><p>#include &lt;glm/mat2x2.hpp&gt;</p><p>#include &lt;glm/mat3x2.hpp&gt;</p><p>#include &lt;glm/mat4x4.hpp&gt;</p><p>#include &lt;glm/glm.hpp&gt;</p><p>#include &lt;glm/gtc/constants.hpp&gt;</p><p>#include &lt;glm/gtx/string_cast.hpp&gt;</p><p><br></p><p>glm::mat4 perspective(float fovy, float aspect, float near, float far) {</p><p>&nbsp; &nbsp; glm::mat4 returnValue = {</p><p>&nbsp; &nbsp; &nbsp; &nbsp; {1 / (aspect * glm::tan(fovy / 2)), 0, 0, 0},</p><p>&nbsp; &nbsp; &nbsp; &nbsp; {0, 1 / glm::tan(fovy / 2), 0, 0},</p><p>&nbsp; &nbsp; &nbsp; &nbsp; {0, 0, -((far + near) / (far - near)), -1},</p><p>&nbsp; &nbsp; &nbsp; &nbsp; {0, 0, -(2 <em> ((far </em> near) / (far - near))), 0}</p><p>&nbsp; &nbsp; };</p><p>&nbsp; &nbsp;</p><p>&nbsp; &nbsp; return returnValue;</p><p>}</p><p><br></p><p>int main() {</p><p>&nbsp; &nbsp; float w = 780.0f;</p><p>&nbsp; &nbsp; float h = 750.0f;</p><p><br></p><p>&nbsp; &nbsp; glm::mat4 perspectiveMatrix = perspective(glm::radians(45.0f), w / h, 0.1f, 500.0f);</p><p>&nbsp; &nbsp; std::cout &lt;&lt; glm::to_string(perspectiveMatrix) &lt;&lt; std::endl;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885887642/ca2fa225163ee0d119a5cf8e9172d710/image.png" />
         <pubDate>2024-10-14 05:37:13 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167603111</guid>
      </item>
      <item>
         <title>7701562_Julian_SCOTT LookAt</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167608471</link>
         <description><![CDATA[<pre><code class="language-cpp">glm::mat4 lookAt(const glm::vec3&amp; campos, const glm::vec3 target, const glm::vec3&amp; up) {
	const glm::vec3 lookDir = target - campos;

	const glm::vec3 Zc = glm::normalize(campos - target);
	const glm::vec3 Xc = glm::normalize(glm::cross(up, Zc));
	const glm::vec3 Yc = glm::normalize(glm::cross(Zc, Xc));

	const glm::mat4 tmR = {
		Xc.x, Yc.x, Zc.x, 0.0,
		Xc.y, Yc.y, Zc.y, 0.0,
		Xc.z, Yc.z, Zc.z, 0.0,
		0.0, 0.0, 0.0, 1.0
	};

	const glm::mat4 tmT = {
		1.0, 0.0, 0.0, 0.0,
		0.0, 1.0, 0.0, 0.0,
		0.0, 0.0, 1.0, 0.0,
		-campos.x, -campos.y, -campos.z, 1.0
	};


	return tmR * tmT;
}

int main()
{
	const glm::vec3 campos = { 5.0, 5.0, 5.0 };
	const glm::vec3 target = { 0.0, 0.0, 0.0 };
	const glm::vec3 up = { 0, 1.0, 0 };

	const auto res = lookAt(campos, target, up);

	std::cout &lt;&lt; glm::to_string(res) &lt;&lt; std::endl;

	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885903522/7f2aed6eae95b853acb28f9a804bceab/image.png" />
         <pubDate>2024-10-14 05:39:49 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167608471</guid>
      </item>
      <item>
         <title>7701565_HUMEAU_Axel LookAt</title>
         <author>axelhumeau</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167611693</link>
         <description><![CDATA[<pre><code>#define GLM_ENABLE_EXPERIMENTAL
#include &lt;glm/mat4x4.hpp&gt;
#include &lt;iostream&gt;
#include &lt;glm/gtx/string_cast.hpp&gt;

glm::mat4 lookAt(const glm::vec3&amp; camPos, const glm::vec3&amp; look, const glm::vec3&amp; up)
{
	auto zc = glm::normalize(camPos - look);
	auto xc = glm::normalize(glm::cross(up, zc));
	auto yc = glm::normalize(glm::cross(zc, xc));
	auto negCamPos = -camPos;

	glm::mat4 rotation({
		xc.x, yc.x, zc.x, 0,
		xc.y, yc.y, zc.y, 0,
		xc.z, yc.z, zc.z, 0,
		0, 0, 0, 1
		});
	glm::mat4 translation({
		1, 0, 0, 0,
		0, 1, 0, 0,
		0, 0, 1, 0,
		negCamPos.x, negCamPos.y, negCamPos.z, 1,
		});

	return rotation * translation;
}

int main()
{
	std::cout &lt;&lt; glm::to_string(lookAt(glm::vec3(5, 5, 5), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0))) &lt;&lt; std::endl;
	return 0;
}</code></pre>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2723481545/14621ba92a7454b138adb72ddcf49fe9/Capture_d__cran_2024_10_14_143309.png" />
         <pubDate>2024-10-14 05:41:41 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167611693</guid>
      </item>
      <item>
         <title>7701516_Soidiki_Léo</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167618556</link>
         <description><![CDATA[<p>glm::mat4 lookAt(glm::vec3 camPos, glm::vec3 lookat, glm::vec3 up)</p><p>{</p><p>	//zc = lookat</p><p>	glm::vec3 Zc = glm::normalize(camPos - lookat);</p><p>	glm::vec3 Xc = glm::normalize(glm::cross(up, Zc));</p><p>	glm::vec3 Yc = glm::normalize(glm::cross(Zc, Xc));</p><p>	glm::mat4 res = { </p><p>		{Xc.x, Yc.x, Zc.x, 0},</p><p>		{Xc.y, Yc.y, Zc.y, 0},</p><p>		{Xc.z, Yc.z, Zc.z, 0},</p><p>		{glm::dot(-camPos, Xc), glm::dot(-camPos, Yc), glm::dot(-camPos, Zc),1}</p><p>	};</p><p>	return res;</p><p>}</p><p>int main()</p><p>{</p><p>	glm::vec3 camPos{5, 5 , 5};</p><p>	glm::vec3 lookat{0, 0, 0};</p><p>	glm::vec3 up{0, 1, 0};</p><p>	std::cout &lt;&lt; glm::to_string(lookAt(camPos, lookat, up)) &lt;&lt; std::endl;</p><p>	return 0;</p><p>}</p><p><br/></p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2885804595/74ae45be79e70b9bd724e4e1116efd68/reslookat.png" />
         <pubDate>2024-10-14 05:46:35 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167618556</guid>
      </item>
      <item>
         <title>LookAt() posting</title>
         <author>mksung89</author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3167666132</link>
         <description><![CDATA[<p>Some of student's late lookAt() posting do not count. </p>]]></description>
         <enclosure url="" />
         <pubDate>2024-10-14 06:17:09 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3167666132</guid>
      </item>
      <item>
         <title>7701520_Adèle_de_Premonville</title>
         <author></author>
         <link>https://padlet.com/mksung89/viewMatrix/wish/3168395240</link>
         <description><![CDATA[<p>glm::mat4 perspective(float fovy, float aspect, float near, float far) {</p><p>	return glm::mat4({</p><p>		1 / (aspect * (glm::tan(fovy / 2))), 0 , 0, 0</p><p>		}, {</p><p>			0, 1 / (glm::tan(fovy / 2)), 0, 0</p><p>		}, {</p><p>			0, 0, -1.0f * ((far + near) / (far - near)), -1</p><p>		}, {</p><p>			0, 0, -2 *<em> ((far </em>* near) / (far - near)), 0</p><p>		});</p><p>}</p><p>int main()</p><p>{</p><p>	float w = 780.0f;</p><p>	float h = 750.0f;</p><p>	float Fovy = 45.0f;</p><p>	float NearZ = 0.1f;</p><p>	float FarZ = 500.0f;</p><p>	cout &lt;&lt; to_string(perspective(glm::radians(Fovy), w / h, NearZ, FarZ)) &lt;&lt; endl;</p><p>	return 0;</p><p>}</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2888350491/224c27e56a7c69c63a2c8beb437a1783/image.png" />
         <pubDate>2024-10-14 14:28:06 UTC</pubDate>
         <guid>https://padlet.com/mksung89/viewMatrix/wish/3168395240</guid>
      </item>
   </channel>
</rss>
