loop: making of - Ferrovipathe

integral part of Loop, is not any more standalone available, as the challenge had ..... 2720. 2596. 2483. 2380. 2284. 2197. 230. 4802. 3901. 3468. 3121. 2972 ... 5 per 25 m, i.e. are composed of polygons of 5 m side. 223 m radius' curve. 17 ...
1MB taille 3 téléchargements 410 vues
Loop: making of

© JL Coste 2004-2005

LOOP: THE MAKING OF

I discovered BVE by chance few years ago, by seeking files of roads for Mekanicks, an oldie but goldie one. By that time, neither Trainz nor MSTS where brougth out, so BVE was the only number one train simulator.

Since the begining, I was allured by three roads, which remain among my preferred: Sandymill, HeavyCoal, and Desert Freight the USA. They smell off a particular atmosphere of real train, exoticism, mystery, dream in the same time, in short, everything making, for me, the success of a road, as I think it’s for that we love trains.

At the time of the publishing of Balfearn to Invernay, the presence of a connection at the exit of Balfearn made it possible to suppose the existence of a loop running throught the tunnel on the right. Like Alice, I always wanted to know what is behind the mirror, so to discover the landscapes behind that tunnel.....

The task was not simple, because I had everything to learn, controls, syntax, easy ways, like any beginner. But step by step, reading the forums, investigating roads from other authors, trying out some ideas, by putting end to end all the tests carried out, Loop was born. By that way, as many problems sometime simple, sometimes more complex, but always recurring in forums, have been solved in Loop, I decided to write these notes, as everybody can exchange its tricks of trades.

First of all, it should not be forgotten that layout of railroad requires some concepts of rather simple mathematics. More over, BVE is a simulator. It means that world travels around the train, not opposite. So, it will allways be necessary to teach BVE how to do, so that illusion on screen will as perfect as possible.

As far as possible, I will try to go from simplest to most complex, while preserving the chronological order of realization.

1

Loop: making of

© JL Coste 2004-2005

The line lay-out. Any road telling a story, script was easy to write. Between Sandymill and Balfearn, there are two rivers and a connection. Therefore, at least two viaducts, and a possibility of a large junction station somewhere on the road. As we must go from a point to another already fixed by Robert Glass in Sandymill, the first step was the creation of the layout, in such a way that the two roads meet at the same point. With this intention, a standard spreadsheet like Excel is an ideal tool. A little bit of triangulation, therefore of trigonometry, a lot of copy and paste, some data to enter, and we got a beautiful chart easily. What is to be done ? It is quite easy with from some refreshing course of trigonometry:

Let us take the right-angled triangle ABC. We have a right angle ABC and two other angles such as the sum: Angle ABC + angle BAC + angle BCA = 180°. Therefore, angle BAC + angle BCA = 90°. The sine of the angle BAC, noted sin(BAC) is equal to BC/AC. The cosine of the angle BAC, noted cos(BAC) is equal to BA/AC. That’s all we need. 2

Loop: making of

© JL Coste 2004-2005

