Wow, very neat and thurougly done!
As many of you asked me to teach them "how to make hovering with only thrusters" I decided to write this, that takes too much time ingame.
As many others have made some tutorial I will make this one a little different more based on how to define a problem and the ways I got to resolve it .
(sorry in advance for my relative english, hoping it will help you a bit .)
* RED lines are updates
1.Definition of the project
- a spaceship
- the lesser props and evermore thrusters I can :4 to stabilise 2 for yaw (3 and 1 for yaw would have been perfect, but too hard for tweaking)
-I don t want to make vectorial équations of moment of inertia (that s seems too complicated for relative weights and such precise valors in the game engine)
- a fun flying: and a stardard way spaceship in no gravity,I want it to stabilise in hight, lateral movements and speed while hovering.
- numpad to move
- lag free
optionnal :
- working with LS,RD2,spacebuild,gas system ... ("realistic" spaceship)
- following hights of land
2.Definition of how to make it
So i want thrusters to compensate its mass : weight X gravity.
It looks like a chopper ...
So I will do it only by empirism and tweaking and with such way anybody that didn't studied (yet) vectors and physics could understand.
Gmod offers me several instruments : gyroscope, Gps, Speedometer and ranger.
All seems ok to make it, let s see how a chopper flies ... (vast subject)
Google search is you friend !
(it s in french but easy to understand)
stationnary flight
going into movement
moving (we will ignore drag for our subject)
3.Starting the project
i want a 4X4 plate for my 4 thrusters just look at those picts they 're saying all
starting from the left : phx plastic, phx metal, tile thin and spacebuild
PHX are usefull but definitely the metal ones are scarying :S
my choice spacebuild one it' s a bit thickier with lesser faces.
For placing thrusters 2 choices :
I ll do the left one (personal taste)
3.1 Horizontal stabilisation
- input gyroscope (displaying Pitch Roll and Yaw)
- outputs (4) thrusters: 2 for roll, 2 for pitch (1 multiplicator)
- an expression gate to connect them and 2 delta rectified gates
My way to simplify problems : making occasional contraptions
I 'll start with Pitch (Front Rear)
I ve putted my gyro (caution it must be at 0.0.0 and 180° -180° facing the right direction ... plenty good tutorials are already showing how to do it ...) and 2 standard hoverbals on the roll axis so the plate will only move on the Pitch one (I will remove them when it will be stabilised on this axis)
as in classical way of doing this, we ll get a standart delta stabilised expression
ThrF= multiplicator*GyrP + multiplicator*DeltaP
ThrB= -(multiplicator*GyrP + multiplicator*DeltaP)
NOTES :
- I prefer putting multiplicators in expression so I can look all time the valors and it will be easy to tweak when it will become complicated
- multiplicators are function of the weight of the plate: just put a medium valor as 300u weight for it
(very important i forget to mention : look at basic weight of each thruster when spawned ... taking one of 1u weight or taking other with 200 can definitely put you in the black hole of uncomprehension) My way is to consider weight thruster as a standard multiplicator ... so i choose the thrusters like in the pict (around 10 u weight spawned as i remember and never weight them , just for not forgetting something when i will take it several month later ...)
- stay balancedut all your gates gyro and all symetrical (smartsnap is essential)
- I've putted GMod in windowed mode (ALT-TAB is your friend) with a text editor opened to remove garbage of the expression (a text file in Steam\steamapps\yourname\garrysmod\garrysmod\data\ ExpressionGate)
Pitch is done -> remove the hoverballs and put 2 thrusters instead
and another temporary hoverbal centered
same way you now have
ThrL= multiplicator*GyrR + multiplicator*DeltaR
ThrR= -(multiplicator*GyrR + multiplicator*DeltaR)
ok horizontal stab is done
3.2 Vertical stabilisation
I need the plate to keep constant hight defined by numpad + -
- input : GpsZ Keypad+ Keypad-
- output : 4 thrusters
Again I make a Temporary contraption to simplify the problem.
My problem actually is : I need to stab the high with same thrusters working for horizontal -->I ll put a temporary thruster instead of the centered hoverball
classic expression : difference of altitude =(desired hight - actual hight)*delta to make it smooth (only working up because down is made by gravity and I don t want thrusters push the plate down)
in final we ll have something like
ThrF= multiplicator*GyrP + multiplicator*DeltaP
ThrB= -(multiplicator*GyrP + multiplicator*DeltaP)
ThrL= multiplicator*GyrR + multiplicator*DeltaR
ThrR= -(multiplicator*GyrR + multiplicator*DeltaR)
DiffZ = [(Numpad+)+(Numpad-)]-GPSZ
ThrC = multiplicator*DiffZ - multiplicator*$DiffZ
3.3 Vertical stabilisation(2)adding movement
and again to simplify tweaking --> new contraption
4 more temporary thrusters for tweaking valors for altitude
and 4 more numpad entries to make it moving (K4 K2 K8 K6)
I ve putted 0-500 for the numpad in my case so when you press one of these keys thrustpower will get 500 more and desiquilibrate the plate as a chopper doing.
when I get it stable as I wished, I tranform the expression to :
ThrR = -(GyrR + multiplicator*DeltR)+multiplicator*DiffZ - multiplicator*DeltZ + K4
ThrL = GyrR + multiplicator*DeltR+multiplicator*DiffZ - multiplicator*DeltZ +K6
ThrF = -(GyrP + multiplicator*DeltP)+multiplicator*DiffZ - multiplicator*DeltZ +K2
ThrB = GyrP + multiplicator*DeltP+multiplicator*DiffZ - multiplicator*DeltZ +K8
as I still have the 4 temporary thrusters ckeck the valors for inputs but will keep them for later use.
ok, now we have a plate moving in 4 directions but only strafing: let's add new Yaw thruster
3.4 Adding Yaw rotation
As in a chopper I add a thruster at the "rear" parallel to Roll axis
wired on K4 and K6
now the plate is strafing and turning
but I want it stabilize itself turning and strafing
3.5 Speed Stabilization
3.5.1 Yaw
- input :speedometer (X velocity, Y velocity, Rotation velocity on Z axis)
- output :5 thrusters (4 + 1 yaw)
simple expression :
Thruster for yaw = multiplicator * rotational velocity + multiplicator *keypad inputs
ThrY = VY multiplicator * + multiplicator *K4 - multiplicator *K6
3.5.2 X and Y
I want the thrusters made for stab to compensate horizontal velocity
Problem : how to make forces compensate in a perpendicular way ?
Time to open a reflective beer
the plate is moving if Xvelocity or Yvelocity or Yaw velocity is not equal to zero ... but the plate is moving when it is not horizontal --> so Zvelocity must be added or substracted from VX and VY ...
that s the moment when empirism become difficult , it s easier to resolve it with vectors ... anyway let s do it by feeling like Luke Skywalker.
You remember I 've kept the 4 temp thrusters don t you ?
I use them to tweak the expression
I started at first with condidtion : if it s moving or having some angle from horizontal then add force to counter act by the opposite thruster.
SX>0 | GyrR < 0 -> TL=TL+(multiplicator *SX+SZ+multiplicator *DeltSX+multiplicator DeltSZ);
SX<0 | GyrR > 0 -> TR=TR-(multiplicator *SX+SZ+multiplicator *DeltSX+multiplicator *DeltSZ);
SY>0 | GyrP < 0 -> TB=TB+(multiplicator *SY+SZ+multiplicator *DeltSY+multiplicator *DeltSZ);
SY<0 | GyrP > 0 -> TF=TF-(multiplicator *SY+SZ+multiplicator *DeltSY+multiplicator *DeltSZ);
problem : Seems the delta Z conflicting with other deltaZ used to stabilize altitude , removing it and no more problem ... also realised that angle is not necessary because Zvelocity is relative to it ... lucky LUKE
incorporate in the 4 normal thrusters:
SX<0 -> ThrL=ThrL-(-multiplicator*SX+multiplicator*SZ-multiplicator*$SX);
SX>0 -> ThrR=ThrR+(-multiplicator*SX+multiplicator*SZ-multiplicator*$SX);
SY<0 -> ThrB=ThrB+SZ-(-multiplicator*SY+SZ-multiplicator*$SY);
SY>0 -> ThrF=ThrF+(-multiplicator*SY+multiplicator*SZ-multiplicator*$SY);
also added something to make it stop rotating
TY = multiplicator*(VY *multiplicator - K4*multiplicator + K6*multiplicator)
kewl the plate is starting to act like a ship
3.6 Boost
Now as I am near to a chopper fly I want to do as "Apocalypse Now" pilots
I want the plate taking extreme angle to get major speed but I don t want to add new numpad entries : I will use 3 keypad entries already used
so if 3 kepayd are pressed than boost a thruster
K4+K6+K8>Valor(of your K entries)-> K8=K8*multiplicator;
K4+K6+K2>Valor(of your K entries)-> K2=K2*multiplicator;
Men ! we have the Hover gravity handling made
3.7 Space Drive
I want a normal ship handling in no gravity ...
Only problem : with no gravity the rotation axis for yaw doesnt suit me and I need longitudinal thrust because I don t have any thruster pushing me straight front ...
3.7.1 Check and incorporate nogravity
input : Probe
on spacebuild maps earth shows "100" on other planets can vary from 60 to 130
my way if there is gravity multiply all my valors by 100/G
with conditional statement avoiding zero division (updated)
making another expression this time with both way thrusters for Roll and Pitch , one more thruster for Yaw and new ones (fusion ones) for pushing
3.7.2 Nogravity expression
input: speedometer rotation velocities, probe
TRICK: my best way to do it change props attributes to metal untoggle gravity better than going into space to test each time
nothing to comment here, it s just an expression to make roll and pitch the ship and make it stop doing it plenty good tutorials have been made on it yet.
just this :if keys are pressed ignore rotation speed:
K8!=0 | K2!=0 -> VP=0;
K4!=0 | K6!=0 -> VR=0;
the expression is simpleGe == 0 -> ThrF =multiplicator*(K2-K8)-*multiplicator*SZ-*multiplicator*VP;
Ge == 0 -> ThrB =-*multiplicator*(K2-K8)-*multiplicator*SZ+*multiplicator*VP;
Ge == 0 -> ThrL = multiplicator*(K6-K4)-*multiplicator*SZ+*multiplicator*VR;
Ge == 0 -> ThrR = multiplicator*(K4-K6)-*multiplicator*SZ-*multiplicator*VR;
same for yaw
Ge == 0 -> TY= multiplicator*VY -multiplicator* SX;
Ge == 0 -> TYF = -multiplicator*VY -multiplicator*SX;
the new one for pushusing + - numpad inputs)
Ge == 0 -> ThrP= multiplicator*KP + multiplicator*KM;
3.7.3 Entering Gravity
as the source engine is done the Zaltitude is "special"
so you need to reset altitude each time you enter a planet
new numpad input K5 teaching the destination is equal to gps
oh man ! you done it ?
3.8 Last Tweaks
3.8.1(KEEPING THIS CHAPTER TO SHOW ERRORS and improves)
as I ve putted more thrusters I ll add them to the basic hovering to "improve" the flight speed and turning :basic addition
N@spacedrive
I@GyrR GyrP DeltR DeltP GpsZ K4 K6 K8 K2 KP KM SY SX SZ VY VP VR Ge K5
O@ThrF ThrB ThrL ThrR TY TYF ThrP SZ DestZ
TY=0
/// Altitude definition
K5==1 -> DestZ = GpsZ;
DestZ = (DestZ + KP + KM)
DiffZ = (DestZ - GpsZ)
///YAW
TY = 10*(VY /0.5 - K4/2 + K6/2)*Ge/Ge
TYF = -10*(VY /0.5 - K4/2 + K6/2)*Ge/Ge
/// BOOST
K4+K6+K8>1000 -> K8=K8*3;
K4+K6+K2>1000 -> K2=K2*3;
///Rear Thrust
ThrP = 100*K8
/// THRUSTERS i take first line to show you ----------------------->
///ThrR = [[gravity valor]] Ge/(Ge*1.2)*(-([[roll influence]]100*GyrR +[[smothing ///roll]]400*DeltR)+ [[altitude influence]]100*DiffZ -[[smoothing influence]]600*$GpsZ ///+[[numpad influence]]8* K4)
/// This to avoid negative valors hovering because thrusters are bidirectional
ThrR<0 & KM==0 ->ThrR=0;
ThrR = Ge/(Ge*1.2)*(-(100*GyrR +400*DeltR)+ 100*DiffZ -600*$GpsZ +8* K4)
ThrR<0 & KM==0 ->ThrR=0;
ThrL = Ge/(Ge*1.2)*(100*GyrR + 400*DeltR+ 100*DiffZ - 600*$GpsZ +8*K6)
ThrL<0 & KM==0 ->ThrL=0;
ThrF = Ge/(Ge*1.2)*(-(100*GyrP + 600*DeltP)+ 100*DiffZ - 600*$GpsZ +8*K2)
ThrF<0 & KM==0 ->ThrF=0;
ThrB = Ge/(Ge*1.2)*(100*GyrP + 600*DeltP+ 100*DiffZ - 600*$GpsZ +8*K8)
ThrB<0 & KM==0 ->ThrB=0;
/// HORIZONTAL SPEED STABILISATION
SX<0 -> ThrL=Ge/Ge*(ThrL-(-5*SX+0.5*SZ-8*$SX+0*$SZ));
SX>0 -> ThrR=Ge/Ge*(ThrR+(-5*SX+0.5*SZ-8*$SX+0*$SZ));
SY<0 -> ThrB=Ge/Ge*(ThrB+SZ-(-5*SY+SZ-8*$SY+0*$SZ));
SY>0 -> ThrF=Ge/Ge*(ThrF+(-5*SY+0.5*SZ-8*$SY+0*$SZ));
/// IGNORING VALORS FOR NOGRAVITY KEY PRESSED
K8!=0 | K2!=0 -> VP=0;
K4!=0 | K6!=0 -> VR=0;
/// NOGRAVITY DRIVING
///the 4 thrusters
Ge == 0 -> ThrF =3*(K2-K8)-10*SZ-30*VP;
Ge == 0 -> ThrB =-0.1*(K2-K8)-10*SZ+30*VP;
Ge == 0 -> ThrL = 10*(K6-K4)-10*SZ+40*VR;
Ge == 0 -> ThrR = 10*(K4-K6)-10*SZ-40*VR;
/// Rear Thruster
Ge == 0 -> ThrP= 1000*KP + 1000*KM;
/// Yaw Thrusters
Ge == 0 -> TY= 5*VY -30* SX;
Ge == 0 -> TYF = -20*VY -10*SX;
IF YOU ARE ON STANDARD MAP NOT SPACEBUILD ADD
"Ge=100" because on usual map Ge=0 so hovermode is ignored but not weight ...
3.9 Internet is awesome
Nothing is so good than having a clear vision of other people sharing same passion, and I never learn so much than making errors.
WWW is excellent and evermore this forum !
after posting this guide, several nice guys (cf:read the posts) pointed me toward a stupidity I made : wanting to avoid another conditional string I've multiplied Ge*(1/Ge*1.2) just to get the strings making zero ...
making my multiplicator a constant value ...
"Still long way you have to get the FORCE, stupid blind Padawan" could say someone ...
I was totally wrong ! (the funny thing is that I didn't get the constant value in feeling its handling prolly cause of difference of weight ... )
so I remade the expression changing the conditionnal statement and lowering the char names of the variables to avoid exceeding 92 chars per line.
and correcting G valor now variable 100/Ge (only active when G not equal to zero)
now it s a bit more tricky to tweak but more compact.
N@spacedrive
I@GR GP DR DP GZ K4 K6 K8 K2 KP KM SY SX SZ VY VP VR Ge K5
O@F B L R TY TYF TP SZ DZ
TY=0, T1=0, A=0
K5==1 -> DZ = GZ;
DZ = (DZ + KP + KM)
DiffZ = (DZ - GZ)
G= 100/Ge
Ge == 0 ? TP= 1000*KP + 1000*KM : TP = 100*K8
Ge == 0 ? TY= 5*VY -30* SX : TY = 10*(VY /0.5 - K4/2 + K6/2)
Ge == 0 ? TYF = -20*VY -10*SX : TYF = -10*(VY /0.5 - K4/2 + K6/2)
K4+K6+K8>1000 -> K8=K8*3,T1=1;
K4+K6+K2>1000 -> K2=K2*3,T1=1;
K8!=0 | K2!=0 -> VP=0;
K4!=0 | K6!=0 -> VR=0;
Ge == 0 ? R = 10*(K4-K6)-10*SZ-40*VR : R = G*(-(100*GR +400*DR)+ 100*DiffZ -600*$GZ +8* K4)
SX>0 & Ge != 0 -> R=(R+(-5*SX+0.5*SZ-8*$SX+0*$SZ));
R<0 & KM==0 & Ge !=0 ->R=0;
Ge == 0 ? L = 10*(K6-K4)-10*SZ+40*VR : L = G*(100*GR + 400*DR+ 100*DiffZ - 600*$GZ +8*K6)
SX<0 & Ge != 0 -> L=(L-(-5*SX+0.5*SZ-8*$SX+0*$SZ));
L<0 & KM==0 & Ge !=0 ->L=0;
Ge == 0 ? F =3*(K2-K8)-10*SZ-30*VP : F = G*(-(100*GP + 600*DP)+ 100*DiffZ - 600*$GZ +8*K2)
SY>0 & Ge != 0 -> F=(F+(-5*SY+0.5*SZ-8*$SY+0*$SZ));
F<0 & KM==0 & Ge !=0 ->F=0;
Ge == 0 ? B =-0.1*(K2-K8)-10*SZ+30*VP : B = G*(100*GP + 600*DP+ 100*DiffZ - 600*$GZ +8*K8)
SY<0 & Ge != 0 -> B=(B+SZ-(-5*SY+SZ-8*$SY+0*$SZ));
B<0 & KM==0 & Ge !=0 ->B=0;
4.0 Advanced Dupe
I give you the file but you will need spacebuild2 gamemode, rd2, gas,cds,ls2, spacebuild model (i don t remember if normal or alpha pack...) well all the things needed to fly in spacebuild ... and a energy station to fill it
expression:(updated)
YourFileHost.com - Free hosting for ALL your files S8
duplication:(updated)
YourFileHost.com - Free hosting for ALL your files S6
5.0 Enjoy
Bernie s speedster - bernie's speedster.wmv @ ZippyVideos.com - Free Video Webhosting
happy modding, see you around
Thanks for your posts ... I'll keep this post updated for each improvement.
Last edited by Bernie; 04-13-2008 at 06:19 AM. Reason: update
Wow, very neat and thurougly done!
Most noobs asking "how I hover witout hoverbballz" will have their head explode when they read this.
I can't tell what the heck's going on, but I like it.
[SIZE="1"]Fatal_Exception: "Have patch and parrot, will sail."[/SIZE]
[IMG]http://i30.tinypic.com/v81u87.png[/IMG] (and for that matter, so do giant signatures)
Hmm, I'm curious you say "G/G*1.2" ... but isn't that "1.2"?
wow master Syranide interessed by my post ... I should get a blush...
God Bless you man ! making wiremod (I wouldn t bought Gmod without it !)
Definetely if you want to be a God, you will be my personal one ! lol
Concerning the gravity thing as I made it in empiric way and playing on a straight server with noclip and such , i must admit i had to go testing myself in god mode to fix it ... anyway
I had to get inferior proportionnal valors cause multiplying as you were saying was making the inverse of what I was thinking about ...
I searched everywhere what could represent 100, 130 ... of a gravity ( at first I thought about %) but I am persuaded it s inverse % or something dealing with, so I tryied it inverse --> 1/ gravity * multiplicator
example : if i have 80 gravity (means light) my multiply valors = are lowered down , seems normal in feeling , less weight = lesser power to use
I may be wrong and surely my expression could be simplified and minimised to the strict minimum ... but that shows the limits by experiencing without knowing technically how the game physic is working : in fact you can test it with your own, to know if it s good or bad for your personal conception
(art intrusion I stop, people dont like it XD) , and a proof that you can ever make something if you feel it, even beeing a newcommer.
Thats why Wiremod and Gmod are so great !
hmm i went away of the G subject but it is ...
cheers
PS: thanks Greymario , should we say mass = acceleration of gravity (long time from school but in my head still 9.81) multiplicated by weight and then we have power of vector down and you're right that means tweak normal multiplicator is 1.2 for 100 gravity ...1*1.2
Last edited by Bernie; 03-30-2008 at 12:40 PM.
I was impressed how nice it works, nearly spazzin-less hovering.
And I was quite ashamed, as I thought my try on this was good.. but it was a mess against this.
It actually really works better if you multiply in the expression, then using the thrusters multiply - now my platform won't spazz around that much anymore.
But I can't really rebuild your height control. It's somehow strange.
First you have some thruster, then you have not only DiffZ but also DestZ - later on you use both with the pitch and roll to get your height control - but at the end you use DiffZ and GpsZ, what makes my platform like going crazy.
And your first like DiffZ - $DiffZ makes absolutly no sense to me. I don't really get what this $ does anyways. Does it change anything?
Anyways, it's great. But I don't understand everything. (mostly this height thing)
Hi, Raptor ... wow I thought I made it a bit long, and you reached the end and you posted a message, the FORCE is already with you !
Hovering with Thrusters is NOT the easy waysorry, but you are close to get it.
and I dont want to depress all the ones that are thinking "men i got the idea !" after idea there is till 98% to do ... sorry to say and maybe the harder work to do ... like debugging but thinking TWEAK instead DEBUG could change your life
Have you ever thought about flight simulator game? I mean chopper fly...
25 years old ...we still dream onto how dreaming ...
My prefered was the 98 one before that they went in NFS way (hoverballs)
and some of magic was broken .
Just few words and I will stop.
Do you know something more unstable than helicopter, made by human to get in ?
Who invented it ? Leonardo Da Vinci
Can you imagine a guy not so far away: ... 1500 ...projecting Luke Skywalker Spacecraft ?
in a world where earth was a phxplate X*X ,nombrilist center of universe .
the same idea he had 608 years ago ... same idea identical but only difference is we have tools to make it , virtually ok
(in a more realistic way ? maybe not, and who cares ...)
we need 30k years for next neuron to make luke rising his ship just pressing on numpad + instead of loosing plenty energy just to take tons of metal out of the lake (and grandfa Yoda saying "see... what you want: you can do")
Is Yoda a 70's representation of confucius ?
ok i stop joking but it was fun .
OK RAPTOR it s for you now
your ship should not spazz at all ! zero! nada! like a hoverball one !
just with human error making it warm like a living thing (remember Fred ?)
for height control take care of the way that are oriented Gyro and Speedo if you messed up one axis, you ll have to do all process again ... and then ...good luck ... just get the last good one you saved not to loose too much time...
for altitude nothing changed since the start
/// Altitude definition
DestZ = (DestZ + KP + KM)
Dest for final destination of altitude
DiffZ = (DestZ - GpsZ)
and Diff for difference from what we want to reach and what we have at this time
Ok i agree with you : I ve not been very clear on Delta ...
and you can write $verticalspeed in expression instead of passing by a delta gate ... (be carefull for angular valors you will need to make some angnorm with changing sign ... I prefered using 2 gates ... lesser complication)
The z is straight line speed not angular so delta is normal -> just add $ before value.
Syranide had made some changes :you can make a ~ also but don t have tested it yet so look at :http://www.wiremod.com/439-expressio...mentation.html
(expression gate bible)
And lol i just saw another post mystifying it , XD :http://www.wiremod.com/4670-rectifyi...atic-gate.html
(reminds me to tell the guy to look at this post)
delta just tell what is changed in the variable since past loop ... but I think it funny to mystify a variable ... like an agnostic scynism, like I like XD.
Mmm ok , it s late here and i am starting to be too much expressionnist ...
Don t hesitate to post a word if you have other troubles , I will try to stay in a scientific way to resolve it .
have good fun
bye
Last edited by Bernie; 03-30-2008 at 07:58 PM.
Well, my first attempt actually balanced my platform on pitch, roll, yaw and height, while I controlled my height with a thruster in the middle. It was triggered by key W and S, and I made it so when you don't press something, it makes the current GpsZ TargetZ and then it hovers, with help of the ~W and ~S, so it will only be triggered once you don't press something, and not all the time, so it won't constantly chance TargetZ.
But to make the height in the pitch and roll thrusters is far more effective I guess.
I'll try it again, but, I gotta go to driving school in some time, so not today.
Anyways, I thought about using vector thrusters. 'Cause, actually, wouldn't it be the easiest way to just specifiy the pos of your ship in a 3D room, with 3 coordinates?
But I don't really know how to use those damn VThrusters (I know what vectors are and what you do with them, and how you calculate with them), and they're giving me some error messages anyways.
Edit: What I actually wanted to say was "Ah, the $ means delta!", because in the documentation it's just an empty space and I already wondered what the delta could be.
Last edited by FGRaptor; 03-31-2008 at 07:45 AM.
I checked your question today with fresh mind ...
in fact I forget parenthesis it is not G/G*1.2 it is G/(G*1.2) my fault sorry
Bookmarks