<html lang="en">
<head>
<title>3D Synthezier</title>
-<!-- 2018-06-24 Sun 03:07 -->
+<!-- 2019-01-20 Sun 03:19 -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="Org-mode">
</ul>
</li>
-<li><a href="http://www.svjatoslav.eu/projects/">Other software projects hosted at svjatoslav.eu</a>
+<li><a href="https://www.svjatoslav.eu/projects/">Other software projects hosted at svjatoslav.eu</a>
</li>
</ul>
</div>
<h3 id="sec-1-1"><span class="section-number-3">1.1</span> Source code</h3>
<div class="outline-text-3" id="text-1-1">
<ul class="org-ul">
-<li><a href="http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=snapshot;h=HEAD;sf=tgz">Download latest snapshot in TAR GZ format</a>
+<li><a href="https://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=snapshot;h=HEAD;sf=tgz">Download latest snapshot in TAR GZ format</a>
</li>
-<li><a href="http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=summary">Browse Git repository online</a>
+<li><a href="https://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=summary">Browse Git repository online</a>
</li>
<li>Clone Git repository using command:
<pre class="example">
-git clone http://www2.svjatoslav.eu/git/qbasicapps.git
+git clone https://www2.svjatoslav.eu/git/qbasicapps.git
+
</pre>
</li>
</ul>
<thead>
<tr>
<th scope="col" class="text-left">software</th>
-<th scope="col" class="text-right">preferred version</th>
+<th scope="col" class="text-right">tested version</th>
</tr>
</thead>
<tbody>
<p>
(read examples…)
</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> here</h3>
+<div class="outline-text-3" id="text-5-1">
<pre class="example">
here
+
</pre>
<p>
defines new segment
</p>
-
+</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> p</h3>
+<div class="outline-text-3" id="text-5-2">
<pre class="example">
p x y z
+
</pre>
<p>
defines new point
</p>
-
+</div>
+</div>
+<div id="outline-container-sec-5-3" class="outline-3">
+<h3 id="sec-5-3"><span class="section-number-3">5.3</span> f</h3>
+<div class="outline-text-3" id="text-5-3">
<pre class="example">
f p1 p2 p3 p4
+
</pre>
<p>
defines new polygon, p4 may be unused
</p>
-
-
+</div>
+</div>
+<div id="outline-container-sec-5-4" class="outline-3">
+<h3 id="sec-5-4"><span class="section-number-3">5.4</span> warn</h3>
+<div class="outline-text-3" id="text-5-4">
<pre class="example">
warn <message>
+
</pre>
<p>
displays warning message, and wait for key
</p>
-
+</div>
+</div>
+<div id="outline-container-sec-5-5" class="outline-3">
+<h3 id="sec-5-5"><span class="section-number-3">5.5</span> end</h3>
+<div class="outline-text-3" id="text-5-5">
<pre class="example">
end
+
</pre>
<p>
terminates parser
</p>
-
+</div>
+</div>
+<div id="outline-container-sec-5-6" class="outline-3">
+<h3 id="sec-5-6"><span class="section-number-3">5.6</span> mtl</h3>
+<div class="outline-text-3" id="text-5-6">
<pre class="example">
mtl material
+
</pre>
<p>
selects material
</p>
-
+</div>
+</div>
+<div id="outline-container-sec-5-7" class="outline-3">
+<h3 id="sec-5-7"><span class="section-number-3">5.7</span> mtlrnd</h3>
+<div class="outline-text-3" id="text-5-7">
<pre class="example">
mtlrnd material ...
+
</pre>
<p>
selects random material from list
</p>
-
+</div>
+</div>
+<div id="outline-container-sec-5-8" class="outline-3">
+<h3 id="sec-5-8"><span class="section-number-3">5.8</span> obj</h3>
+<div class="outline-text-3" id="text-5-8">
<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
<p><img src="rotation.png" class="img-responsive" alt="rotation.png">
</p>
</figure>
-
-
+</div>
+</div>
+<div id="outline-container-sec-5-9" class="outline-3">
+<h3 id="sec-5-9"><span class="section-number-3">5.9</span> rnd</h3>
+<div class="outline-text-3" id="text-5-9">
<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>
-
+</div>
+</div>
+<div id="outline-container-sec-5-10" class="outline-3">
+<h3 id="sec-5-10"><span class="section-number-3">5.10</span> #</h3>
+<div class="outline-text-3" id="text-5-10">
<pre class="example">
# whatever text
+
</pre>
<p>
comment
</p>
-
+</div>
+</div>
+<div id="outline-container-sec-5-11" class="outline-3">
+<h3 id="sec-5-11"><span class="section-number-3">5.11</span> out</h3>
+<div class="outline-text-3" id="text-5-11">
<pre class="example">
out file
+
</pre>
<p>
specify output file name, must be first command
</p>
-
+</div>
+</div>
+<div id="outline-container-sec-5-12" class="outline-3">
+<h3 id="sec-5-12"><span class="section-number-3">5.12</span> set</h3>
+<div class="outline-text-3" id="text-5-12">
<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>
-
+</div>
+</div>
+<div id="outline-container-sec-5-13" class="outline-3">
+<h3 id="sec-5-13"><span class="section-number-3">5.13</span> variables usage</h3>
+<div class="outline-text-3" id="text-5-13">
<pre class="example">
anycommand %1 anything
+
</pre>
<p>
inserts variable 1 contents info line
</p>
-
+</div>
+</div>
+<div id="outline-container-sec-5-14" class="outline-3">
+<h3 id="sec-5-14"><span class="section-number-3">5.14</span> cmp</h3>
+<div class="outline-text-3" id="text-5-14">
<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>
-
+</div>
+</div>
+<div id="outline-container-sec-5-15" class="outline-3">
+<h3 id="sec-5-15"><span class="section-number-3">5.15</span> ?</h3>
+<div class="outline-text-3" id="text-5-15">
<pre class="example">
?flag anycommand
+
</pre>
<p>
executes command if flag is true.
<p>
exapmle: ?3 obj car z*2 xy45
</p>
-
+</div>
+</div>
+<div id="outline-container-sec-5-16" class="outline-3">
+<h3 id="sec-5-16"><span class="section-number-3">5.16</span> dum</h3>
+<div class="outline-text-3" id="text-5-16">
<pre class="example">
dum
+
</pre>
<p>
dummy function, does notheing
</p>
</div>
</div>
+</div>
<div id="outline-container-sec-6" class="outline-2">
<h2 id="sec-6"><span class="section-number-2">6</span> Usage</h2>
</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
<li><a href="#sec-2">2. Operating principle</a></li>
<li><a href="#sec-3">3. System requirements</a></li>
<li><a href="#sec-4">4. Installation</a></li>
-<li><a href="#sec-5">5. Scene description language</a></li>
+<li><a href="#sec-5">5. Scene description language</a>
+<ul class="nav">
+<li><a href="#sec-5-1">5.1. here</a></li>
+<li><a href="#sec-5-2">5.2. p</a></li>
+<li><a href="#sec-5-3">5.3. f</a></li>
+<li><a href="#sec-5-4">5.4. warn</a></li>
+<li><a href="#sec-5-5">5.5. end</a></li>
+<li><a href="#sec-5-6">5.6. mtl</a></li>
+<li><a href="#sec-5-7">5.7. mtlrnd</a></li>
+<li><a href="#sec-5-8">5.8. obj</a></li>
+<li><a href="#sec-5-9">5.9. rnd</a></li>
+<li><a href="#sec-5-10">5.10. #</a></li>
+<li><a href="#sec-5-11">5.11. out</a></li>
+<li><a href="#sec-5-12">5.12. set</a></li>
+<li><a href="#sec-5-13">5.13. variables usage</a></li>
+<li><a href="#sec-5-14">5.14. cmp</a></li>
+<li><a href="#sec-5-15">5.15. ?</a></li>
+<li><a href="#sec-5-16">5.16. dum</a></li>
+</ul>
+</li>
<li><a href="#sec-6">6. Usage</a></li>
<li><a href="#sec-7">7. Examples</a>
<ul class="nav">
</div></div></div>
<footer id="postamble" class="">
<div><p class="author">Author: Svjatoslav Agejenko</p>
-<p class="date">Created: 2018-06-24 Sun 03:07</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>
+<p class="date">Created: 2019-01-20 Sun 03:19</p>
+<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 26.1 (<a href="http://orgmode.org">Org-mode</a> 9.1.9)</p>
</div>
</footer>
</body>
- Homepage: http://svjatoslav.eu
- Email: mailto://svjatoslav@svjatoslav.eu
-- [[http://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]]
+- [[https://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]]
** Source code
-- [[http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]]
+- [[https://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]]
-- [[http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=summary][Browse Git repository online]]
+- [[https://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=summary][Browse Git repository online]]
- Clone Git repository using command:
- : git clone http://www2.svjatoslav.eu/git/qbasicapps.git
+ : git clone https://www2.svjatoslav.eu/git/qbasicapps.git
* Operating principle
to minimize file access.
* System requirements
-| software | preferred version |
-|----------+-------------------|
-| DOS | 6.22 |
-| QBasic | 4.5 |
+| software | tested version |
+|----------+----------------|
+| DOS | 6.22 |
+| QBasic | 4.5 |
* Installation
+ Unpack ZIP file in any folder.
+ update include path inside bin/3dparse.bas
+ include - 3D objects used to compose the scene
* Scene description language
(read examples...)
-
-
-: here
-defines new segment
-
-: p x y z
-defines new point
-
-: f p1 p2 p3 p4
-defines new polygon, p4 may be unused
-
-
-: warn <message>
-displays warning message, and wait for key
-
-: end
-terminates parser
-
-: mtl material
-selects material
-
-: mtlrnd material ...
-selects random material from list
-
-: obj object xz45 xy20 x+3 y*2
-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.
-
-[[file:rotation.png]]
-
-
-: rnd p^1^2^3 p^7^2^1
-select random command to execute, ^ will be converted to spaces.
-
-: # whatever text
-comment
-
-: out file
-specify output file name, must be first command
-
-: set variable contents
-set variable contents, variable must be number, contents can be
-string. max variables is 100. first is 0.
-
-: anycommand %1 anything
-inserts variable 1 contents info line
-
-: cmp flag string1 string2
-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.
-
-: ?flag anycommand
-executes command if flag is true.
-
-exapmle: ?3 obj car z*2 xy45
-
-: dum
-dummy function, does notheing
+** here
+ : here
+ defines new segment
+** p
+ : p x y z
+ defines new point
+** f
+ : f p1 p2 p3 p4
+ defines new polygon, p4 may be unused
+** warn
+ : warn <message>
+ displays warning message, and wait for key
+** end
+ : end
+ terminates parser
+** mtl
+ : mtl material
+ selects material
+** mtlrnd
+ : mtlrnd material ...
+ selects random material from list
+** obj
+ : obj object xz45 xy20 x+3 y*2
+ 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.
+
+ [[file:rotation.png]]
+** rnd
+ : rnd p^1^2^3 p^7^2^1
+ select random command to execute, ^ will be converted to spaces.
+** #
+ : # whatever text
+ comment
+** out
+ : out file
+ specify output file name, must be first command
+** set
+ : set variable contents
+ set variable contents, variable must be number, contents can be
+ string. max variables is 100. first is 0.
+** variables usage
+ : anycommand %1 anything
+ inserts variable 1 contents info line
+** cmp
+ : cmp flag string1 string2
+ 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.
+** ?
+ : ?flag anycommand
+ executes command if flag is true.
+
+ exapmle: ?3 obj car z*2 xy45
+** dum
+ : dum
+ dummy function, does notheing
* Usage
Make sure you have QB binaries in your PATH. Execute
<html lang="en">
<head>
<title>QBasicApps - collection of applications mostly written in MS QBasic for DOS environment</title>
-<!-- 2018-06-24 Sun 03:12 -->
+<!-- 2019-01-20 Sun 03:14 -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="Org-mode">
<ul class="org-ul">
<li>Svjatoslav Agejenko
</li>
-<li>Homepage: <a href="http://svjatoslav.eu">http://svjatoslav.eu</a>
+<li>Homepage: <a href="https://svjatoslav.eu">https://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/projects/">Other software projects hosted at svjatoslav.eu</a>
+<li><a href="https://www.svjatoslav.eu/projects/">Other software projects hosted at svjatoslav.eu</a>
</li>
</ul>
</div>
<h3 id="sec-1-1"><span class="section-number-3">1.1</span> Source code</h3>
<div class="outline-text-3" id="text-1-1">
<ul class="org-ul">
-<li><a href="http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=snapshot;h=HEAD;sf=tgz">Download latest snapshot in TAR GZ format</a>
+<li><a href="https://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=snapshot;h=HEAD;sf=tgz">Download latest snapshot in TAR GZ format</a>
</li>
-<li><a href="http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=summary">Browse Git repository online</a>
+<li><a href="https://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=summary">Browse Git repository online</a>
</li>
<li>Clone Git repository using command:
<pre class="example">
-git clone http://www2.svjatoslav.eu/git/qbasicapps.git
+git clone https://www2.svjatoslav.eu/git/qbasicapps.git
+
</pre>
</li>
</ul>
Few sample applications from the package:
</p>
</div>
-</div>
-
-<div id="outline-container-sec-3" class="outline-2">
-<h2 id="sec-3"><span class="section-number-2">3</span> Checkers</h2>
-<div class="outline-text-2" id="text-3">
+<div id="outline-container-sec-2-1" class="outline-3">
+<h3 id="sec-2-1"><span class="section-number-3">2.1</span> Checkers</h3>
+<div class="outline-text-3" id="text-2-1">
<p>
Play checkers against the computer with any board size and any amount
of caps. Does thinking by recursively testing many possible scenarios
</p>
<pre class="example">
games/checkers
+
</pre>
</div>
</div>
-<div id="outline-container-sec-4" class="outline-2">
-<h2 id="sec-4"><span class="section-number-2">4</span> Platform game</h2>
-<div class="outline-text-2" id="text-4">
+<div id="outline-container-sec-2-2" class="outline-3">
+<h3 id="sec-2-2"><span class="section-number-3">2.2</span> Platform game</h3>
+<div class="outline-text-3" id="text-2-2">
<p>
Jump around, collect coins and dont touch snails! Inspired by Super
Mario Bros.
</p>
<pre class="example">
games/platform
+
</pre>
</div>
</div>
-<div id="outline-container-sec-5" class="outline-2">
-<h2 id="sec-5"><span class="section-number-2">5</span> 3D Synthezier</h2>
-<div class="outline-text-2" id="text-5">
+<div id="outline-container-sec-2-3" class="outline-3">
+<h3 id="sec-2-3"><span class="section-number-3">2.3</span> 3D Synthezier</h3>
+<div class="outline-text-3" id="text-2-3">
<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
</p>
<pre class="example">
graphics/3D/3D Synthezier
+
</pre>
</p>
</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">1.1. Source code</a></li>
</ul>
</li>
-<li><a href="#sec-2">2. Content</a></li>
-<li><a href="#sec-3">3. Checkers</a></li>
-<li><a href="#sec-4">4. Platform game</a></li>
-<li><a href="#sec-5">5. 3D Synthezier</a></li>
+<li><a href="#sec-2">2. Content</a>
+<ul class="nav">
+<li><a href="#sec-2-1">2.1. Checkers</a></li>
+<li><a href="#sec-2-2">2.2. Platform game</a></li>
+<li><a href="#sec-2-3">2.3. 3D Synthezier</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-24 Sun 03:12</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>
+<p class="date">Created: 2019-01-20 Sun 03:14</p>
+<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 26.1 (<a href="http://orgmode.org">Org-mode</a> 9.1.9)</p>
</div>
</footer>
</body>
- Program author:
- Svjatoslav Agejenko
- - Homepage: http://svjatoslav.eu
+ - Homepage: https://svjatoslav.eu
- Email: mailto://svjatoslav@svjatoslav.eu
-- [[http://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]]
+- [[https://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]]
** Source code
-- [[http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]]
+- [[https://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]]
-- [[http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=summary][Browse Git repository online]]
+- [[https://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=summary][Browse Git repository online]]
- Clone Git repository using command:
- : git clone http://www2.svjatoslav.eu/git/qbasicapps.git
+ : git clone https://www2.svjatoslav.eu/git/qbasicapps.git
* Content
This collection contains lots of applications:
Few sample applications from the package:
+** Checkers
+ Play checkers against the computer with any board size and any amount
+ of caps. Does thinking by recursively testing many possible scenarios
+ with any depth.
-* Checkers
-Play checkers against the computer with any board size and any amount
-of caps. Does thinking by recursively testing many possible scenarios
-with any depth.
+ Since it is slow QBasic implementation, it isn't practical to play
+ with many caps or big thinking depth, for reasonable responce time.
-Since it is slow QBasic implementation, it isn't practical to play
-with many caps or big thinking depth, for reasonable responce time.
+ See directory:
+ : games/checkers
-See directory:
-: games/checkers
+ [[file:games/checkers/screenshot.png]]
-[[file:games/checkers/screenshot.png]]
+** Platform game
+ Jump around, collect coins and dont touch snails! Inspired by Super
+ Mario Bros.
-* Platform game
-Jump around, collect coins and dont touch snails! Inspired by Super
-Mario Bros.
+ See directory:
+ : games/platform
-See directory:
-: games/platform
+ [[file:games/platform/screenshot.png]]
-[[file:games/platform/screenshot.png]]
+** 3D Synthezier
+ Parses scene definition language and creates 3D world based on
+ it. Result will be in a [[https://en.wikipedia.org/wiki/Wavefront_.obj_file][wavefront obj file]], witch can be then
+ visualized using external renderer.
-* 3D Synthezier
-Parses scene definition language and creates 3D world based on
-it. Result will be in a [[https://en.wikipedia.org/wiki/Wavefront_.obj_file][wavefront obj file]], witch can be then
-visualized using external renderer.
+ See directory:
+ : graphics/3D/3D Synthezier
-See directory:
-: graphics/3D/3D Synthezier
+ [[file:graphics/3D/3D Synthezier/doc/rectangular city, 1.jpeg]]
-[[file:graphics/3D/3D Synthezier/doc/rectangular city, 1.jpeg]]
+ [[file:graphics/3D/3D Synthezier/doc/hexagonal city, 2.jpeg]]
-[[file:graphics/3D/3D Synthezier/doc/hexagonal city, 2.jpeg]]
-
-[[file:graphics/3D/3D Synthezier/doc/index.html][Read more]]
+ [[file:graphics/3D/3D Synthezier/doc/index.html][Read more]]
--include="*.html" \
--include="*.png" \
--include="*.jpeg" \
+ --include="*.blend" \
--exclude="*" \
n0@www3.svjatoslav.eu:/mnt/big/projects/qbasicapps/