Time  Nick        Message
02:56 p_gimeno    @DS-Minetest, I think I see what happens. We're using opposite matrix conventions. I'm using row vectors (because Irrlicht does too, see http://irrlicht.sourceforge.net/docu/classirr_1_1core_1_1_c_matrix4.html#details) and you're using column vectors. We're transposed with respect to each other :)
02:58 p_gimeno    Irrlicht weirdness should probably not be exposed to users where it can be avoided, so I like your convention better.
05:55 ANAND       Super trivial #8526
05:55 ShadowBot   https://github.com/minetest/minetest/issues/8526 -- Move HTTP request logging to infostream by ClobberXD
11:04 p_gimeno    re #8521, Second Life works this way: when a logged in user user logs in again, the old user is disconnected. It's used pretty often actually, and quite useful.
11:04 ShadowBot   https://github.com/minetest/minetest/issues/8521 -- Kick player when another user who knows the password joins
11:05 tomraceror  hello?
11:05 tomraceror  someone can help me?
11:06 tomraceror  with gimp?
11:06 p_gimeno    tomraceror: wrong channel, this is for minetest development only
11:07 tomraceror  ah
11:27 tomraceror  i have idea for a minetest function,maybe for multyplayer a cmd:
11:28 tomraceror  /setinfo (text (about the player))
11:28 ShadowBot   https://github.com/minetest/minetest_game/issues/330 -- Vessels : new textures by kilbith
11:28 tomraceror  and other players can see with /seeinfo (playername) the text
11:29 Thomas-S    tomraceror: It seems like your suggestion is a mod request. Please post it in a more appropriate channel, e.g. #minetest.
11:30 tomraceror  ok
15:54 p_gimeno    @DS-Minetest, problem is the order of multiplications. Row vectors and column vectors are the transpose of each other, and since A^T*B^T = (B*A)^T, when you deal with row vector matrices, you have to right-multiply the matrices instead of left-multiply. So for ZXY order it's Z*X*Y and not Y*X*Z as in normal convention.
16:08 p_gimeno    I've just looked at your special casing. Values that return 1 don't need to be included. See https://notabug.org/pgimeno/Gists/src/sin-cos-precise
16:48 paramat     please can anyone approve my mapgen PRs? #8473 #8481 , well tested so you don't need to, and it's mapgen so you can partly trust me =)
16:48 ShadowBot   https://github.com/minetest/minetest/issues/8473 -- Dungeons: Settable density noise, move number calculation to mapgens by paramat
16:48 ShadowBot   https://github.com/minetest/minetest/issues/8481 -- Allow multiple cave liquids in a biome definition by paramat
16:52 paramat     input needed on what to do for #8249
16:52 ShadowBot   https://github.com/minetest/minetest/issues/8249 -- Make autoforward simulate keys by DS-Minetest
16:52 paramat     merging #8526
16:52 ShadowBot   https://github.com/minetest/minetest/issues/8526 -- Move HTTP request logging to infostream by ClobberXD
16:58 p_gimeno    @DS-Minetest: by the way, don't worry about quaternions yet, let's get matrices right first
17:02 paramat     merging #8519
17:02 ShadowBot   https://github.com/minetest/minetest/issues/8519 -- Revert e6a9e60 by ClobberXD
17:08 p_gimeno    @DS-Minetest: Please call the functions from_pitch_yaw_roll and to_pitch_yaw_roll instead, because X corresponds to pitch, Y corresponds to yaw and Z corresponds to roll, so I think it will cause less confusion that way
17:10 p_gimeno    re 3x3 vs 4x4, I think 3x3 is OK, but I'd suggest adding something in the name that indicates the matrix size it deals with, e.g. call the table matrix3 instead of matrix
17:10 p_gimeno    that will simplify adding a 4x4 one in future
17:13 p_gimeno    I don't think matrix.floor and matrix.round are necessary. You can always use matrix.apply(m, math.floor). For matrix.round, I'd say, implement math.round instead so that it can be used in matrix.apply.
17:18 p_gimeno    Since you're adding vector.dot, please add vector.cross too as it will be necessary as well. Keep handedness in mind for vector.cross.
17:19 p_gimeno    Maybe we can talk via email instead? My email is in my homepage, http://www.formauri.es/personal/pgimeno/
17:54 p_gimeno    hey :)
17:54 DS-minetest >I've just looked at your special casing. Values that return 1 don't need to be included.
17:54 DS-minetest why?
17:55 p_gimeno    because there's enough precision for them to be accurate
17:55 DS-minetest and hello : ) I haven't used irc for months
17:56 p_gimeno    >>> cos(317*pi)
17:56 p_gimeno    -1.0
17:56 DS-minetest but if you rotate around multiples of pi and want to compare two matrices, this is needed
17:56 DS-minetest oh
17:56 p_gimeno    it's exactly 1 already
17:57 p_gimeno    the problem happens near 0 because the closer to 0 you are, the more precision you have
17:58 DS-minetest you are right
17:58 DS-minetest I'll change it
17:58 p_gimeno    thanks
17:58 DS-minetest thanks to you
18:10 DS-minetest btw. if you add a function to existing code or documentation, is there any rule on how they are sorted?
18:12 p_gimeno    I don't think there is
18:12 DS-minetest should i rename core.facedir_to_matrix to core.facedir_to_matrix3 to?
18:13 DS-minetest ,too*
18:13 p_gimeno    I think so, yeah
18:14 tomraceror  hey,what are you addding to mintest or changing?
18:14 p_gimeno    maybe mat3 instead of matrix3 everywhere, for brevity? I was thinking of that
18:14 tomraceror  i mean with hey = hi not angry :p
18:15 p_gimeno    tomraceror: DS-minetest is working on a matrix library, see #8515
18:15 ShadowBot   https://github.com/minetest/minetest/issues/8515 -- Add matrix helpers to builtin by DS-Minetest
18:15 tomraceror  cool
18:15 tomraceror  but the windows user cant use matrix ...
18:16 DS-minetest mat could also stand for mattress
18:16 p_gimeno    lol
18:16 p_gimeno    ok, matrix3
18:18 p_gimeno    also, the matrix global is claimed by a mod, it wouldn't be too nice to override it https://forum.minetest.net/viewtopic.php?f=11&t=20329
18:21 DS-minetest ooh, and there's an issue for my pr
18:31 DS-minetest p_gimeno: did I forget a comment from you?
18:32 DS-minetest I don't actually know what you mean with right-multiply or left-multiply
18:39 p_gimeno    DS-minetest: never mind, I was referring to the ZXY vs YXZ from Wikipedia
18:40 DS-minetest ok
18:42 p_gimeno    in Irrlicht, to rotate a row vector V first by A and then by B you multiply V * A * B. Wikipedia uses the normal convention, and you multiply B * A * V where V is a column vector.
18:43 p_gimeno    that's all I meant
18:43 DS-minetest ah
18:44 DS-minetest because you still need A to have as many columns as B has rows if you do A*B
18:46 p_gimeno    just another consequence of Irrlicht's upside-down conventions
18:47 p_gimeno    unconventional conventions, dare I say
18:47 DS-minetest maybe I should use a completely new convention in my PR to cause even more confusion, we need more conventions! *irony off now*
18:48 p_gimeno    yeah! <insert mandatory XKCD reference here>
18:50 DS-minetest actually, I got the method that I used before to make matrix to euler via the wheel method: https://www.xkcd.com/2140/
18:51 p_gimeno    heheh
19:45 p_gimeno    DS-minetest: what about the signs of the cross product? should they be inverted, since this is a left-handed coordinate system?
19:46 DS-minetest Uh, I have never thought of this
19:47 DS-minetest so probably the crossproduct vector is now left handed to the input vectors
19:49 DS-minetest ok, wikipedia says that it is defined as right handed, I'll invert
19:50 p_gimeno    I'd vote for keeping it right-handed, there are things that are already broken anyway
19:51 DS-minetest done
19:52 p_gimeno    really, left-handed coordinate systems suck
19:53 tomraceror  bye
19:53 tomraceror  good nighth!
19:55 p_gimeno    oh typo, the transposed of -> the transpose of
19:55 DS-minetest ok
19:55 p_gimeno    (twice)
19:56 DS-minetest i'm not a native english speaker
19:57 p_gimeno    me neither
19:57 DS-minetest done
19:58 p_gimeno    hmm, I'm pondering how necessary it is to have a matrix3.inverse()
19:59 p_gimeno    since they are mostly rotation matrices, it's possible that transposing suffices
19:59 DS-minetest yes, i wanted to add this but i havent found an easy way to get it in wikipedia
19:59 p_gimeno    I have one somewhere, one sec
20:01 p_gimeno    anyway, since they are going to be usually rotation matrices, transposing them also inverts them
20:01 p_gimeno    that's why I'm pondering
20:05 p_gimeno    https://notabug.org/pgimeno/Gists/src/mat3-det-and-invert
20:05 DS-minetest should I just copy both functions?
20:06 p_gimeno    no I don't think so, you can copy the determinant one but the inverse one will need a bit of work
20:07 p_gimeno    first, to decide what to do when the determinant is zero; my interface for that one used (dest, source) and only modified dest when the determinant was not zero
20:07 p_gimeno    the interface probably needs to be changed too
20:08 p_gimeno    maybe return true, <matrix> if it's invertible, and false, "Matrix can't be inverted" if not
20:08 DS-minetest ok
20:08 p_gimeno    hm
20:09 p_gimeno    or just <matrix> if it's invertible, and false if not
20:09 p_gimeno    that's simpler, simpler is good
20:10 DS-minetest yes, this is probably better as tables are true values
20:10 p_gimeno    yeah, you can still do: b = assert(matrix3.invert(a))
20:12 DS-minetest the first few lines can be replaced with "det = det_mat3(a)", right?
20:14 p_gimeno    no because it calculates variables that it reuses later
20:14 DS-minetest oh
20:20 DS-minetest done: https://github.com/minetest/minetest/pull/8515/commits/79d404fbcba3f69cb63ac14ae30e57ac1e5e61b4
20:22 p_gimeno    :+1:
20:23 DS-minetest :D
20:26 DS-minetest there are still at least two questions left:
20:26 DS-minetest 1: should the rotation matrices given by the functions be counterclockwise (righthanded)
20:27 DS-minetest 2: should the functions need degrees instead of radians?
20:27 p_gimeno    2: radians please, pretty pretty please
20:27 p_gimeno    1: if you want to keep your sanity, I recommend leaving them as is
20:27 DS-minetest I could of course add both
20:28 p_gimeno    probably the cross product should be right handed too
20:28 DS-minetest it is
20:29 paramat     yes radians please
20:29 DS-minetest (1,0,0)x(0,1,0) now gives (0,0,-1) which is righthanded
20:30 DS-minetest (it would be lefthanded like this in a righthanded system, that's why it's righthanded)
20:30 p_gimeno    oh, rounding_precision and the local function round() are now only used inside a commented out section
20:32 DS-minetest it's now commented out, too
20:32 p_gimeno    woot
20:34 p_gimeno    one last thing, matrix3_1p_1n_0_hash can be done with just the first 6 elements, you don't need all 9
20:34 DS-minetest might there be copyrightial problems with the fact that some things like rotation matrices for specific angles were taken from other sources like wikipedia?
20:35 DS-minetest are you sure?
20:35 p_gimeno    first question: no, second question: yes
20:36 p_gimeno    https://github.com/entuland/rhotator/commit/c7e288dbe3cd663d31f965e1bd06f8e9d0ef1fb1
20:36 DS-minetest ok
20:37 p_gimeno    if minetest allowed mirroring nodes, then you'd need all 9 elements, but without it, the third one is redundant (it can be calculated from the other two using a cross product)
20:37 DS-minetest and should wrong values like -0.5 or 3 be handled?
20:37 p_gimeno    no I don't think so
20:37 p_gimeno    for those, a wrong answer is an appropriate answer
20:38 p_gimeno    core devs may disagree
20:39 DS-minetest done
20:40 DS-minetest matrix3_to_wallmounted could be implemented faster
20:40 DS-minetest by using another table
20:41 p_gimeno    yeah, maybe it's not a bad idea
20:44 p_gimeno    I need to be AFK for a while
20:45 DS-minetest ok
20:49 paramat     "a wrong answer is an appropriate answer" i agree, keeps it simple too
20:50 DS-minetest now I use table.indexof in matrix3_to_wallmounted
20:52 p_gimeno    have you tested it?
20:53 DS-minetest no
20:53 p_gimeno    hm, it should probably work, I just haven't looked into how indexof works
20:54 p_gimeno    anyway, AFK for real now
22:02 DS-minetest no
22:03 DS-minetest oops, sorry