4 <title>QBasicApps - collection of applications mostly written in MS QBasic for DOS environment</title>
5 <!-- 2018-06-03 Sun 02:00 -->
7 <meta name="viewport" content="width=device-width, initial-scale=1">
8 <meta name="generator" content="Org-mode">
9 <meta name="author" content="Svjatoslav Agejenko">
10 <link href="https://bootswatch.com/4/darkly/bootstrap.min.css" rel="stylesheet">
11 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
12 <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>"
13 <style type="text/css">
14 footer {background-color: #111 !important;}
15 pre {background-color: #111; color: #ccc;}
17 <style type="text/css">
18 /* org mode styles on top of twbs */
35 background-color: #f5f5f5;
62 display: inline-block;
74 .bs-docs-sidebar.affix {
77 @media (min-width: 768px) {
83 /* All levels of nav */
84 .bs-docs-sidebar .nav > li > a {
91 .bs-docs-sidebar .nav > li > a:hover,
92 .bs-docs-sidebar .nav > li > a:focus {
95 text-decoration: none;
96 background-color: transparent;
97 border-left: 1px solid #A1283B;
99 .bs-docs-sidebar .nav > .active > a,
100 .bs-docs-sidebar .nav > .active:hover > a,
101 .bs-docs-sidebar .nav > .active:focus > a {
105 background-color: transparent;
106 border-left: 2px solid #A1283B;
109 /* Nav: second level (shown on .active) */
110 .bs-docs-sidebar .nav .nav {
111 display: none; /* Hide by default, but at >768px, show it */
112 padding-bottom: 10px;
114 .bs-docs-sidebar .nav .nav > li > a {
121 .bs-docs-sidebar .nav .nav > li > a:hover,
122 .bs-docs-sidebar .nav .nav > li > a:focus {
125 .bs-docs-sidebar .nav .nav > .active > a,
126 .bs-docs-sidebar .nav .nav > .active:hover > a,
127 .bs-docs-sidebar .nav .nav > .active:focus > a {
132 /* Nav: third level (shown on .active) */
133 .bs-docs-sidebar .nav .nav .nav {
134 padding-bottom: 10px;
136 .bs-docs-sidebar .nav .nav .nav > li > a {
143 .bs-docs-sidebar .nav .nav .nav > li > a:hover,
144 .bs-docs-sidebar .nav .nav .nav > li > a:focus {
147 .bs-docs-sidebar .nav .nav .nav > .active > a,
148 .bs-docs-sidebar .nav .nav .nav > .active:hover > a,
149 .bs-docs-sidebar .nav .nav .nav > .active:focus > a {
154 /* Show and affix the side nav when space allows it */
155 @media (min-width: 992px) {
156 .bs-docs-sidebar .nav > .active > ul {
159 /* Widen the fixed sidebar */
160 .bs-docs-sidebar.affix,
161 .bs-docs-sidebar.affix-bottom {
164 .bs-docs-sidebar.affix {
165 position: fixed; /* Undo the static from mobile first approach */
168 .bs-docs-sidebar.affix-bottom {
169 position: absolute; /* Undo the static from mobile first approach */
171 .bs-docs-sidebar.affix .bs-docs-sidenav,.bs-docs-sidebar.affix-bottom .bs-docs-sidenav {
176 @media (min-width: 1200px) {
177 /* Widen the fixed sidebar again */
178 .bs-docs-sidebar.affix-bottom,
179 .bs-docs-sidebar.affix {
184 <script type="text/javascript">
188 $('.bs-docs-sidebar li').first().addClass('active');
190 $(document.body).scrollspy({target: '.bs-docs-sidebar'});
192 $('.bs-docs-sidebar').affix();
197 <div id="content" class="container">
198 <div class="row"><div class="col-md-9"><h1 class="title">QBasicApps - collection of applications mostly written in MS QBasic for DOS environment</h1>
201 <li><a href="http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=snapshot;h=HEAD;sf=tgz">download latest snapshot</a>
204 <li>This program is free software; you can redistribute it and/or modify
205 it under the terms of version 3 of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public
206 License</a> or later as published by the Free Software Foundation.
211 <li>Svjatoslav Agejenko
213 <li>Homepage: <a href="http://svjatoslav.eu">http://svjatoslav.eu</a>
215 <li>Email: <a href="mailto://svjatoslav@svjatoslav.eu">mailto://svjatoslav@svjatoslav.eu</a>
220 <li><a href="http://www.svjatoslav.eu/programs.jsp">other applications hosted at svjatoslav.eu</a>
227 Parses scene definition language and creates 3D world based on
228 it. Result will be in a <a href="https://en.wikipedia.org/wiki/Wavefront_.obj_file">wavefront obj file</a>, witch can be then
229 visualized using external renderer.
233 Basic concept of defining scene is:
236 <li>Simple and primitive objects are created on point and polygon level.
238 <li>More complex ones can be created my combinig already existing ones,
239 while applying various transformations on them.
244 Objects with all its subobjects can be rotated, mirrored or resized
245 omong any axis. Generator has built in cache for data input and output
246 to minimize file access.
249 <div id="outline-container-sec-1" class="outline-2">
250 <h2 id="sec-1"><span class="section-number-2">1</span> System requirements</h2>
251 <div class="outline-text-2" id="text-1">
252 <table class="table table-striped table-bordered table-hover table-condensed">
262 <th scope="col" class="text-left">software</th>
263 <th scope="col" class="text-right">preferred version</th>
268 <td class="text-left">DOS</td>
269 <td class="text-right">6.22</td>
273 <td class="text-left">QBasic</td>
274 <td class="text-right">4.5</td>
280 <div id="outline-container-sec-2" class="outline-2">
281 <h2 id="sec-2"><span class="section-number-2">2</span> Installation</h2>
282 <div class="outline-text-2" id="text-2">
284 <li>Unpack ZIP file in any folder.
286 <li>update include path inside bin/3dparse.bas
290 <div id="outline-container-sec-2-0-1" class="outline-4">
291 <h4 id="sec-2-0-1"><span class="section-number-4">2.0.1</span> Directory layout</h4>
292 <div class="outline-text-4" id="text-2-0-1">
296 <li>3dparse.bas - 3D generator main executable
298 <li>city1.3d - city with square-like buildings
300 <li>city2.3d - city with hexangular buildings
302 <li>result.mtl - shared material library
304 <li>*.bat - quick launch scripts
309 <li>include - 3D objects used to compose the scene
315 <div id="outline-container-sec-3" class="outline-2">
316 <h2 id="sec-3"><span class="section-number-2">3</span> Scene description language</h2>
317 <div class="outline-text-2" id="text-3">
319 (read examples…)
323 <pre class="example">
330 <pre class="example">
337 <pre class="example">
341 defines new polygon, p4 may be unused
345 <pre class="example">
349 displays warning message, and wait for key
352 <pre class="example">
359 <pre class="example">
366 <pre class="example">
370 selects random material from list
373 <pre class="example">
374 obj object xz45 xy20 x+3 y*2
377 includes sub object, can be rotated moved or resized, across X Y Z. If
378 object name begin vith ~ then it will be loaded from current
379 directory. if object name ends with ~ then object will be parsed
380 directly from file, and not chached, to allow loading of greater than
386 <p><img src="rotation.png" class="img-responsive" alt="rotation.png">
391 <pre class="example">
395 select random command to execute, ^ will be converted to spaces.
398 <pre class="example">
405 <pre class="example">
409 specify output file name, must be first command
412 <pre class="example">
413 set variable contents
416 set variable contents, variable must be number, contents can be
417 string. max variables is 100. first is 0.
420 <pre class="example">
421 anycommand %1 anything
424 inserts variable 1 contents info line
427 <pre class="example">
428 cmp flag string1 string2
431 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.
434 <pre class="example">
438 executes command if flag is true.
442 exapmle: ?3 obj car z*2 xy45
445 <pre class="example">
449 dummy function, does notheing
454 <div id="outline-container-sec-4" class="outline-2">
455 <h2 id="sec-4"><span class="section-number-2">4</span> Usage</h2>
456 <div class="outline-text-2" id="text-4">
458 Make sure you have QB binaries in your PATH. Execute
460 <pre class="example">
466 <pre class="example">
470 to generate example cities. After parsing is finished, appropriate
471 *.obj files will appear in the bin directory holding generated scene.
472 Visualize scene with your favourite renderer.
476 <div id="outline-container-sec-5" class="outline-2">
477 <h2 id="sec-5"><span class="section-number-2">5</span> Examples</h2>
478 <div class="outline-text-2" id="text-5">
480 Download Blender files:
482 <table class="table table-striped table-bordered table-hover table-condensed">
492 <th scope="col" class="text-left">file</th>
493 <th scope="col" class="text-left">size</th>
498 <td class="text-left"><a href="rectangular city.blend">rectangular city.blend</a></td>
499 <td class="text-left">3.6 MB</td>
503 <td class="text-left"><a href="hexagonal city.blend">hexagonal city.blend</a></td>
504 <td class="text-left">21 MB</td>
510 They were produced by importing generated <a href="https://en.wikipedia.org/wiki/Wavefront_.obj_file">wavefront obj files</a> into
511 <a href="https://www.blender.org/">Blender</a>.
515 <div id="outline-container-sec-5-1" class="outline-3">
516 <h3 id="sec-5-1"><span class="section-number-3">5.1</span> Rectangular city</h3>
517 <div class="outline-text-3" id="text-5-1">
520 <p><img src="rectangular city, 1.jpeg" class="img-responsive" alt="rectangular city, 1.jpeg">
526 <p><img src="rectangular city, 2.jpeg" class="img-responsive" alt="rectangular city, 2.jpeg">
532 <p><img src="rectangular city, 3.jpeg" class="img-responsive" alt="rectangular city, 3.jpeg">
537 <div id="outline-container-sec-5-2" class="outline-3">
538 <h3 id="sec-5-2"><span class="section-number-3">5.2</span> Hexagonal city</h3>
539 <div class="outline-text-3" id="text-5-2">
542 <p><img src="hexagonal city, 1.jpeg" class="img-responsive" alt="hexagonal city, 1.jpeg">
548 <p><img src="hexagonal city, 2.jpeg" class="img-responsive" alt="hexagonal city, 2.jpeg">
554 <p><img src="hexagonal city, 3.jpeg" class="img-responsive" alt="hexagonal city, 3.jpeg">
560 </div><div class="col-md-3"><nav id="table-of-contents">
561 <div id="text-table-of-contents" class="bs-docs-sidebar">
563 <li><a href="#sec-1">1. System requirements</a></li>
564 <li><a href="#sec-2">2. Installation</a></li>
565 <li><a href="#sec-3">3. Scene description language</a></li>
566 <li><a href="#sec-4">4. Usage</a></li>
567 <li><a href="#sec-5">5. Examples</a>
569 <li><a href="#sec-5-1">5.1. Rectangular city</a></li>
570 <li><a href="#sec-5-2">5.2. Hexagonal city</a></li>
577 <footer id="postamble" class="">
578 <div><p class="author">Author: Svjatoslav Agejenko</p>
579 <p class="date">Created: 2018-06-03 Sun 02:00</p>
580 <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>