Computation receipes are simple. Each 25 m, we compute the new co-ordinates of track, from the direction followed by the rails. In practice, we compute the co-ordinates of the point C compared to point A, each 25 m. For that, we need to know the angle BAC, which modifies the direction followed until now by the train. So, we have: A circle of center O, radius OA=OC, and some right angles: OAB, ODA, ODC, ABC. The train turn on an angle BAC, in yellow on picture We have: Angle BAC + Angle CAO = 90°. As, we saw it, the sum Angle BAC + Angle BCA = 90°, we obtains: Angle BAC + Angle CAO = Angle BAC + Angle BCA = 90°. So, Angle CAO = Angle BCA. As the two right-angled triangles ADO and CDO are symmetrical compared to OD, we have: ⇒ Angle DAO = Angle DCO, and Angle AOD = Angle DOC.. ⇒ Angle AOC = 2 * Angle AOD = 2 * Angle BAC. ⇒ I.e.: Angle BAC = Angle AOC / 2. Remember: Angle AOC = 360° * arcAC / Circumference of circle = 360° * arcAC / (2 * ∏ * radius) = 2 * ∏ * arcAC / (2 * ∏ * radius) = arcAC / radius (in radian, since 360° = 2 * ∏ radian). If the radius used are very large, we can consider that arcAC is equal to AC, therefore 25 m. So, we get Angle BAC in degree = 360° * arcAC / (2 * ∏ * radius of curve) = 180° * AC / ( ∏ * radius of curve). The new co-ordinates of point C are equal to co-ordinates of point A + AB or + BC: xB = xA + BC = xA + (AC * sin(BAC)) yB = yA + AB = yA + (AC * cos(BAC)) What is easily implemented in Excel: We have need of distance covered, followed curve, angles of specific and total deviation, and specific co-ordinates xB and yB, to calculate the real co-ordinates xN and yN, allowing us to obtain the layout of the way. For reasons of legibility of sheet and computing facility, an additional column is reserved for the description of remarkable points, and another for radii’s curves. We start on second row, the first one been filled with 0 per defect @ Col 1: Distance covered, 1° row = starting km (often 0), next rows = precessing row + 25. Col 2: Free text (remarque). Col 3: Curve command (= @/.Curve(NNN) scripted in road file. Col 4: Curve’s Radius followed by train= ± NNN or 0. Col 5: Local angle of deviation = 360 * 25/(2 * PI() * Col 4) Col 6: Total angle of deviation since the begining of road = Col 5 + last value = Col 5 + (Col 4, line -1) Col 7: xB = 25 * Sin (Col 6 * PI()/180). Col 8: yB = 25 * Cos (Col 6 * PI()/180). Col 9: xN = Col 7 + last value = Col 7 + (Col 9, line – 1). Col 10: yN = Col 8 + last value = Col 8 + (Col 10, line – 1).

3

Loop: making of

© JL Coste 2004-2005

Creation of layout is now very simple: Just select data of columns I and J, and select group of dots with round lines to create a graph.

Here the result for Loop:

(NB: the two roads Sandymill- Balfearn and Loop were carried out side by side on same sheet, each layout made with own points xN yN. Central square in yellow is used to correct graph’s distortion).

4

Loop: making of

© JL Coste 2004-2005

A very useful trick: by using some logical functions of Excel, the sheet can be automatic, and we can see the curve changing in real time by modifying curve’s radius or length: Col 4 = IF (ISEMPTY(Col 3);[Col 4, Line-1];Col 3): if column 3 is empty, we got preceding value, if not it’s the same one. By that way, we enter only the modifications induced by CURVE command. Col 5 = IF([Col 4, Line-1 ] < > 0;360*25/(2*PI()*D4);0): if the radius of the preceding line is not null, the angle is calculated ; if not we put 0.

We get (Results): A

B

C

D

E

F

G

H

I

J

1

Distance

Points

Curve

Curve

Angle

Sum

xB

yB

xN

yN

2

0

Sandymill

0

0

0

0

0

0

0

0

3

25

657.8

657.8

0

0

0.00

25.00

0.00

25.00

4

50

657.8

2.177553189

2.1776

0.95

24.98

0.95

49.98

5 6

75 100

-657.8 -657.8

2.177553189 -2.177553189

4.3551 2.1776

1.90 0.95

24.93 24.98

2.85 3.80

74.91 99.89

-657.8

I.e. (formulaes): A 1 Distance 2

0

3

A2+25

4

A3+25

5

A4+25

6

A5+25

B

C

D

E

F

G

H

I

J

Points

Curve

Curve

Angle

Sum

xB

yB

xN

yN

Sandymill

0

0

0

0

0

0

0

0

657.8 -657.8

IF(ISEMPTY(C3);D2;C3)

IF(D20;360*25/(2*PI()*D2);0)

F2+E3 25*SIN(F3*PI()/180) 25*COS(F3*PI()/180) I2+G3 J2+H3

IF(ISEMPTY (C4);D3;C4)

IF(D30;360*25/(2*PI()*D3);0)

F3+E4 25*SIN(F4*PI()/180) 25*COS(F4*PI()/180) I3+G4 J3+H4

IF(ISEMPTY (C5);D4;C5)

IF(D40;360*25/(2*PI()*D4);0)

F4+E5 25*SIN(F5*PI()/180) 25*COS(F5*PI()/180) I4+G5 J4+H5

IF(ISEMPTY (C6);D5;C6)

IF(D50;360*25/(2*PI()*D5);0)

F5+E6 25*SIN(F6*PI()/180) 25*COS(F6*PI()/180) I5+G6 J5+H6

We just need to create the first 3 lines (green), then to copy and paste the third (dark green) on the following ones (yellows) until the end of the road. Then, just enter new curve in the column C (Blue) at every curve command. The same method can be used to mark remarkable points. Here, stations are in yellow. We take the STOP co-ordinates, and add +/- 150m to them: A 53 54 55 56 57

B

1275 1300 Docks 1325 1350 1375

C

D

E

F

G

H

0 -2000

0 -2000 -2000 -2000 0

1.432 0 -0.72 -0.72 -0.72

80.96 80.96 80.24 79.53 78.81

24.69 24.69 24.64 24.58 24.52

3.93 3.93 4.24 4.54 4.85

0

5

I 593.43 618.12 642.76 667.35 691.87

J 927.63 931.56 935.80 940.34 945.19

K I53+150 I53-150 I53-150 I53+150 I53+150

L J53+150 J53+150 J53-150 J53-150 J53+150

Loop: making of

© JL Coste 2004-2005

Once your layout finished, inserting rivers and other railroads is easy.

The relative error of Loop compared to original road (blue and yellow squares of Balfearn) is lower than 0,5 per thousand (+ / - 20 m for 38 km), which is a very good result. You will notice the small road between the railway shed and Sandymill, created in a second time to meet a "3 miles challenge" on the forum. This line of 4,8 km between Depot and Docks (Boot), integral part of Loop, is not any more standalone available, as the challenge had ended.

6

Loop: making of

© JL Coste 2004-2005

Essential tools. Mackoy having obviously decided to give up old types of road files rw (undoubtedly for route writing(?) ), or objects files B3D (for Boso 3d (?)), to promote csv files, Excel © or any compatible spreadsheet become in fact an essential tool for writing road and objects’ files. If csv makes these files bulkier and especially less readable, some facilities makes this choice judicious (copy and past, computing…). And, if last version 2.6.3 of BVE reads as well csv rw and B3D files, New version 3, Net © compatible don’t do it anymore. The rw and B3D commande syntax recently disappeared from its web site, signs that to develop an object or a road for BVE must be made in csv, and that the old files will have to be create in the new format. For the objects, no matter, Mackoy provide a utility on its site: - B3D > CSV converter, available to http://mackoy.cool.ne.jp/archives/objconv.zip - Structure viewer to visualize and test an object: http://mackoy.cool.ne.jp/archives/sv1_5_9.zip - Mirror, to invert an object: http://mackoy.cool.ne.jp/archives/mirror.zip

For roads, it is more complex, a manual adjustment is necessary. If you wish to create roads easily, Route Buider is made for you: http://routebuilder.bve-routes.com/ But this very powerful tool cannot read roads already created, nor create objects.

Lastly, you must have two very powerful tools: For the roads’ viewing: Track viewer: http://mackoy.cool.n E jp/archives/track1_2_5.zip And for curves, crossings and points’ building, the essential SWITCH15 created by Rüdiger Hülsmann: http://home.t-online.de/home/r.hulsman N This small list is not exhaustive, but will be enough for the moment.

7

Loop: making of

© JL Coste 2004-2005

The layout of the way.

Orders BVE for the layout of the ways are very few: -

Curve for the curves. Turn for the turns, which we did not employ. Pitch for the rises and descents. Rail, with railstart, railend, for drawing the way. Freeobj, for the use of a specific object as a rail.

I) the principal difficulty of the mapping of track with BVE is computing deviations of ways, curves, turnouts and crossings. A) In other words, how calculate distance between ways in such cases ? Let us look again our picture:

