platform-game/Code blocks projekt/programozoi/html/camera_8c.html
2026-08-09 13:37:33 +01:00

615 lines
34 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Platform játék: camera.c fájlreferencia</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Platform játék
</div>
<div id="projectbrief">3D-s megjelenítés, véletlenszerű pályagenerálás, jutalmazó játékélmény</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Készítette Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',false,false,'search.php','Keresés');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('camera_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#define-members">Makródefiníciók</a> &#124;
<a href="#func-members">Függvények</a> &#124;
<a href="#var-members">Változók</a> </div>
<div class="headertitle">
<div class="title">camera.c fájlreferencia</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="camera_8h_source.html">camera.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Makródefiníciók</h2></td></tr>
<tr class="memitem:ad74bb29548e6e4382565b352768286cc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#ad74bb29548e6e4382565b352768286cc">focalLength</a>&#160;&#160;&#160;0.05</td></tr>
<tr class="separator:ad74bb29548e6e4382565b352768286cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd68b50de46dc1475cd415b80474f4e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#afd68b50de46dc1475cd415b80474f4e1">sensorSize</a>&#160;&#160;&#160;0.07</td></tr>
<tr class="separator:afd68b50de46dc1475cd415b80474f4e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a89a8997f10af2a1fe36461a6377782"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a4a89a8997f10af2a1fe36461a6377782">renderObjectsPerCube</a>&#160;&#160;&#160;10</td></tr>
<tr class="separator:a4a89a8997f10af2a1fe36461a6377782"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Függvények</h2></td></tr>
<tr class="memitem:a7e4904780625abef9ddd2481657e3d50"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a7e4904780625abef9ddd2481657e3d50">freeRenderMap</a> ()</td></tr>
<tr class="memdesc:a7e4904780625abef9ddd2481657e3d50"><td class="mdescLeft">&#160;</td><td class="mdescRight">A feldarabolós rajzoláshoz szükséges mátrixot szabadítja fel. <a href="#a7e4904780625abef9ddd2481657e3d50">Részletek...</a><br /></td></tr>
<tr class="separator:a7e4904780625abef9ddd2481657e3d50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15b05a44c3fabf37c06114ab1c0d6f7e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a15b05a44c3fabf37c06114ab1c0d6f7e">followPlayerWithCamera</a> ()</td></tr>
<tr class="memdesc:a15b05a44c3fabf37c06114ab1c0d6f7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">A játékost követi a kamerával, nem hagyja, hogy a pálya alá lásson. <a href="#a15b05a44c3fabf37c06114ab1c0d6f7e">Részletek...</a><br /></td></tr>
<tr class="separator:a15b05a44c3fabf37c06114ab1c0d6f7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a555b8a2e0ebe839d7fc6ebe6a7244741"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a555b8a2e0ebe839d7fc6ebe6a7244741">menuCamera</a> (int *<a class="el" href="camera_8h.html#a6e9094a53fd8a44ad7a061abae461e5c">getColumns</a>, int *getRows)</td></tr>
<tr class="memdesc:a555b8a2e0ebe839d7fc6ebe6a7244741"><td class="mdescLeft">&#160;</td><td class="mdescRight">A menüben használt kamerát állítja be, visszaadja a columns-t és rows-t is. <a href="#a555b8a2e0ebe839d7fc6ebe6a7244741">Részletek...</a><br /></td></tr>
<tr class="separator:a555b8a2e0ebe839d7fc6ebe6a7244741"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e9094a53fd8a44ad7a061abae461e5c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a6e9094a53fd8a44ad7a061abae461e5c">getColumns</a> ()</td></tr>
<tr class="memdesc:a6e9094a53fd8a44ad7a061abae461e5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visszaadja, hogy hány oszlop látszik a pályából. <a href="#a6e9094a53fd8a44ad7a061abae461e5c">Részletek...</a><br /></td></tr>
<tr class="separator:a6e9094a53fd8a44ad7a061abae461e5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad795e49999debbd7478208f79cd428a9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#ad795e49999debbd7478208f79cd428a9">cameraDollyZ</a> (int deltaTime, bool restart)</td></tr>
<tr class="memdesc:ad795e49999debbd7478208f79cd428a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">A kamera dollyzását végzi, a kamerát mozgatja A dolly állását staticban tárolja, ezért új dolly eseteén először egy restart = true-val kell meghívni,. <a href="#ad795e49999debbd7478208f79cd428a9">Részletek...</a><br /></td></tr>
<tr class="separator:ad795e49999debbd7478208f79cd428a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a132a011d37f693d827707dc368fd82c1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="global_8h.html#structint_vector2_d">intVector2D</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a132a011d37f693d827707dc368fd82c1">get2DPoint</a> (<a class="el" href="global_8h.html#structvector3_d">vector3D</a> point)</td></tr>
<tr class="memdesc:a132a011d37f693d827707dc368fd82c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Térbeli pontból síkbelit képez. A 3D-s pont koordinátái és a kamera alapján kiszámolja, hogy a kamera 2D-s szenzorán hol jelenik meg a pont. Geometriailag leírva, a két ponton (point, cameraPosition) átmenő egyenes egyenletének, és a 'szenzor' vízszintesének metszéspontja a keresett pontunk. A lent és a linken is látható egyenletet először a tér x-z, majd az y-z vetületére alkalmazzuk, és megkapjuk a térbeli pontunk megfelelő síkbeli leképezést. Ez interaktívan ábrázolva így néz ki: <a href="https://www.desmos.com/calculator/8qjvkptjmn">https://www.desmos.com/calculator/8qjvkptjmn</a>. <a href="#a132a011d37f693d827707dc368fd82c1">Részletek...</a><br /></td></tr>
<tr class="separator:a132a011d37f693d827707dc368fd82c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15750abcbd26bd6ea8e5c0da6c3d9a9f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a15750abcbd26bd6ea8e5c0da6c3d9a9f">drawCuboid</a> (<a class="el" href="global_8h.html#structrender_object">renderObject</a> object, bool sides[])</td></tr>
<tr class="memdesc:a15750abcbd26bd6ea8e5c0da6c3d9a9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lerajzol egy téglatestet A kamera modul lényege, a rajzolást végzi el az eddigi függvények segítségével. <a href="#a15750abcbd26bd6ea8e5c0da6c3d9a9f">Részletek...</a><br /></td></tr>
<tr class="separator:a15750abcbd26bd6ea8e5c0da6c3d9a9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97d21cae0963069e12a1db25c14449f4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a97d21cae0963069e12a1db25c14449f4">drawMap</a> (int deltaTime)</td></tr>
<tr class="memdesc:a97d21cae0963069e12a1db25c14449f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lerajzolja a teljes látható játékteret. A megfelelő rajzoláshoz figyelni kell a testek takarására, nem mindegy ezért, hogy milyen sorrendben rajzoljuk őket. A részecskéknél ezzel nincs probléma, azokat bármilyen sorrendben rajzolhatjuk. Ők a játékteret kitakarják, egymásnál viszont nem látszik, hogy melyik takrja melyiket, ezért azokat elég a játéktér után bármilyen sorrendben lerajzolni. A térképet alkotó kockáknál már nem ilyen egyszeű a helyzet. Azokat 4 irányból kell rajzolni, bal lentről, jobb lentről, bal fentről, illetve jobb fentről középre. Ha ebben a négy lépésben rajzoljuk őket (ezek között a sorrend nem számít) akkor mindig a legfesőket rajzoljuk utoljára, és így valósnak néz ki az eredmény. A játékos, a lövedékek, illetve az ellenségek viszont sajnos nincsenek egy négyzethálóhoz kötve. Így gyakran megesik, hogy az egyik felüket a pálya egyik kockája előtt, a másikat pedig az után, de még a kövektező előtt kéne rajzolni. Ezt nem tudjuk megcsinálni, hatalmas erőforrásba kerülne ez a majdnem pixelről pixelre történő szkennelés. A pályát továbbra is m^3-ént szeretnénk lerajzolni. Hogy ez megfelelően nézzen ki, minden köbméterben csak az abban a kockában lévő dolgokat szeretnénk megrajzolni. Ehhez fel kell "darabolnunk" a játékost, a lövedékeket, illetve az ellenségeket is. A darabolás azt jelenti, hogy egy mátrix minden cellájába beírjuk, hogy az adott kockában melyik, milyen tulajdonsággal rendelkező testek lógnak be. Rajzolásnál pedig a testeknek mindig csak az adott kockabeli részét rajzoljuk le. Mivel a kockákat jó sorrendben rajzoljuk, így a bennük levő "testekrészeket" is jó sorrendbe fogjuk rajzolni. A problémát megoldottuk. <a href="#a97d21cae0963069e12a1db25c14449f4">Részletek...</a><br /></td></tr>
<tr class="separator:a97d21cae0963069e12a1db25c14449f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Változók</h2></td></tr>
<tr class="memitem:a3d5de4481bdd7cc75dbd548e22fa3842"><td class="memItemLeft" align="right" valign="top"><a class="el" href="global_8h.html#structvector3_d">vector3D</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a3d5de4481bdd7cc75dbd548e22fa3842">cameraPosition</a></td></tr>
<tr class="separator:a3d5de4481bdd7cc75dbd548e22fa3842"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cc15fc027378088d84dd0b0e162562d"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a7cc15fc027378088d84dd0b0e162562d">magnification</a></td></tr>
<tr class="separator:a7cc15fc027378088d84dd0b0e162562d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0033cdd1154edbeef3472e0a2a53f3b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#af0033cdd1154edbeef3472e0a2a53f3b">columns</a></td></tr>
<tr class="separator:af0033cdd1154edbeef3472e0a2a53f3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9eec77e3a1307027b96c38512736051c"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a9eec77e3a1307027b96c38512736051c">rows</a></td></tr>
<tr class="separator:a9eec77e3a1307027b96c38512736051c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d5c94d21d47549cd449fc1efbcae763"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a2d5c94d21d47549cd449fc1efbcae763">watchBounds</a> = false</td></tr>
<tr class="separator:a2d5c94d21d47549cd449fc1efbcae763"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20520f70a8d9398a2f48e2422203c2ef"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a20520f70a8d9398a2f48e2422203c2ef">leftBound</a></td></tr>
<tr class="separator:a20520f70a8d9398a2f48e2422203c2ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a619391e5cb9dd13c3e1aa395e965f5ac"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a619391e5cb9dd13c3e1aa395e965f5ac">rightBound</a></td></tr>
<tr class="separator:a619391e5cb9dd13c3e1aa395e965f5ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7faf76d8a2f4b5341782711edf9a2ecb"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a7faf76d8a2f4b5341782711edf9a2ecb">upperBound</a></td></tr>
<tr class="separator:a7faf76d8a2f4b5341782711edf9a2ecb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20e5152675a6921ff56c2bab705876c7"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a20e5152675a6921ff56c2bab705876c7">lowerBound</a></td></tr>
<tr class="separator:a20e5152675a6921ff56c2bab705876c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a477f8ea6a98e6c8e73c79b348ac8b51b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a477f8ea6a98e6c8e73c79b348ac8b51b">leftMostBound</a></td></tr>
<tr class="separator:a477f8ea6a98e6c8e73c79b348ac8b51b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a798227dac2d44aaa8b190f1fe07768fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a798227dac2d44aaa8b190f1fe07768fe">rightMostBound</a></td></tr>
<tr class="separator:a798227dac2d44aaa8b190f1fe07768fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94900838ab95fdac5649cbfe2ebbac3d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a94900838ab95fdac5649cbfe2ebbac3d">topBound</a></td></tr>
<tr class="separator:a94900838ab95fdac5649cbfe2ebbac3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a682b82a72e19867a15795a73afa75c95"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#a682b82a72e19867a15795a73afa75c95">bottomBound</a></td></tr>
<tr class="separator:a682b82a72e19867a15795a73afa75c95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef072a6a96e00dc8cde9db749a95344d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="global_8h.html#structrender_object">renderObject</a> ***&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="camera_8c.html#aef072a6a96e00dc8cde9db749a95344d">renderMap</a> = NULL</td></tr>
<tr class="separator:aef072a6a96e00dc8cde9db749a95344d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Makródefiníciók dokumentációja</h2>
<a id="ad74bb29548e6e4382565b352768286cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad74bb29548e6e4382565b352768286cc">&#9670;&nbsp;</a></span>focalLength</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define focalLength&#160;&#160;&#160;0.05</td>
</tr>
</table>
</div><div class="memdoc">
<p>gyújtótáv [m] </p>
</div>
</div>
<a id="a4a89a8997f10af2a1fe36461a6377782"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a89a8997f10af2a1fe36461a6377782">&#9670;&nbsp;</a></span>renderObjectsPerCube</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define renderObjectsPerCube&#160;&#160;&#160;10</td>
</tr>
</table>
</div><div class="memdoc">
<p>max( (projectile + player + enemy) / m^3), erről később bővebben. </p>
</div>
</div>
<a id="afd68b50de46dc1475cd415b80474f4e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd68b50de46dc1475cd415b80474f4e1">&#9670;&nbsp;</a></span>sensorSize</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define sensorSize&#160;&#160;&#160;0.07</td>
</tr>
</table>
</div><div class="memdoc">
<p>szenzor hosszabb oldalának a fele [m] </p>
</div>
</div>
<h2 class="groupheader">Függvények dokumentációja</h2>
<a id="ad795e49999debbd7478208f79cd428a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad795e49999debbd7478208f79cd428a9">&#9670;&nbsp;</a></span>cameraDollyZ()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool cameraDollyZ </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>deltaTime</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>restart</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A kamera dollyzását végzi, a kamerát mozgatja A dolly állását staticban tárolja, ezért új dolly eseteén először egy restart = true-val kell meghívni,. </p>
<dl class="params"><dt>Paraméterek</dt><dd>
<table class="params">
<tr><td class="paramname">ms</td><td>eltelt idő </td></tr>
<tr><td class="paramname">kell-e</td><td>újrakezdés? </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Visszatérési érték</dt><dd>elérte-e a végállást? Minden frameban újraszámolja a rows&amp;coulmns-t, </dd></dl>
</div>
</div>
<a id="a15750abcbd26bd6ea8e5c0da6c3d9a9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15750abcbd26bd6ea8e5c0da6c3d9a9f">&#9670;&nbsp;</a></span>drawCuboid()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void drawCuboid </td>
<td>(</td>
<td class="paramtype"><a class="el" href="global_8h.html#structrender_object">renderObject</a>&#160;</td>
<td class="paramname"><em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>sides</em>[]&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Lerajzol egy téglatestet A kamera modul lényege, a rajzolást végzi el az eddigi függvények segítségével. </p>
<dl class="params"><dt>Paraméterek</dt><dd>
<table class="params">
<tr><td class="paramname">test</td><td>téglatest adatai </td></tr>
<tr><td class="paramname">bool</td><td>melyik oldalakat kell rajzolni? Végez egy plusz ellenőrést is, nem csak a paraméterben megadott tömb alapján nem rajzol oldalakat, azokat se rajzolja le, amiket a helyzetük miatt biztosan nem láthat a kamera. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a97d21cae0963069e12a1db25c14449f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97d21cae0963069e12a1db25c14449f4">&#9670;&nbsp;</a></span>drawMap()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void drawMap </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>deltaTime</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Lerajzolja a teljes látható játékteret. A megfelelő rajzoláshoz figyelni kell a testek takarására, nem mindegy ezért, hogy milyen sorrendben rajzoljuk őket. A részecskéknél ezzel nincs probléma, azokat bármilyen sorrendben rajzolhatjuk. Ők a játékteret kitakarják, egymásnál viszont nem látszik, hogy melyik takrja melyiket, ezért azokat elég a játéktér után bármilyen sorrendben lerajzolni. A térképet alkotó kockáknál már nem ilyen egyszeű a helyzet. Azokat 4 irányból kell rajzolni, bal lentről, jobb lentről, bal fentről, illetve jobb fentről középre. Ha ebben a négy lépésben rajzoljuk őket (ezek között a sorrend nem számít) akkor mindig a legfesőket rajzoljuk utoljára, és így valósnak néz ki az eredmény. A játékos, a lövedékek, illetve az ellenségek viszont sajnos nincsenek egy négyzethálóhoz kötve. Így gyakran megesik, hogy az egyik felüket a pálya egyik kockája előtt, a másikat pedig az után, de még a kövektező előtt kéne rajzolni. Ezt nem tudjuk megcsinálni, hatalmas erőforrásba kerülne ez a majdnem pixelről pixelre történő szkennelés. A pályát továbbra is m^3-ént szeretnénk lerajzolni. Hogy ez megfelelően nézzen ki, minden köbméterben csak az abban a kockában lévő dolgokat szeretnénk megrajzolni. Ehhez fel kell "darabolnunk" a játékost, a lövedékeket, illetve az ellenségeket is. A darabolás azt jelenti, hogy egy mátrix minden cellájába beírjuk, hogy az adott kockában melyik, milyen tulajdonsággal rendelkező testek lógnak be. Rajzolásnál pedig a testeknek mindig csak az adott kockabeli részét rajzoljuk le. Mivel a kockákat jó sorrendben rajzoljuk, így a bennük levő "testekrészeket" is jó sorrendbe fogjuk rajzolni. A problémát megoldottuk. </p>
<dl class="params"><dt>Paraméterek</dt><dd>
<table class="params">
<tr><td class="paramname">ms</td><td>eltelt idő Ez a függvény elvégzi a részecskék, a pálya, illetve minden más test rajzolását is. A részecskék mozgatása innen van meghívva. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a15b05a44c3fabf37c06114ab1c0d6f7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15b05a44c3fabf37c06114ab1c0d6f7e">&#9670;&nbsp;</a></span>followPlayerWithCamera()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void followPlayerWithCamera </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A játékost követi a kamerával, nem hagyja, hogy a pálya alá lásson. </p>
</div>
</div>
<a id="a7e4904780625abef9ddd2481657e3d50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e4904780625abef9ddd2481657e3d50">&#9670;&nbsp;</a></span>freeRenderMap()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void freeRenderMap </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A feldarabolós rajzoláshoz szükséges mátrixot szabadítja fel. </p>
</div>
</div>
<a id="a132a011d37f693d827707dc368fd82c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a132a011d37f693d827707dc368fd82c1">&#9670;&nbsp;</a></span>get2DPoint()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="global_8h.html#structint_vector2_d">intVector2D</a> get2DPoint </td>
<td>(</td>
<td class="paramtype"><a class="el" href="global_8h.html#structvector3_d">vector3D</a>&#160;</td>
<td class="paramname"><em>point</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Térbeli pontból síkbelit képez. A 3D-s pont koordinátái és a kamera alapján kiszámolja, hogy a kamera 2D-s szenzorán hol jelenik meg a pont. Geometriailag leírva, a két ponton (point, cameraPosition) átmenő egyenes egyenletének, és a 'szenzor' vízszintesének metszéspontja a keresett pontunk. A lent és a linken is látható egyenletet először a tér x-z, majd az y-z vetületére alkalmazzuk, és megkapjuk a térbeli pontunk megfelelő síkbeli leképezést. Ez interaktívan ábrázolva így néz ki: <a href="https://www.desmos.com/calculator/8qjvkptjmn">https://www.desmos.com/calculator/8qjvkptjmn</a>. </p>
<dl class="params"><dt>Paraméterek</dt><dd>
<table class="params">
<tr><td class="paramname">Térvektor</td><td>típusú pont </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Visszatérési érték</dt><dd>Síkvektor típusú pont A visszaadott pontnak int koordinátái vannak, hiszen valamelyik pixel koordinátáit jelöli. Ez a függvény igazából egy camera obscura modellje. </dd></dl>
</div>
</div>
<a id="a6e9094a53fd8a44ad7a061abae461e5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e9094a53fd8a44ad7a061abae461e5c">&#9670;&nbsp;</a></span>getColumns()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int getColumns </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Visszaadja, hogy hány oszlop látszik a pályából. </p>
</div>
</div>
<a id="a555b8a2e0ebe839d7fc6ebe6a7244741"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a555b8a2e0ebe839d7fc6ebe6a7244741">&#9670;&nbsp;</a></span>menuCamera()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void menuCamera </td>
<td>(</td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>getColumns</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int *&#160;</td>
<td class="paramname"><em>getRows</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A menüben használt kamerát állítja be, visszaadja a columns-t és rows-t is. </p>
</div>
</div>
<h2 class="groupheader">Változók dokumentációja</h2>
<a id="a682b82a72e19867a15795a73afa75c95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a682b82a72e19867a15795a73afa75c95">&#9670;&nbsp;</a></span>bottomBound</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int bottomBound</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3d5de4481bdd7cc75dbd548e22fa3842"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d5de4481bdd7cc75dbd548e22fa3842">&#9670;&nbsp;</a></span>cameraPosition</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="global_8h.html#structvector3_d">vector3D</a> cameraPosition</td>
</tr>
</table>
</div><div class="memdoc">
<p>A kamera térbeli helyvektora. </p>
</div>
</div>
<a id="af0033cdd1154edbeef3472e0a2a53f3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0033cdd1154edbeef3472e0a2a53f3b">&#9670;&nbsp;</a></span>columns</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float columns</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a20520f70a8d9398a2f48e2422203c2ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20520f70a8d9398a2f48e2422203c2ef">&#9670;&nbsp;</a></span>leftBound</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float leftBound</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a477f8ea6a98e6c8e73c79b348ac8b51b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a477f8ea6a98e6c8e73c79b348ac8b51b">&#9670;&nbsp;</a></span>leftMostBound</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int leftMostBound</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a20e5152675a6921ff56c2bab705876c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20e5152675a6921ff56c2bab705876c7">&#9670;&nbsp;</a></span>lowerBound</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float lowerBound</td>
</tr>
</table>
</div><div class="memdoc">
<p>Darabolás határai. </p>
</div>
</div>
<a id="a7cc15fc027378088d84dd0b0e162562d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cc15fc027378088d84dd0b0e162562d">&#9670;&nbsp;</a></span>magnification</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float magnification</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aef072a6a96e00dc8cde9db749a95344d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef072a6a96e00dc8cde9db749a95344d">&#9670;&nbsp;</a></span>renderMap</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="global_8h.html#structrender_object">renderObject</a>*** renderMap = NULL</td>
</tr>
</table>
</div><div class="memdoc">
<p>Darabolás mátrixa. </p>
</div>
</div>
<a id="a619391e5cb9dd13c3e1aa395e965f5ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a619391e5cb9dd13c3e1aa395e965f5ac">&#9670;&nbsp;</a></span>rightBound</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float rightBound</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a798227dac2d44aaa8b190f1fe07768fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a798227dac2d44aaa8b190f1fe07768fe">&#9670;&nbsp;</a></span>rightMostBound</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int rightMostBound</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9eec77e3a1307027b96c38512736051c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9eec77e3a1307027b96c38512736051c">&#9670;&nbsp;</a></span>rows</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float rows</td>
</tr>
</table>
</div><div class="memdoc">
<p>Ennyi látszik a pályából [m]. </p>
</div>
</div>
<a id="a94900838ab95fdac5649cbfe2ebbac3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94900838ab95fdac5649cbfe2ebbac3d">&#9670;&nbsp;</a></span>topBound</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int topBound</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7faf76d8a2f4b5341782711edf9a2ecb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7faf76d8a2f4b5341782711edf9a2ecb">&#9670;&nbsp;</a></span>upperBound</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float upperBound</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2d5c94d21d47549cd449fc1efbcae763"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d5c94d21d47549cd449fc1efbcae763">&#9670;&nbsp;</a></span>watchBounds</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool watchBounds = false</td>
</tr>
</table>
</div><div class="memdoc">
<p>Feldarabolós rajzolás van-e? </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_e05d7e2b1ecd646af5bb94391405f3b5.html">modules</a></li><li class="navelem"><a class="el" href="camera_8c.html">camera.c</a></li>
<li class="footer">Projekt: Platform játék Készült: Sun Dec 3 2017 21:11:22 Készítette:
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>