1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Castle Game Engine: CastleRays</title>
<meta name="generator" content="PasDoc 0.13.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<table class="container"><tr><td class="navigation">
<h2>Castle Game Engine</h2><p><a href="introduction.html" class="navigation">Introduction</a></p><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
<h1 class="unit">Unit CastleRays</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td><a class="section" href="#PasDoc-Classes">Classes, Interfaces, Objects and Records</a></td><td><a class="section" href="#PasDoc-FuncsProcs">Functions and Procedures</a></td><td><a class="section" href="#PasDoc-Types">Types</a></td><td>Constants</td><td>Variables</td></tr></table>
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
<p>
Calculating 3D rays that correspond to the given points on 2D screen. This is used by ray-tracing (casting a ray for each image pixel) or when picking objects (what 3D object/point is indicated by the current mouse position).</p>
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
<ul class="useslist"><li><a href="CastleVectors.html">CastleVectors</a></li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-Classes"></a><h3 class="cio">Classes, Interfaces, Objects and Records</h3>
<table class="classestable wide_list">
<tr class="listheader">
<th class="itemname">Name</th>
<th class="itemdesc">Description</th>
</tr>
<tr class="list">
<td class="itemname">Object <a class="bold" href="CastleRays.TProjection.html"><code>TProjection</code></a></td>
<td class="itemdesc">Projection parameters.</td>
</tr>
<tr class="list2">
<td class="itemname">Class <a class="bold" href="CastleRays.TRaysWindow.html"><code>TRaysWindow</code></a></td>
<td class="itemdesc">Calculate primary rays for given camera settings and screen size.</td>
</tr>
<tr class="list">
<td class="itemname">Class <a class="bold" href="CastleRays.TPerspectiveRaysWindow.html"><code>TPerspectiveRaysWindow</code></a></td>
<td class="itemdesc"> </td>
</tr>
<tr class="list2">
<td class="itemname">Class <a class="bold" href="CastleRays.TOrthographicRaysWindow.html"><code>TOrthographicRaysWindow</code></a></td>
<td class="itemdesc"> </td>
</tr>
</table>
<a name="PasDoc-FuncsProcs"></a><h3 class="summary">Functions and Procedures</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code>function <b><a href="CastleRays.html#AdjustViewAngleDegToAspectRatio">AdjustViewAngleDegToAspectRatio</a></b>(const FirstViewAngleDeg, SecondToFirstRatio: Single): Single;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code>function <b><a href="CastleRays.html#AdjustViewAngleRadToAspectRatio">AdjustViewAngleRadToAspectRatio</a></b>(const FirstViewAngleRad, SecondToFirstRatio: Single): Single;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code>procedure <b><a href="CastleRays.html#PrimaryRay">PrimaryRay</a></b>(const x, y: Single; const ScreenWidth, ScreenHeight: Integer; const CamPosition, CamDirection, CamUp: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const Projection: <a href="CastleRays.TProjection.html">TProjection</a>; out RayOrigin, RayDirection: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>);</code></td>
</tr>
</table>
<a name="PasDoc-Types"></a><h3 class="summary">Types</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a href="CastleRays.html#TProjectionType">TProjectionType</a></b> = (...);</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Functions and Procedures</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="AdjustViewAngleDegToAspectRatio"></a><code>function <b>AdjustViewAngleDegToAspectRatio</b>(const FirstViewAngleDeg, SecondToFirstRatio: Single): Single;</code></td>
</tr>
<tr><td colspan="1">
<p>
Calculate second viewing angle for perspective projection. Given one viewing angle of the camera (FirstViewAngleDeg) and aspect ratio of your window sizes (SecondToFirstRatio), calculate second viewing angle of the camera.
<p>The intention is that when projecting camera view (with given view angles) on a screen with given aspect ratio), the image will not be distorted (squeezed horizontally or vertically).
<p>For the "Deg" version both angles (given and returned) are in degress, for the "Rad" version both angles and in radians.
<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="AdjustViewAngleRadToAspectRatio"></a><code>function <b>AdjustViewAngleRadToAspectRatio</b>(const FirstViewAngleRad, SecondToFirstRatio: Single): Single;</code></td>
</tr>
<tr><td colspan="1">
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="PrimaryRay"></a><code>procedure <b>PrimaryRay</b>(const x, y: Single; const ScreenWidth, ScreenHeight: Integer; const CamPosition, CamDirection, CamUp: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const Projection: <a href="CastleRays.TProjection.html">TProjection</a>; out RayOrigin, RayDirection: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>);</code></td>
</tr>
<tr><td colspan="1">
<p>
Calculate position and direction of the primary ray cast from CamPosition, going through the pixel X, Y. Takes into account camera 3D settings and screen sizes. RayDirection will always be normalized, just like from <a class="normal" href="CastleRays.TRaysWindow.html#PrimaryRay">TRaysWindow.PrimaryRay</a>.
<p>If you want to call this many times for the same camera settings, it may be more optimal to create <a class="normal" href="CastleRays.TRaysWindow.html">TRaysWindow</a> instance first and call it's <a class="normal" href="CastleRays.TRaysWindow.html#PrimaryRay">TRaysWindow.PrimaryRay</a> method.</p>
</td></tr>
</table>
<h3 class="detail">Types</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TProjectionType"></a><code><b>TProjectionType</b> = (...);</code></td>
</tr>
<tr><td colspan="1">
<h6 class="description_section">Values</h6>
<ul>
<li>
ptOrthographic: </li>
<li>
ptPerspective: </li>
</ul>
</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var u=(("https:" == document.location.protocol) ? "https" : "http") + "://michalis.ii.uni.wroc.pl/piwik-castle-engine/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Piwik Code -->
<noscript>
<!-- Piwik Image Tracker -->
<img src="http://michalis.ii.uni.wroc.pl/piwik-castle-engine/piwik.php?idsite=1&rec=1" style="border:0" alt="" />
<!-- End Piwik -->
</noscript>
<hr noshade size="1"><span class="appinfo"><em>Generated by <a href="http://pasdoc.sourceforge.net/">PasDoc 0.13.0</a> on 2015-06-15 04:43:11</em>
</span>
</td></tr></table></body></html>
|