We already got that: Angle BAC in degree = 180° * AC / ( ∏ * radius of the curve).

8

Loop: making of

© JL Coste 2004-2005

That gives us:

1) ⇒ Angle BAC = 360° * AC / (2 * ∏ * radius) = 180° * AC / ( ∏ * radius).

⇒AC = (2 * ∏ * radius) * Angle AOC / 360 ° ⇒ Sin(Angle BAC) = BC/AC. ⇒BC = AC * sin(Angle BAC) = AC * sin(180° * AC/ 2 * ∏ * radius) ⇒ As 360° = 2 * ∏ in radian, we get: AC = radius * Angle AOC = 2 * radius * Angle BAC. .> ⇒BC = AC * Sin( AC / 2*radius) (in radian)

2) ⇒AngleBAC = Angle AOD, therefore Sin(Angle BAC) = Sin(Angle AOD).

⇒BC/AC = AD/AO = > BC = AD * AC/AO = (AC/2) * AC/Radius = AC*AC/(2 * Radius) = AC 2 / (2 * radius). This result is very useful, because it is possible to compute BC according to the radius very quickly and reciprocally: = > BC = AC 2 / (2 * Radius).

Radius = AC 2 / (2 * BC)

From where: Deviation = (distance covered) 2 / (2 * radius) and Radius = (distance covered) 2 / (2 * Deviation)

