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! 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, 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 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