Reorganized files. Modernized documentation.
[qbasicapps.git] / graphics / 3D / 3D Synthezier / doc / index.html
diff --git a/graphics/3D/3D Synthezier/doc/index.html b/graphics/3D/3D Synthezier/doc/index.html
new file mode 100644 (file)
index 0000000..615e502
--- /dev/null
@@ -0,0 +1,584 @@
+<!doctype html>
+<html lang="en">
+<head>
+<title>QBasicApps - collection of applications mostly written in MS QBasic for DOS environment</title>
+<!-- 2018-06-03 Sun 02:00 -->
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="generator" content="Org-mode">
+<meta name="author" content="Svjatoslav Agejenko">
+<link href="https://bootswatch.com/4/darkly/bootstrap.min.css" rel="stylesheet">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>"
+<style type="text/css">
+footer {background-color: #111 !important;}
+pre {background-color: #111; color: #ccc;}
+</style>
+<style type="text/css">
+/* org mode styles on top of twbs */
+
+html {
+    position: relative;
+    min-height: 100%;
+}
+
+body {
+    font-size: 18px;
+    margin-bottom: 105px;
+}
+
+footer {
+    position: absolute;
+    bottom: 0;
+    width: 100%;
+    height: 101px;
+    background-color: #f5f5f5;
+}
+
+footer > div {
+    padding: 10px;
+}
+
+footer p {
+    margin: 0 0 5px;
+    text-align: center;
+    font-size: 16px;
+}
+
+#table-of-contents {
+    margin-top: 20px;
+    margin-bottom: 20px;
+}
+
+blockquote p {
+    font-size: 18px;
+}
+
+pre {
+    font-size: 16px;
+}
+
+.footpara {
+    display: inline-block;
+}
+
+figcaption {
+  font-size: 16px;
+  color: #666;
+  font-style: italic;
+  padding-bottom: 15px;
+}
+
+/* from twbs docs */
+
+.bs-docs-sidebar.affix {
+    position: static;
+}
+@media (min-width: 768px) {
+    .bs-docs-sidebar {
+        padding-left: 20px;
+    }
+}
+
+/* All levels of nav */
+.bs-docs-sidebar .nav > li > a {
+    display: block;
+    padding: 4px 20px;
+    font-size: 14px;
+    font-weight: 500;
+    color: #999;
+}
+.bs-docs-sidebar .nav > li > a:hover,
+.bs-docs-sidebar .nav > li > a:focus {
+    padding-left: 19px;
+    color: #A1283B;
+    text-decoration: none;
+    background-color: transparent;
+    border-left: 1px solid #A1283B;
+}
+.bs-docs-sidebar .nav > .active > a,
+.bs-docs-sidebar .nav > .active:hover > a,
+.bs-docs-sidebar .nav > .active:focus > a {
+    padding-left: 18px;
+    font-weight: bold;
+    color: #A1283B;
+    background-color: transparent;
+    border-left: 2px solid #A1283B;
+}
+
+/* Nav: second level (shown on .active) */
+.bs-docs-sidebar .nav .nav {
+    display: none; /* Hide by default, but at >768px, show it */
+    padding-bottom: 10px;
+}
+.bs-docs-sidebar .nav .nav > li > a {
+    padding-top: 1px;
+    padding-bottom: 1px;
+    padding-left: 30px;
+    font-size: 12px;
+    font-weight: normal;
+}
+.bs-docs-sidebar .nav .nav > li > a:hover,
+.bs-docs-sidebar .nav .nav > li > a:focus {
+    padding-left: 29px;
+}
+.bs-docs-sidebar .nav .nav > .active > a,
+.bs-docs-sidebar .nav .nav > .active:hover > a,
+.bs-docs-sidebar .nav .nav > .active:focus > a {
+    padding-left: 28px;
+    font-weight: 500;
+}
+
+/* Nav: third level (shown on .active) */
+.bs-docs-sidebar .nav .nav .nav {
+    padding-bottom: 10px;
+}
+.bs-docs-sidebar .nav .nav .nav > li > a {
+    padding-top: 1px;
+    padding-bottom: 1px;
+    padding-left: 40px;
+    font-size: 12px;
+    font-weight: normal;
+}
+.bs-docs-sidebar .nav .nav .nav > li > a:hover,
+.bs-docs-sidebar .nav .nav .nav > li > a:focus {
+    padding-left: 39px;
+}
+.bs-docs-sidebar .nav .nav .nav > .active > a,
+.bs-docs-sidebar .nav .nav .nav > .active:hover > a,
+.bs-docs-sidebar .nav .nav .nav > .active:focus > a {
+    padding-left: 38px;
+    font-weight: 500;
+}
+
+/* Show and affix the side nav when space allows it */
+@media (min-width: 992px) {
+    .bs-docs-sidebar .nav > .active > ul {
+        display: block;
+    }
+    /* Widen the fixed sidebar */
+    .bs-docs-sidebar.affix,
+    .bs-docs-sidebar.affix-bottom {
+        width: 213px;
+    }
+    .bs-docs-sidebar.affix {
+        position: fixed; /* Undo the static from mobile first approach */
+        top: 20px;
+    }
+    .bs-docs-sidebar.affix-bottom {
+        position: absolute; /* Undo the static from mobile first approach */
+    }
+    .bs-docs-sidebar.affix .bs-docs-sidenav,.bs-docs-sidebar.affix-bottom .bs-docs-sidenav {
+        margin-top: 0;
+        margin-bottom: 0
+    }
+}
+@media (min-width: 1200px) {
+    /* Widen the fixed sidebar again */
+    .bs-docs-sidebar.affix-bottom,
+    .bs-docs-sidebar.affix {
+        width: 263px;
+    }
+}
+</style>
+<script type="text/javascript">
+$(function() {
+    'use strict';
+
+    $('.bs-docs-sidebar li').first().addClass('active');
+
+    $(document.body).scrollspy({target: '.bs-docs-sidebar'});
+
+    $('.bs-docs-sidebar').affix();
+});
+</script>
+</head>
+<body>
+<div id="content" class="container">
+<div class="row"><div class="col-md-9"><h1 class="title">QBasicApps - collection of applications mostly written in MS QBasic for DOS environment</h1>
+<hr >
+<ul class="org-ul">
+<li><a href="http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=snapshot;h=HEAD;sf=tgz">download latest snapshot</a>
+</li>
+
+<li>This program is free software; you can redistribute it and/or modify
+it under the terms of version 3 of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public
+License</a> or later as published by the Free Software Foundation.
+</li>
+
+<li>Program author:
+<ul class="org-ul">
+<li>Svjatoslav Agejenko
+</li>
+<li>Homepage: <a href="http://svjatoslav.eu">http://svjatoslav.eu</a>
+</li>
+<li>Email: <a href="mailto://svjatoslav@svjatoslav.eu">mailto://svjatoslav@svjatoslav.eu</a>
+</li>
+</ul>
+</li>
+
+<li><a href="http://www.svjatoslav.eu/programs.jsp">other applications hosted at svjatoslav.eu</a>
+</li>
+</ul>
+
+
+
+<p>
+Parses scene definition language and creates 3D world based on
+it. Result will be in a <a href="https://en.wikipedia.org/wiki/Wavefront_.obj_file">wavefront obj file</a>, witch can be then
+visualized using external renderer.
+</p>
+
+<p>
+Basic concept of defining scene is:
+</p>
+<ul class="org-ul">
+<li>Simple and primitive objects are created on point and polygon level.
+</li>
+<li>More complex ones can be created my combinig already existing ones,
+while applying various transformations on them.
+</li>
+</ul>
+
+<p>
+Objects with all its subobjects can be rotated, mirrored or resized
+omong any axis. Generator has built in cache for data input and output
+to minimize file access.
+</p>
+
+<div id="outline-container-sec-1" class="outline-2">
+<h2 id="sec-1"><span class="section-number-2">1</span> System requirements</h2>
+<div class="outline-text-2" id="text-1">
+<table class="table table-striped table-bordered table-hover table-condensed">
+
+
+<colgroup>
+<col  class="left">
+
+<col  class="right">
+</colgroup>
+<thead>
+<tr>
+<th scope="col" class="text-left">software</th>
+<th scope="col" class="text-right">preferred version</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="text-left">DOS</td>
+<td class="text-right">6.22</td>
+</tr>
+
+<tr>
+<td class="text-left">QBasic</td>
+<td class="text-right">4.5</td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div id="outline-container-sec-2" class="outline-2">
+<h2 id="sec-2"><span class="section-number-2">2</span> Installation</h2>
+<div class="outline-text-2" id="text-2">
+<ul class="org-ul">
+<li>Unpack ZIP file in any folder.
+</li>
+<li>update include path inside  bin/3dparse.bas
+</li>
+</ul>
+</div>
+<div id="outline-container-sec-2-0-1" class="outline-4">
+<h4 id="sec-2-0-1"><span class="section-number-4">2.0.1</span> Directory layout</h4>
+<div class="outline-text-4" id="text-2-0-1">
+<ul class="org-ul">
+<li>bin
+<ul class="org-ul">
+<li>3dparse.bas - 3D generator main executable
+</li>
+<li>city1.3d - city with square-like buildings
+</li>
+<li>city2.3d - city with hexangular buildings
+</li>
+<li>result.mtl - shared material library
+</li>
+<li>*.bat - quick launch scripts
+</li>
+</ul>
+</li>
+
+<li>include - 3D objects used to compose the scene
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-3" class="outline-2">
+<h2 id="sec-3"><span class="section-number-2">3</span> Scene description language</h2>
+<div class="outline-text-2" id="text-3">
+<p>
+(read examples&#x2026;)
+</p>
+
+
+<pre class="example">
+here
+</pre>
+<p>
+defines new segment
+</p>
+
+<pre class="example">
+p  x y z
+</pre>
+<p>
+defines new point
+</p>
+
+<pre class="example">
+f  p1 p2 p3 p4
+</pre>
+<p>
+defines new polygon,  p4  may be unused
+</p>
+
+
+<pre class="example">
+warn  &lt;message&gt;
+</pre>
+<p>
+displays warning message, and wait for key
+</p>
+
+<pre class="example">
+end
+</pre>
+<p>
+terminates parser
+</p>
+
+<pre class="example">
+mtl  material
+</pre>
+<p>
+selects material
+</p>
+
+<pre class="example">
+mtlrnd  material ...
+</pre>
+<p>
+selects random material from list
+</p>
+
+<pre class="example">
+obj  object xz45 xy20 x+3 y*2
+</pre>
+<p>
+includes sub object, can be rotated moved or resized, across X Y Z. If
+object name begin vith ~ then it will be loaded from current
+directory.  if object name ends with ~ then object will be parsed
+directly from file, and not chached, to allow loading of greater than
+500 lines files.
+</p>
+
+
+<figure>
+<p><img src="rotation.png" class="img-responsive" alt="rotation.png">
+</p>
+</figure>
+
+
+<pre class="example">
+rnd  p^1^2^3 p^7^2^1
+</pre>
+<p>
+select random command to execute, ^ will be converted to spaces.
+</p>
+
+<pre class="example">
+# whatever text
+</pre>
+<p>
+comment
+</p>
+
+<pre class="example">
+out  file
+</pre>
+<p>
+specify output file name, must be first command
+</p>
+
+<pre class="example">
+set  variable  contents
+</pre>
+<p>
+set variable contents, variable must be number, contents can be
+string. max variables is 100. first is 0.
+</p>
+
+<pre class="example">
+anycommand %1 anything
+</pre>
+<p>
+inserts variable 1 contents info line
+</p>
+
+<pre class="example">
+cmp  flag string1 string2
+</pre>
+<p>
+compares strings, and inserts TRUE to flag, if they are equal, else inserts FALSE. max 9 falgs, 0 first. Each subobject has its own flags.
+</p>
+
+<pre class="example">
+?flag anycommand
+</pre>
+<p>
+executes command if flag is true.
+</p>
+
+<p>
+exapmle: ?3 obj car z*2 xy45
+</p>
+
+<pre class="example">
+dum
+</pre>
+<p>
+dummy function, does notheing
+</p>
+</div>
+</div>
+
+<div id="outline-container-sec-4" class="outline-2">
+<h2 id="sec-4"><span class="section-number-2">4</span> Usage</h2>
+<div class="outline-text-2" id="text-4">
+<p>
+Make sure you have QB binaries in your PATH.  Execute
+</p>
+<pre class="example">
+bin/city1.bat
+</pre>
+<p>
+or
+</p>
+<pre class="example">
+bin/city2.bat
+</pre>
+<p>
+to generate example cities. After parsing is finished, appropriate
+*.obj files will appear in the bin directory holding generated scene.
+Visualize scene with your favourite renderer.
+</p>
+</div>
+</div>
+<div id="outline-container-sec-5" class="outline-2">
+<h2 id="sec-5"><span class="section-number-2">5</span> Examples</h2>
+<div class="outline-text-2" id="text-5">
+<p>
+Download Blender files:
+</p>
+<table class="table table-striped table-bordered table-hover table-condensed">
+
+
+<colgroup>
+<col  class="left">
+
+<col  class="left">
+</colgroup>
+<thead>
+<tr>
+<th scope="col" class="text-left">file</th>
+<th scope="col" class="text-left">size</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="text-left"><a href="rectangular city.blend">rectangular city.blend</a></td>
+<td class="text-left">3.6 MB</td>
+</tr>
+
+<tr>
+<td class="text-left"><a href="hexagonal city.blend">hexagonal city.blend</a></td>
+<td class="text-left">21 MB</td>
+</tr>
+</tbody>
+</table>
+
+<p>
+They were produced by importing generated <a href="https://en.wikipedia.org/wiki/Wavefront_.obj_file">wavefront obj files</a> into
+<a href="https://www.blender.org/">Blender</a>.
+</p>
+</div>
+
+<div id="outline-container-sec-5-1" class="outline-3">
+<h3 id="sec-5-1"><span class="section-number-3">5.1</span> Rectangular city</h3>
+<div class="outline-text-3" id="text-5-1">
+
+<figure>
+<p><img src="rectangular city, 1.jpeg" class="img-responsive" alt="rectangular city, 1.jpeg">
+</p>
+</figure>
+
+
+<figure>
+<p><img src="rectangular city, 2.jpeg" class="img-responsive" alt="rectangular city, 2.jpeg">
+</p>
+</figure>
+
+
+<figure>
+<p><img src="rectangular city, 3.jpeg" class="img-responsive" alt="rectangular city, 3.jpeg">
+</p>
+</figure>
+</div>
+</div>
+<div id="outline-container-sec-5-2" class="outline-3">
+<h3 id="sec-5-2"><span class="section-number-3">5.2</span> Hexagonal city</h3>
+<div class="outline-text-3" id="text-5-2">
+
+<figure>
+<p><img src="hexagonal city, 1.jpeg" class="img-responsive" alt="hexagonal city, 1.jpeg">
+</p>
+</figure>
+
+
+<figure>
+<p><img src="hexagonal city, 2.jpeg" class="img-responsive" alt="hexagonal city, 2.jpeg">
+</p>
+</figure>
+
+
+<figure>
+<p><img src="hexagonal city, 3.jpeg" class="img-responsive" alt="hexagonal city, 3.jpeg">
+</p>
+</figure>
+</div>
+</div>
+</div>
+</div><div class="col-md-3"><nav id="table-of-contents">
+<div id="text-table-of-contents" class="bs-docs-sidebar">
+<ul class="nav">
+<li><a href="#sec-1">1. System requirements</a></li>
+<li><a href="#sec-2">2. Installation</a></li>
+<li><a href="#sec-3">3. Scene description language</a></li>
+<li><a href="#sec-4">4. Usage</a></li>
+<li><a href="#sec-5">5. Examples</a>
+<ul class="nav">
+<li><a href="#sec-5-1">5.1. Rectangular city</a></li>
+<li><a href="#sec-5-2">5.2. Hexagonal city</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</nav>
+</div></div></div>
+<footer id="postamble" class="">
+<div><p class="author">Author: Svjatoslav Agejenko</p>
+<p class="date">Created: 2018-06-03 Sun 02:00</p>
+<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 25.1.1 (<a href="http://orgmode.org">Org-mode</a> 8.2.10)</p>
+</div>
+</footer>
+</body>
+</html>