If the curve continues, we can easily deduce next deviation, because, don’t forget, BVE walk by steps of 25 m: New Deviation = (distance covered) 2 / (2 * radius) = (N * distance from origin) 2 / (2 * radius) = N 2 * deviation of origin. Thus calculations are simplified. For example, with a 1000 m’s radius. We got : 25 m 50 m 75 m 100 m

Deviation = (25*25)/2000 = 0.3125 m Deviation = 4 * 0,3125 = 1.25 m Deviation = 9 * 0,3125 = 2.8125 m Deviation = 16 * 0,3125 = 5 m.

And so on…

9

Loop: making of

© JL Coste 2004-2005

You may checked it easily on the following picture:

With AG = GC, First deviation: HG Second deviation: BC = > BC = 4 * HG

10

Loop: making of

© JL Coste 2004-2005

B) Another significant problem. How compute deviation when the curve is finished and the track now go straight ahead?

We have a curve AG – GC, then a line CF. We want to compute EF. We got: EF = BC + JF and CF = AG = GC = 25m. AngleAOC = AngleBIC = AngleJCF (BIC + 90° = AOC + 90°) ⇒ JF = AG * sin(AngleAOC). AngleAOC = AngleAOG + AngleGOC. = 2*(360*AG/(2 πRadius)) (in degrees) = 4 πAG/2 πRadius = 2 AG Radius. ⇒ JF = AG * sin(2 AG Radius) in radian. Here, we have 2 steps before the straight line. In general case, the total angle of deviation JCF is equal to N time elementary angle AOD. From where: JF = AG * sin(N*AG*Radius) and EF = BC + AG*sin(N*AG*Radius). In short: As long as the train turns, the distance between tracks grows in a geometrical way, then in straight line, in an arithmetic way. On curve, we got: Deviation = (distance covered) 2 / (2 * radius) Radius = (distance covered) 2 / (2 * Deviation). New Deviation = (distance covered) 2 / (2 * radius) = (N * distance from origin) 2 / (2 * radius) = N 2 * first deviation. At curve’s end: New distance = N 2 * first deviation + AG*sin(N*AG / Radius).

11

Loop: making of

© JL Coste 2004-2005

Example: A train arrives on a switch, turns along 125 m on a 1000m curve, then continues straight ahead. We get: N Distance Deviation Result 1 25 m (25*25)/2000 0.3125 m 2 50 m 4 * 0.3125 1.25 m 3 75 m 9 * 0.3125 2.125 m 4 100 m 16 * 0.3125 5 m. 5 (End of the curve) 125 m 25 * 0.3125 7.8125 m. 6 150 m 7.8125 + 10.9293 m 25*sin(5*25/1000) 7 175 m 10.9293 + 3.1168 14.04625m. 8 200 m 14.04625+ 3.1168 17.163 m

C) In fact, in BVE, any distance from a rail compared to rail (0) is always measured perpendicular to this one. If the train follows AB, the deviation is BC. If the train follows the curve AC, it is CX, the perpendicular with the tangent of circle with centre O, therefore the line continuing radius OC.

However, AO and BC are parallel. Therefore, Angle AOC = Angle BCX. And BC/CX = Cos(Angle BCY). From where: CX = BC/Cos(Angle AOC) CX = AC 2 / (2 * radius * Cos(AC/Radius).

12

Loop: making of

© JL Coste 2004-2005

Example: the junction between tracks of Balfearn and Docks,at the Sandymill’s exit. In tunnels, at the beginning of curve towards the docks, the tracks going to Balfearn are at 7.125m, with a small divergence of 0.95m every 25 m. Computation is simple: Outdistance = [ 7.125 + (N*0.95) + ((n*25) 2 / (2*radius)) ]/cos[(N*25)-12.5]/radius) Radius = 350m That gives: AC Angle BC CX 25 m 0.071 8.96785 8.9990775903 50 m 0.14 12.5964 12.72603682 75 m 0.214 18.01071 18.4322833 100 m 0.28 25.21071 26.27592055 125 m 0.357 34.196428 36.49956905 150 m 0.428 44.967857 49.43911299 175 m 0.498 57.25 65.23602734 The following sights show that the result is very satisfactory:

