19.02.2019 19:55, Alex пишет:
On Tuesday, 19 February 2019 at 16:44:23 UTC, drug wrote:
On 19.02.2019 19:35, Alex wrote:
On Tuesday, 19 February 2019 at 16:26:33 UTC, drug wrote:
Well, I understand that using floating point values to represent
time internally is a bad idea and I totally agree. But some
convenient API to convert Duration to floating point and vice versa
would be useful because in mechanics for example you often need to
express time in seconds with fractional part. In this regard
std::chrono is more expressive (the only one though, in general
std.datetime is much more powerful than std::chrono).
If you need a real (double, float) parameter, just use it. Transport
the units separately...
Could you elaborate what you mean?
```
auto point = vec3(1.0, 2.0, 3.0);
vec3 velocity = ...;
auto t = dur!"msecs"(500);
...
auto new_point = point + velocity * t.total!"msecs"/1e3;
```
How can I use a real parameter and transport units separately here?
like
´´´
import std.datetime;
void main()
{
import std.stdio;
auto d = Data!"msecs"();
writeln(d.point);
writeln(d.t);
}
struct Data(string units)
{
real[3] point = [1.0, 2.0, 3.0];
real[3] velocity = ...;
auto t = dur!units(500);
}
´´´
Well, your code is more heavy and less flexible than just using
`total!"msecs"/1e3`. Sorry, but it's loosely coupled with my question.