The Purgatorium
The Purgatorium: General Notes
There is NO checking of reasonability done. Watch for any values that may be resulting in
decades of calculation or even crash the program!
For our European friends a special feature is included:
Type any kind of comma (the comma:"," or the dot:".") and it will be converted to the required dot on the fly!
This is independent from any language-settings of your OS. Use your numeric keypad as you like!
(Redunzelizer's comment: Why don't more programers do that? This is a stupid simple routine with two lines of code...)
There is an automatic conversion of angles to slopes or vice versa.
Whenever you may enter an angle-value there will be TWO inputs looking like this:
Purgatorium Panel: Input Slope AND Angle
You may enter a slope and / or an angle, BOTH are ADDED UP to give
the final value used by the transformation. (pure luxury, that...)
Slope unit is 'm/m' which may be any length unit actually.
Degree values are entered 'standard' (360 deg is a full circle.)
You may copy and paste any numeric value by clipboard from another application.
Again: if your 'European' calculator or spreadsheet delivers a comma:',' it will be converted
to a dot:'.' on the fly and thus be inserted correct. (Are you really sure you deserved this?)
There are some important issues with the 'Purgatorium':
-
All transformations are done in exact order of their apearance. (Prepare well!)
-
Some desired rotations can not be achieved within a single step. (Plan ahead!)
-
Some of the options cancel out when selected at the same time. (Take Care!)
-
Certain functions (e.g. 'Split', 'Trim') are mutualy exclusive. (Segments renumbered!)
However none of these issues represent a limitation. In such cases you simply should split your 'job' into several steps.
Do the first step, make the 'PR' your new
'IN' again, (Menu: '[Process]/[Set Processed as New Initial]', Hotkey: '[Ctrl]+[N]')
and then do the next step. That's it.
On top of the 'Purgatorium Panel' there are two labels showing some infos:
Purgatorium Panel: Info Labels
-
1st line: wether it's the 'IN',
'PR' or 'XT',
plus any (possible) filename,
and occasionaly wether an 'IN' has been 'pushed' already.
-
2nd line: optional info / comment(s).
The Purgatorium: Remove
Purgatorium Panel: Remove Options
-
Unroll ZX: read: 'Remove Curves in ZX-plane' or 'Unroll to Straight'
Calculate actual track lenght of complete prefab, then 'Unroll' (Hey, what? Yes, actualy unroll!) the
track to a straight line (on negative Z-axis). Does NOT affect any Y-coordinates (= vertex heights).
Bezier handles are recalculated to represent according lenght proportions as in original 'curved' prefab.
Banking as well as CR- and RR-flags will stay untouched unless you check one of the three following (otherwise independent) options.
-
Banking: (read: 'Remove Banking') Set any banking angles to 0 degrees.
-
CR: (read: 'Remove Cont. Roll') Disable any existent CR-flags on all vertices.
-
RR: (read: 'Remove Rel. Roll') Disable any existent RR-flag on all vertices.
^ Top of Page
The Purgatorium: Scale
Purgatorium Panel: Scaling Options
The origin of all scaling operations are X/Y/Z-coordinates 0/0/0 which
represent the first vertex of the 'IN'.
Any single X/Y/Z-values multiply with corresponding component of 'Scale Total' in case 'Total' is enabled also.
-
Scale Total: multiply all prefab coordinates by this factor.
-
Scale Z: multiply Z-coordinates by this factor.
Will scale prefab 'LENGTH'-dimension (as seen in top view).
Negative values are NOT recommended on 'Scale-Z'. You may use
'Postprocess - CorrZX Angle' (see below) when getting in trouble with this.
-
Scale X: multiply X-coordinates by this factor. Simply resize.
Will scale prefab 'WIDTH'-dimension (as seen from beginning or top).
A 'Scale X' value of '-1' will mirror the prefab from 'left to right'.
-
Scale Y: multiply Y-coordinates by this factor.
Will scale prefab 'HEIGHT'-dimension .
A 'Scale Y' value of '-1' will mirror the prefab 'top to bottom'.
There is a special 'Pull'-option for scaling available! Let's explain this with a neat example:
You want to rescale a loop. The ingoing and outgoing branch of this loop run in parallel
and have an X-distance of precisely 4.5 meters. You still want to make
your loop bigger/smaller but at the same time keep this 4.5 meters distance?
Do this: Enter the overall scale you have calculated/imagined for your new loop
into 'Scale Total' (and enable 'Scale Total'). Then select '[Pull]/[Preserve X from Scale Total]' from
the menu and the corresponding inversed X-Scale will fully automated be calculated, enabled and entered for you!
Now you've got what you wanted, without any further efforts. (Now of course you may have entered your scaling into 'Y' and 'Z' seperately while leaving 'Total' and
'X' unchecked to get exactly the same result... but this would have been way far from elegant, so please don't do that!)
^ Top of Page
The Purgatorium: Rotate
Purgatorium Panel: Rotation Options
The origin of all rotation operations are X/Y/Z-coordinates 0/0/0 which
represent the first vertex of the 'IN'.
Banking Information is NOT affected on rotations so you will have to care for
that by yourself! (Optionaly check 'Remove Banking'.)
-
Z-axis: Rotate prefab around Z-axis (= within XY plane).
Positive values will rotate track COUNTERCLOCKWISE (as seen from front = beginning).
-
X-axis: Rotate prefab around X-axis (= within YZ plane).
Positive values will rotate track UP (as seen from front = beginning,
counterclockwise as seen from right).
-
Y-axis: Rotate prefab around Y-axis (= within XZ plane).
Positive values will rotate track RIGHT (seen from beginning = clockwise as seen from top).
Be careful with rotating by Y axis! This will corrupt the first bezier
handle (at prefab beginning) since this in general points 'straight
ahead' on the negative Z-axis. However there may be situations when you
still might want to do that. (You may optionaly postprocess with
'Corr. XZ-Angle by 1st handle' to fix a corrupted first segment)
^ Top of Page
Purgatorium: Postprocess
Purgatorium Panel: Postprocessing Options
-
Slope T: will calculate an additional constant slope on the whole prefab.
Calculation is done on the actual 'T-length' of the complete prefab.
Any existing X- and Z-values therefor stay unaffected. Slope values
are added/subtracted to any existing Y-values (= vertex heights).
You possibly may (and will, hehe...) get crude results when applying
'Slope T' on any prefab containing an inversion. Some may work but loopings and
similar keep itchy!
You may still try to invent Your personal 'ultra sloped smash hit inverted prefab'
probably best in combination with some weird rotation settings.
And then earn what you deserve by using that in one of your tracks...)
-
Invert Banking: reverse angle values of any existing banking.
Currently existing 'RR's will give a messy effect. Experiment and grin in case
of unwanted / unpredictable results (still buggy!)
-
All CR's On: should be selfexplanatory by now.
Strongly recommended on most 'Rotation' and 'Slope-T' operations.
-
Flat: enables selection of either one of the two following:
-
Flat: Y-In: Rotate the whole prefab in a way that the very
first handle of first vertex runs parallel to ground (= ZX-plane)
Will ONLY give correct results when 1st vertex does point 'straight
ahead'. Use 'Correct ZX-Angle by 1st Handle' before(!) to fix if not.
-
Flat: Y-Out: Rotate the whole Prefab in a way that the last
handle (of last vertex) runs parallel to ground
-
Reverse Prefab: (You have waited a long time for this, haven't you?)
Take the last vertex of the last segment as new starting point and
so to say 'ride' the whole segment backwards.
Will shift the whole prefab so that the 'new' starting point has
coord's 0/0/0. (as is should)
Automatic Y-axis rotation is done always for correct negative Z-orientation.
Any existing Banking is inverted also. Always remember that due to
characteristcs of NoLimits elements the inverted banking of the very
first reversed vertex (former last) is not evaluable. Work around
this by having the prefab with more segments than required. (e.g. use
'Push Equidist. Straight After'. on the 'IN'
before reversing it.)
-
NO Mirror on Reverse:
By default any prefab is mirrored also on reversing! Check this in case
you want to suppress this behaviour.
-
Correct ZX-Angle by 1st Handle: will rotate whole prefab by Y-axis
so that the direction of first bezier handle points 'straight forward'
(= negative Z!) again AS IT SHOULD. This option may annihilate some rotation
transformations you have selected already (Y-axis is affected!).
Always take special care: lots of transformations depend on having a
'clean' first vertex so this option may become a great friend of yours.
^ Top of Page
The Purgatorium: Special Treating
Purgatorium Panel: Segments Options
To avoid possible confusion on resulting new segment numbers after
any of these operations either 'Split' OR 'Trim' may be selected exclusively.
So on choosing one of them the other(s) will be disabled.
The first segment is number '1'. Segment numbers to handle are defined by a ':'-seperated list.
Numbers in this list do NOT have to be in the right order.
For example entering '5:3' or '4:1:5:2:3' is OK and valid! (Hey, there's this luxury again!)
Nonexistent segment numbers in general will be ignored. Nevertheless an error message may show up then.
You may enter a maximum of 127 characters which should be more than enough...
-
Trim parts of the prefab to create a new prefab from the remainder.
Enter the two numbers of start- and end-segment you want to keep.
In case you want to trim ONE single segment you MUST specify this as
'N:N' with both 'N' beeing the same segment number!
-
Keep ZX-Orientation on Trim On 'Trimming' the resulting prefab will by default
be rotated within the ZX-plane to have the 1st vertex pointing 'straight ahead'
(to negative Z!) again. You may suppress this behaviour by choosing this option.
This may show very usefull for any following rotation(s) whilst keeping the
actual orientation of the segments relative to the initial axes.
-
Split one or more segments at a given 'T' value.
Enter a list of the segments you want to have splitted.
Then choose the split-factor 'T' which may range from 0 to 1.
However the range of 'T' is limited from 0.050 to 0.950 here for some
reasons. Reasonable values of 'T' range from approx. '0.25' to '0.75'.
Existing banking characteristic will be preserved as close as possible.
The new vertex will have the 'CR' flag set always. (Banking on 'Split' still buggy!)
The splitting is done by the well known 'De Casteljau' algorithm.
The 'T-factor' represents the 'Timeline' on a given bezier curve.
^ Top of Page