View from train.

13

Loop: making of

© JL Coste 2004-2005

Zooming view.

Zooming view. We can see the curve followed by train on the right. 14

Loop: making of

© JL Coste 2004-2005

Plane view.

The small distortion of double track comes from the computation’s round-offs, in particular from the gratient of the tunnel’s way. But in practice, it is invisible from the simulator.

15

Loop: making of

© JL Coste 2004-2005

II) By now, an another frequent question: How use objects and curves ? As trains must avoid natural obstacles and limit climbing as possible, railways very often use curves, which however must remain practicable at correct speeds.

A) Which are speed limits induced by curves? Speed Radius i+ i+ i+ i+ i+ i+ i+ i+ i+ (Km/h) minimal D (30) D (50) D (70) D (80) D (90) D (100) D (110) D (120) D (130) 30 82 66 59 53 51 48 46 44 42 41 40 145 118 105 94 90 86 82 79 76 73 50 227 184 164 148 140 134 128 123 118 113 60 327 266 236 212 202 193 185 177 170 163 70 445 361 321 289 275 263 251 241 231 222 80 581 472 420 378 360 343 328 315 302 290 90 735 597 531 478 455 434 416 398 382 368 100 908 738 656 590 562 536 513 492 472 454 110 1098 892 793 714 680 649 621 595 571 549 120 1307 1062 944 850 809 772 739 708 680 654 130 1534 1246 1108 997 950 906 867 831 798 767 140 1779 1446 1285 1156 1101 1051 1006 964 925 890 150 2042 1659 1475 1328 1264 1207 1154 1106 1062 1021 160 2324 1888 1678 1510 1438 1373 1313 1259 1208 1162 170 2623 2131 1895 1705 1624 1550 1483 1421 1364 1312 180 2941 2390 2124 1912 1821 1738 1662 1593 1529 1470 190 3277 2662 2367 2130 2028 1936 1852 1775 1704 1638 200 3631 2950 2622 2360 2248 2145 2052 1967 1888 1815 210 4003 3252 2891 2602 2478 2365 2263 2168 2082 2001 220 4393 3570 3173 2856 2720 2596 2483 2380 2284 2197 230 4802 3901 3468 3121 2972 2837 2714 2601 2497 2401 240 5228 4248 3776 3398 3237 3089 2955 2832 2719 2614 250 5673 4609 4097 3688 3512 3352 3207 3073 2950 2837 260 6136 4986 4432 3988 3798 3626 3468 3324 3191 3068 270 6617 5376 4779 4301 4096 3910 3740 3584 3441 3309 280 7116 5782 5140 4626 4405 4205 4022 3855 3700 3558 290 7634 6202 5513 4962 4726 4511 4315 4135 3970 3817 300 8169 6638 5900 5310 5057 4827 4617 4425 4248 4085

This table shows the minimal radii in meters without and with various values of cant in millimetres (d), for a maximum speed needed. These values are those retained by SNCF in France, by taking in account of the insufficiency of cant (I) compatible with the passengers’ comfort: - at full speed without pendulation, - and in case of stop in curve. The use is simple: For a speed limit (green), table give curves’ radius without cant (yellow) then according to various ascending values of cant (blue). For example, speed limit in Sandymill is 25 miles/h, approximately 40 km/h. So, minimal curve’s radius is about 145 m, as there is no cant. With 25m length switches, and 3.8m between tracks, we got a radius of: 25 ^2 / 3,8 = 164.47m, which is fully compatible with the speed limit. However, we retained 50m length’s switches (radius of 657m) for esthetism and standardisation of turnouts. On the other hand, the speed limit at Moorland Junction was carried up to 40 miles/h, near 64 km/h., which remains compatible with switches and safety.

16

Loop: making of

© JL Coste 2004-2005

