Change Time speed direction.

Asked by Jordan on 2016-09-20

Can we have an implementation for a key to change the direction of (Time Speed)?

For example, if i increase the time speed with the (L) key in forward direction, then press another key, and the direction of time speed changes with the same speed as before but this time towards past.

When I press the same button again the direction should switch also in the previous direction. So that I can switch the direction back and forth.

That would be useful as there is no other possibility at this moment as to stop the time and with the (J) key to change the direction.

Question information

Language:
English Edit question
Status:
Solved
For:
Stellarium Edit question
Assignee:
No assignee Edit question
Solved by:
Jordan
Solved:
2016-10-09
Last query:
2016-10-09
Last reply:
2016-10-04
Alexander Wolf (alexwolf) said : #1

I've added shortcut for this feature. Will be available for testing in next beta.

Jordan (iordanis-kiriakidis) said : #2

Thank you. I will wait to try it.

Jordan (iordanis-kiriakidis) said : #3

Ok, i have testet it, it works so far, but there is a little problem. Usually the "L" key is for accelerating time and "J" for decelerating. In reverse mode the keys behave exactly the other way "L" decelerates and "J" accelerates. This is confusing. The keys should retain their function in both directions

I changed my key combination the following way "K" for reversing time and "0" for Normal time rate. I think this is more convenient.

Alexander Wolf (alexwolf) said : #4

> Usually the "L" key is for accelerating time and "J" for decelerating. In reverse mode the keys behave exactly the other way "L" decelerates and "J" accelerates. This is confusing. The keys should retain their function in both directions

You changed sign of time and keys "L" and "J" works as expected. See buttons on bottom bar.

> I changed my key combination the following way "K" for reversing time and "0" for Normal time rate. I think this is more convenient.

Key "K" was used for normal rate always and I don't want change it behaviour.

Jordan (iordanis-kiriakidis) said : #5

>You changed sign of time and keys "L" and "J" works as expected. See buttons on bottom bar.

I know what you mean. But when the time runs forward, it is no problem, to increase the forward time speed, I press the key "L" and everything is ok. But when the time runs backward and I want to increase the backward time speed, then I have to press the key "J". That means that every time I switch the direction and want to increase or decrease the time speed, i have to rethink which key i have to press "L" or "J".

This is not intuitive. It's like driving a car. Either I go forward or backward to speed up I press the throttle, to slow down the brake.

It would be better if the acceleration key "L" works in both directions equal. So when the time runs forward "L" should also increase the forward time speed and when the time is running backward "L" should increase the backward time speed.

The same also applies for the decrease time speed key "J", only the other way around.

I don't know if I explained it properly.

>Key "K" was used for normal rate always and I don't want change it behaviour.

This is not a problem. Everyone can create his own keyboard shortcut in Stellarium.

Alexander Wolf (alexwolf) said : #6

Sorry, but "L" is increased time step in positive side, "J" is increased time step in negative side. It's very intuitive. And we have 4 buttons on the GUI for time management - (left to right) increase time step in negative side, start/stop time, increase time step in positive side, current time. As fact you proposes: (left to right) button for left time direction, button for right time direction, button to slow-down time, button to speed-up time, button for pause, button for set of current time (and shortcuts for all those buttons). Is it more intuitive for you?

Jordan (iordanis-kiriakidis) said : #7

It is not necessary to add new buttons. I just changed a bit the source code and now it works much like I said before.
Not perfect but it works.

//! Increase the time speed
void StelCore::increaseTimeSpeed()
{
 double s = getTimeRate();
// if (s>=JD_SECOND) s*=10.;
// else if (s<-JD_SECOND) s/=10.;
// if (s>=0. && s<JD_SECOND) s=JD_SECOND;
// else if (s>=-JD_SECOND && s<0.) s=0.;
 s*=10.;
 setTimeRate(s);
}

//! Decrease the time speed
void StelCore::decreaseTimeSpeed()
{
 double s = getTimeRate();
// if (s>JD_SECOND) s/=10.;
// else if (s<=-JD_SECOND) s*=10.;
// if (s>-JD_SECOND && s<=0.) s=-JD_SECOND;
// else if (s>0. && s<=JD_SECOND) s=0.;
 s/=10.;
 setTimeRate(s);
}

Alexander Wolf (alexwolf) said : #8

I see you don't understand:
a) You changed behaviour of time management
b) You changed GUI behaviour and at the moment you can't go backward in time in principle (through GUI)
c) When you enabled reverse direction of time then for increasing time step "to left side" you should press button "to right side" - we will get many complains about this "intuitive behaviour" of time management.

Jordan (iordanis-kiriakidis) said : #9

I know what I've done. It was just a "Fast & Dirty hack" to see if I can do it the way it is best for me. I also use Celestia and there it is the way I want it to be. I often use the time speed to observe such as Solar eclipse, Moon Eclipse and other events. And then I often change the time direction and speed back and forth and study the eclipses etc in different time speed and directions. And there is the problem. If I have done that a few times i get confused with the buttons "J" and "L" because if the time runs backward "J" does not realy decreases time but increases time in backward time direction, if I then press the "J" to decrease time speed, time speed increases instead. I think how I can keep both functions without interfering with each other.

gzotti (georg-zotti) said : #10

There is a difference between "intuitive" and "I got used to the behaviour as has been implemented in a program which I like". I agree with Alex that while moving forward in time, J should decelerate and ultimately reverse time. When going back in time, J increases the negative speed, while L decreases negative speed and ultimately puts the simulation in forward mode. This is very intuitive and has been implemented in this way since at least 2008. Just get used to it. Stellarium is not Celestia, and while Celestia is another great program, I don't see the need to follow its user interface. Why not change Celestia to make it more intuitive for Stellarium users?
If you use 0 to set real-time speed, you are free to do so (although I find this very counterintuitive. 1 would seem better for me, with 0 as fitting for a "stop time" command).

Jordan (iordanis-kiriakidis) said : #11

>Why not change Celestia to make it more intuitive for Stellarium users?
Celestia isn't updated for long time. Also this in not the Problem.

>I find this very counterintuitive. 1 would seem better for me.
1 is to far away. I need to move only one finger to reach 0 from J, K or L. For 1 i must move my whole hand. One Hand on mouse and the other on Keyboard. This is also not a problem everybody can change the shortcuts as he like.

Stellariums time management is ok in the current stable release.
But now in new beta version whe have the ability to quick change Time Direction, "0" Key as default.
My problem is, when I watch some event and switch Time Direction multiple times back and forth, i have to remember which direction is the time running, because when i need to slow down the time speed and press the wrong key, time speed increases and i get lost event focus.

I Have no problem running time speed for let's say 1 year in future or past, the problem is on events that take only a few minutes or hours in real time.

Why not let the user decide which method to use?

gzotti (georg-zotti) said : #12

Because every change of a well-working long-time behaviour has to be explained individually to dozens of alienated users who might enable this by chance and start asking questions?
The existing system is gearing up like a classical optomechanical planetarium. That's very intuitive and fine. The new direction toggle might be useful for special purposes, but I almost hear the gear wheels cracking when you invert fast motion.
So yes, you have to remember if time runs forward or backward. And it is very important that you stay aware of your time flow direction.

You should be able to implement your special time handling with mini-scripts called by hotkeys. Hint: core.setTimeRate(), core.getTimeRate().

Jordan (iordanis-kiriakidis) said : #13

>Hint: core.setTimeRate(), core.getTimeRate().
Thank you Georg. That solves my problem. Why didn't you say it earlier? ;-)