B) Segmentation 1) For the drawing of track, BVE uses the object affected to Rail. If we always use the same object for straight and curves, these last will be drawned on screen as 25m side’s polygons. That polygonal aspect can be considerably smoothed by increasing the number of object’s segments. In fact, BVE cannot draw a circle. But, if we consider a circle as a kind of polygon made up with an infinity of sides, it is possible to obtain a very realistic aspect with the screen, while not forgetting that, more faces an object has, more it is bulky and difficult to be handle by BVE. We always should choose a realistic compromise.

If traditional BVE uses VGA, (640*480 pixels), new version 4, BVE Net, makes it possible to go up until the 1024*768 pixels. And nothing prevents from considering higher resolutions thereafter. So we must envisage a correct visual effect, therefore a high resolution by now.

Which is the radius of curve from which the use of a right rail will not be seen on screen? It is what we will try to calculate, starting from some examples of curves created with Switch15, visualized with Track Viewer while zoomingt to the maximum to crush the perspective. Remember, all objects created by Switch15 have a segmentation 5 per 25 m, i.e. are composed of polygons of 5 m side.

223 m radius’ curve

17

Loop: making of

© JL Coste 2004-2005

300 m radius’ curve These two images show well the polygonal structure of the rails in such small radius, structure becoming almost invisible when the radius becomes higher than 600m:

657 m radii turnouts and curves. 18

Loop: making of

© JL Coste 2004-2005

2) Where are the needs and limits of segmentation of rails in curves ? Look again at our graph:

Real curve is Arc AC. The drawn segment is AC. So, visual error is segment DG. It is very simple. AG = GC = 25 m and AngleHAG = AngleGAD = Angle BAC/2. ⇒ AD = AH and HG = DG = BC/4. In the case of non segmentation, DG = 1/4 of deviation BC. In the case of a segmentation 5, (as with SWITCH15), the total deviation is equal to: BC = AC 2 / (2 * Radius). And the deviation of each segment is equal to, (like N = 5): [ AC 2 / (2 * Radius) ]/N 2 = [ AC 2 / (2 * Radius) ]/25 = AC 2 / (50 * Radius) DG = [ AC 2 / (50 * Radius) ]/4 = AC 2 / (200 * Radius) For a radius of 200m, one thus has: Visual error = 625/40000 = 0,015625 m = 15 cm. With a width of rail of 8 cm, it is very acceptable (= 1 pixel on screen ) Let us calculate the theoretical limit of no segmentation: N = 1 ⇒ DG = AC 2 / (8 * Radius) ⇒ Radius = 625/(8 * 0,015625) = 5000 m. So, below 5000m, we must employ a segmentation of rails. N = 3 ⇒ DG = AC 2 / (36 * Radius) ⇒ Radius = 625/(36 * 0.015625) = 1111 m. Radius > 5000 m Between 5000 m and 1200 m Between 1200 m and 200 m < 200 m

Segmentation of the rails No segmentation Segmentation 3 Segmentation 5 Segmentation 10 19

Loop: making of

© JL Coste 2004-2005

C) Curves building. With BVE,, it is possible to assign any object to Rail. It appears easy to create a curved rail with SWITCH15, for example, then to use it in place of the standard straigth rail. There is however a very significant point to note: When train turns, whole objects turn around it. And curved rail too. That one must follow Arc AC when train follows the segment AC, therefore while turning. But, when we create this curved rail, it is refered to segment BC. So, it is necessary to indicate to SWITCH15 that we want an object "turned by itself", i.e. created refered to the segment AC.

Non turned object

Turned object

Red line is straight rail.

So, it is more simple to use the option "turned by itself" for the curved rails used by Rail or Freeobj. With objects likes switches, they are always created without this option.So they must be turned if need, by a swing angle equal to half the angle of deviation, and opposite direction of it. (It’s angle HAG).

20

Loop: making of

© JL Coste 2004-2005

III) Tournouts SWITCH15 makes it possible to realize, in StandardGauge, all kind of switches, including curved ones. However, some rules are to be respected if we want good results quickly.

A) There are two points very significant to understand: 1) All the objects used by BVE are placed on co-ordinates indicated by the command: Freeobj(Rail, Index of the object, Position X (Right-hand side, left), Position Y (Altitude), swing Angle (in degrees)). The rotation of the object is always carried out at the beginning of the rail. I.e. to + 0 m of the beginning of the rail. 2) BVE draws railroad by steps of 25 m, and whole landscape from the horizon located between 200 and 600m ahead, up to 25 m behind of the screen. All the other elements, are either unobtrusive (behind), or not drawn yet. So, a more than 25 m length object must be drawn until maximum of +25 m, with negative coordinates. Example: A 50 m length object must be drawn of -25m to +25 m, under penalty of disappearing brutally when the train reech +25 m.

B) Now switches: the swing angle. Switches difficulty came from they must be positioned by hand, by taking account of two factors, the swing angle and the shift or Offset .That one is the consequency of two factors, swing angle and object’s length. That can appear complicated, but it is actually rather simple. Two possibilities: 1) Switch is cross on straight line. It’s the same as straight rail. Swing angle is either null (shunting travelled in the normal direction), or equal to 180° (shunting reversed). And there is no offset. 2)

Switch is traversed on branch track. It’s like a curve, but as switch was created by SWITCH15, it "is not turned by itself". So, we must compute swing angle whatever is switch’s length, whether it is curved or not. The only important thing is the curve followed by the train , i.e. its radius and its length. Don’t forget, the rotation’s axis is at +0m. Everything depends on the object’s length. This one cannot exceed +25m, under penalty of disappearing soudainly on screen after few meters. a) So, a 25m shunting will go from 0 to +25m,a 50m one from -25 to +25 m,a 75m one from -50m to +25 m, and so on As we saw with curves, the swing angle is equal to half of deviation angle of, but in opposite direction. The swing angle is the angle necessary to turn the object correctly to +12,5m. Angle = (-) 180*12,5/( π * radius) For an object of 25 m, the angle is thus equal to half of the swing angle as for a simple curve, and direction opposed to the angle of deviation.

21

Loop: making of

© JL Coste 2004-2005

Example: Distance between centres = 3,8m ⇒R = 25 2 / 3,8 = 164,474 ⇒Angle = 180 * 12,5/( Π * R) = 4,3545° Turn on the right, angle = (-) 4,3545; turn on the left, angle = (+) 4,354. +/- 180° if reversed. b) For a longer object, it is necessary to take account of all parts located between –XX and 0m. We have a swing angle equal to the angle of deviation, but in opposed direction of this one (because we are before the point B), and this by every segment of 25 m. So, for a 50m switch, we got: Part between 0 and +25 m: as above: α1= − 1/2 angle of deviation. Part between -25 and 0 m: α2 = + 1 angle of deviation. Sum = α = α1+ α2 = −[180∗12,5/ ( Π * R) ] + [180∗25/ ( Π * R) ] = + [180∗12.5/ ( Π * R) ], same direction that angle of deviation. Example: Distance between tracks = 3,8m ⇒R = 50 2 / 3,8 = 657,89 ⇒Angle = 180 * 12,5/( Π * R) = 1,088° Turn on right, angle = (+) 1,088°; turn on left, angle = (-) 1,088°. +/- 180° if reversed. c) Again with 75 m switch : Swing angle from -50 to -25 +swing angle from -25 to 0 + swing angle from 0 to +12,5m = (+) angle of deviation + (+) angle of deviation + (-) ½ angle of deviation = (+)1½ angle of deviation. (turn on right) Examples: Length 75 m, Radius 1000 m, direct drive: α= 180 * (75-12.5)/( Π * R) = 3,58°. (+) on right, (-) on left. Inverse drive: length before the rotate’s axe = 25 m α= 180 * (25-12.5)/( Π * R) = 0,716 + 180 = 180,716° Radius 1500m, opposite direction: α = 0.477 +180 = 180.477°. And so on. 3) Now computing offset is easy: For a shunting of 25m, rotation axel is carried out on point D. There is no offset, since the object is positioned according to AC. For an object of more than 25m length, the beginning of the object is shifted of an offset equivalent to BC, in the opposite direction of the curve. For 50 m, offset = 25^2/(2*R) ⇒ 625/(2*657.89) = 0,475m. For 75m, the offset depends there still on the direction of the object: - direct driveirection: BC = 50^2/(2*R) - reverse drive: BC = 25^2/(2*R). For 1000m, direct drive ⇒ BC = 1,25m; reverse drive ⇒ BC = 0,3125m Examples: DOCKS’ Switches. There are two 1000m radius turnoust, right curved, direct drive: α = - 3,58°, offset = - 1,25 m; then a 1500m radius one, left curved, reverse drive: α = 180,419°, offset = 0.208 m Lastly, a last 1000m radius turnout, left curved, reverse drive: α = 180,477°, offset = 0,3125 m

22

Loop: making of

© JL Coste 2004-2005

1000m radius

23

Loop: making of

© JL Coste 2004-2005

1500 m radius, reversed

1000m radius, reversed. You will find a small road demonstration on the site: Switches.rw. 24

Loop: making of

© JL Coste 2004-2005

C More complex stations: Consequently, as creating and using of switches had being solved, creating a large junction station between several maine lines, with large yards seems to me to be interresting: Moorland Junction. It should be quoted that the number of rail available was limited to 8 (rail(0… 7)), when I create Loop.It had been a true challenge.

The adopted soluce was double: - use of double and quadruple rails, double sleeps, Y tournouts… - optimization of tracks (thanks to Excel). The result like to me : a large junction station of 3 different lines, including two double track.main ones By using objects like double rails, it was possible to obtain 11 tracks in parallel, with a certain complexity, and trains in parking.

25

Loop: making of

© JL Coste 2004-2005

The station entrance is as a dream of child playing with models – I had, somewhere, forgot to grow up: junction between the two double tracks main lines, doubles sleeps, Y tournout, small engine shed, …. Currently, with 16 rails available, everything become possible, including true marshalling yards.

26

Loop: making of

© JL Coste 2004-2005

D) The sound. One of the most characteristic sounds of train is frog sound on switches, at least those with standard ones. BVE starts playing sound file when an another rail reach Rail(0)i. When we use an object instead of rail (switch),we must teach BVE we want to hear that sound. It is in practice rather easy. Just use an other rail, and make him leave or join or cross Rail(0) at the good place. That’s all. With Track Viewer, it’s very easy to check the good place of junction (frog), before testing sound with BVE.

When the result is goog enought, just use invisible (null) rail, and that’s all.

By the same way, crossings and double sleeps’ frogs can be put at right place.

27

Loop: making of

© JL Coste 2004-2005

IV) Last point: size of the objects created with Switch15. During the loading of a road, BVE starts by reading all the files objects before translating them into files directly usable placed in memory. This time of loading and compilation is narrowly dependent: - number of objects, - and of their size. The less powerful the computer used is, plus this time is long. In addition, more the size of the files objects is significant, more they take of place in memory. It is thus significant to optimize these files, and thus to reduce their size if possible. Long comments, copyrights, etc, multiplied by the number of files, can slow down in a significant way a a little old machine, without improving the final result. Loop profited from this optimization of the objects, making its loading shorter of approximately 30%, compared to the files objects of origin. That is especially true with the files created with Swich15. Indeed, this last uses a segmentation 5 for all the rails, including straigths ones. What is naturally useless, but the file lengthens and slows down the computer of as much. It is an ungrateful, long and tiresome work, but the owners of an old machine will thank you. In spite of the significant number of objects, Loop remains perfectly at ease with a PII 350MHz.

28

Loop: making of

© JL Coste 2004-2005

IV Others uses. Using any kind of object as Rail, we can create easily roads and rivers. But, we can also create some landscape very realistic. For example, lets we build some Dutch, a grass one, 30m deep, and 50m wide.

While using an invisible rail, you can now build embankment and cutting.

29

Loop: making of

© JL Coste 2004-2005

Detail of Building

30

Loop: making of

© JL Coste 2004-2005

BVE UTILITIES ©J.L.Coste 2005

Summary

A)

Curve Deviation :

Deviation of a curve from a straigth line = (distance)2 / (2 * radius). Curve Radius = (distance )2 / (2 * Deviation). New deviation = N2 * first deviation. Deviation of a straigth line from a curve = Deviation of a curve from a straigth line / cos(distance/ radius).

B)

At the curve’s end :

Deviation = N2 * first deviation + (last deviation * sin(N*distance / Radius)).

C)

Switches:

Direct : Angle = 180 * (length of switch – 12.5) / (π * radius). Offset = (length of switch – 25) 2 / (2 * radius).

Reverse : Angle = 180 * 12.5 / (π * radius). Offset = 25 2 / (2 * radius) only if length of switch > 25 m.

31