--- Log opened Tue Aug 21 00:00:27 2018 |
00:50 | | macdjord|wurk is now known as macdjord |
00:54 | | celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has joined #code |
00:54 | | mode/#code [+o celticminstrel] by ChanServ |
00:57 | < Jessikat`> | jeroud: life continues to improve :) |
00:57 | <&jeroud> | Yay! |
01:00 | | Jessikat` is now known as Jessikat |
01:10 | | Derakon[AFK] is now known as Derakon |
01:24 | | Kindamoody is now known as Kindamoody[zZz] |
01:36 | | macdjord [macdjord@Nightstar-grpbnp.mc.videotron.ca] has quit [[NS] Quit: The best way to complete an annoying but necessary task is to find another, more urgent task to procrastinate on by working on the first task.] |
01:49 | | macdjord [macdjord@Nightstar-grpbnp.mc.videotron.ca] has joined #code |
01:49 | | mode/#code [+o macdjord] by ChanServ |
02:33 | | himi [sjjf@Nightstar-1drtbs.anu.edu.au] has quit [Ping timeout: 121 seconds] |
02:41 | <~Vornicus> | Ok. As far as I can tell: the mesh invariant is always kept, so that's cool, but for some reason it will occasionally - and only when I've added an on-edge point - fail in stack overflowing ways. |
02:46 | | himi [sjjf@Nightstar-1drtbs.anu.edu.au] has joined #code |
02:46 | | mode/#code [+o himi] by ChanServ |
02:48 | <~Vornicus> | This doesn't make *sense* though: the edge correction invariant should mean that any individual edge doesn't get checked more than once |
02:50 | <~Vornicus> | This suggests I may still be messing up the on-edge triangle creation |
03:07 | | * Vornicus checks something else |
03:16 | <&McMartin> | It begins. https://bumbershootsoft.wordpress.com/2018/08/20/atari-2600-powers-and-responsibilities/ |
03:22 | <~Vornicus> | the link got a line break on my computer after the 'p' in 'responsibilities' and I thought it said 'obscenities' |
03:33 | <&McMartin> | Heh |
03:33 | <&McMartin> | No, part of the tale here is that there are no terrors left for us after getting vertical-scrolling splitscreen to work on the C64~ |
03:33 | <&McMartin> | Rebootski |
03:33 | | McMartin [mcmartin@Nightstar-rpcdbf.sntcca.sbcglobal.net] has quit [[NS] Quit: leaving] |
03:35 | | McMartin [mcmartin@Nightstar-rpcdbf.sntcca.sbcglobal.net] has joined #code |
03:35 | | mode/#code [+ao McMartin McMartin] by ChanServ |
03:44 | <&[R]> | 'I call such programs as LibreOffice Base "database programs" or "database software."' |
03:44 | | Reiv [NSkiwiirc@Nightstar-ih0uis.global-gateway.net.nz] has quit [[NS] Quit: http://www.kiwiirc.com/ - A hand crafted IRC client] |
03:46 | | Reiv [NSkiwiirc@Nightstar-ih0uis.global-gateway.net.nz] has joined #code |
03:46 | | mode/#code [+o Reiv] by ChanServ |
04:11 | | celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
04:12 | | celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has joined #code |
04:12 | | mode/#code [+o celticminstrel] by ChanServ |
04:13 | | celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
04:14 | | celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has joined #code |
04:14 | | mode/#code [+o celticminstrel] by ChanServ |
04:15 | | celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has quit [Client exited] |
04:24 | | Vornicus [Vorn@Nightstar-sjaki9.res.rr.com] has quit [Ping timeout: 121 seconds] |
05:05 | | Jessikat` [Jessikat@Nightstar-r1qofu.dab.02.net] has joined #code |
05:08 | | Jessikat [Jessikat@Nightstar-afs2pp.dab.02.net] has quit [Ping timeout: 121 seconds] |
05:08 | <&McMartin> | Progress: https://i0.wp.com/bumbershootsoft.files.wordpress.com/2018/08/lightsout2600_05.png?ssl=1 |
05:08 | <&McMartin> | I think it's time to stop hacking and get back to writing for awhile |
05:19 | | Derakon is now known as Derakon[AFK] |
06:09 | | macdjord is now known as macdjord|slep |
06:21 | | Jessikat` is now known as Jessikat |
06:59 | | himi [sjjf@Nightstar-1drtbs.anu.edu.au] has quit [Ping timeout: 121 seconds] |
07:18 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code |
07:18 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
07:29 | | [R] [rstamer@genoce.org] has quit [Ping timeout: 121 seconds] |
07:48 | | [R] [rstamer@Nightstar-d7h8ki.org] has joined #code |
07:48 | | mode/#code [+ao [R] [R]] by ChanServ |
08:39 | | Kindamoody[zZz] is now known as Kindamoody |
09:59 | | * Vornicus adds yet more diagnostics, learns nothing |
10:01 | | Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code |
10:08 | | Jessikat [Jessikat@Nightstar-r1qofu.dab.02.net] has quit [Ping timeout: 121 seconds] |
11:12 | <~Vornicus> | aha, here we are with something. I'm making inside-out faces. How though? |
12:09 | | * TheWatcher would try to make clockwise/counterclockwise puns, but his head hurts too much for such shenanigans |
13:18 | | macdjord|slep is now known as macdjord|wurk |
13:27 | | celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has joined #code |
13:27 | | mode/#code [+o celticminstrel] by ChanServ |
13:59 | | celticminstrel [celticminst@Nightstar-v1qb0r.dsl.bell.ca] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
15:28 | <~Vornicus> | I fucking hate geometry |
15:35 | | * TheWatcher has an angle on a pun related to that, but would be going off on a tangent |
15:35 | <@TheWatcher> | What's up? |
15:39 | <~Vornicus> | I'm doing voronoi diagrams. Every time I think I've got it, there's another goddamn special case I have to hunt down and kill |
15:39 | <~Vornicus> | There are *so many* special cases |
15:40 | <@TheWatcher> | Code is 90% space case handling? |
15:40 | <@TheWatcher> | *special |
15:40 | <~Vornicus> | oh ho ho, no |
15:40 | <@TheWatcher> | (don't ask how I did that, my fingers are special today) |
15:40 | <@TheWatcher> | 99%? >.> |
15:41 | <~Vornicus> | A good half of it is gathering data from the existing structure and then rejiggering it |
15:47 | <~Vornicus> | like, okay, I've got a function, put_point_on_face. there's 8 lines of collecting edge and point data from the mesh, then another 8 to build three new faces, 7 lines to build and load six new edges (the first one just creates six edge structures, the other six fill each one in individually), another three to update existing edges, two to set hierarchy data for the old face and prevent leakage of dead edges, one to let the point find |
15:47 | <~Vornicus> | itself in the mesh, and three to start enforcement of the delaunay invariant |
15:48 | <~Vornicus> | None of this is really a special case, but it's 32 lines of pointer mashing. |
15:48 | <@TheWatcher> | (C++?) |
15:49 | <~Vornicus> | Lua |
15:49 | <@TheWatcher> | Aha |
15:49 | <@TheWatcher> | Fairynuff |
15:49 | <~Vornicus> | (technically references but you know) |
15:54 | <~Vornicus> | Then in the special case, put_point_on_edge, all of those are slightly longer, so it comes out at 40 lines |
16:07 | <~Vornicus> | So there's a lot of Just Plain Manipulation and it's huge and then the special cases, while there are a lot of them, boil down to things like "if the edge I'm using is infinite at both ends, make sure I don't claim to be on it" |
16:07 | <~Vornicus> | ...speaking of, I think I've figured out what's actually wrong in this case and that means I can solve it |
16:08 | <~Vornicus> | The problem is simple: I have a degenerate triangle - all the points are collinear. ...usually this means that the triangle is in fact infinite |
16:09 | <~Vornicus> | Well, infinitely long, and so forth |
16:10 | <~Vornicus> | But there's several upshots to this, which combine to make this awful |
16:10 | <~Vornicus> | 1. the method I use to determine whether I'm actually inside the triangle uses "which side of each edge of the triangle am I on" as its thing. This is fine... when the triangle is non-degenerate, or when the new point isn't on the line |
16:11 | <~Vornicus> | rather, the infinitely long line that is collinear with the three points of the degenerate triangle |
16:13 | <~Vornicus> | 2. but this also means that any point on the entire infinite line - whether the degenerate triangle is actually a line, or ray, or segment - counts via this method as inside the triangle. |
16:13 | <~Vornicus> | 3. worse still, it's not actually "inside", it's "on an edge" for all three triangle edges - including ones that it isn't actually on! |
16:15 | <~Vornicus> | So what appears to be happening, now that I've managed to get through all the rubber ducking, is this: I've added a point that lands collinear with a degenerate triangle. Since it's "on an edge", it finds an edge that it claims to be on, and uses that as the target for making the edge |
16:15 | <~Vornicus> | Er, for updating the mesh |
16:17 | <~Vornicus> | But sometimes it's not actually in/on the triangle, and that's bad in one way and another special case I have to handle... and sometimes the edge it thinks it's on, it's not on. In either of these two cases, it will attempt to modify the mesh by splitting triangles that it's not in to make more triangles, and this *cannot help* but create reverse-wound triangles, which bring a huge set of issues, not least of which is that nothing will |
16:17 | <~Vornicus> | ever think it's inside a reverse-wound triangle |
16:18 | <~Vornicus> | Okay. how do I solve this. |
16:21 | <~Vornicus> | 1. don't rely entirely on the insideness coefficients to determine what edge to use for ppoe. Instead, is_inside will return as additional data the index of an edge it believes the point lies on. |
16:28 | <~Vornicus> | 2. make sure that, when answering this question for any particular edge, I actually consider the endpoints. |
16:28 | <~Vornicus> | 3. -- and if the answer is no for all three despite the insideness coefficients being 0, then I'm not actually inside the triangle |
16:28 | <~Vornicus> | holy fuck I hate geometry |
16:29 | | Kindamoody is now known as Kindamoody|out |
16:58 | | Jessikat [Jessikat@Nightstar-d1qlv1.dab.02.net] has joined #code |
17:13 | <~Vornicus> | okay that was one thing. there's still some evil here |
17:13 | <~Vornicus> | ...I'd love to have logs that aren't completely full of the same log entry |
17:25 | <~Vornicus> | Okay! Make sure that when attempting to correct an edge, that the quadrilateral is convex! |
17:35 | | McMartin [mcmartin@Nightstar-rpcdbf.sntcca.sbcglobal.net] has quit [Ping timeout: 121 seconds] |
17:37 | | Kindamoody|out is now known as Kindamoody |
17:40 | | McMartin [mcmartin@Nightstar-rpcdbf.sntcca.sbcglobal.net] has joined #code |
17:40 | | mode/#code [+ao McMartin McMartin] by ChanServ |
17:43 | <~Vornicus> | ...wow that happens more often than I expected |
17:46 | <~Vornicus> | Okay, well, that was a cause of errors, so that's one more thing down |
17:46 | <~Vornicus> | Still getting some though. |
17:46 | <~Vornicus> | ...this one I don't get at all. How the fuck am I getting faces that twin with themselves. |
18:05 | | Jessikat` [Jessikat@Nightstar-drvb4h.dab.02.net] has joined #code |
18:08 | | Jessikat [Jessikat@Nightstar-d1qlv1.dab.02.net] has quit [Ping timeout: 121 seconds] |
18:21 | <~Vornicus> | okay I *think* the only way that can happen is if a pair of faces share two edges. ...this is in fact a thing that happens at the beginning, but I'm reasonably sure that after the second point it's no longer true... and the failures are happening a very long time after that initial setup |
18:34 | <~Vornicus> | Okay it's definitely happening late but I have no idea how. |
18:51 | <~Vornicus> | Fucking hate geometry. |
18:53 | | * TheWatcher patpats vorn, offers burritos? |
18:54 | <~Vornicus> | *devour* |
18:55 | <@TheWatcher> | (proper beef and bell pepper and salsa and cheese and rice ones, not Scalzi Burritos, I note~) |
19:04 | <~Vornicus> | ...I don't think it should be creating area-0 faces during edge correction. I wonder why it's doing that |
19:08 | <~Vornicus> | noooo. |
19:08 | <~Vornicus> | (462, 291) (438, 351) (411, 293) (462, 291) |
19:08 | <~Vornicus> | noooooooo. |
19:16 | <~Vornicus> | Sigh. Okay! I was intending on dealing with this anyway. |
19:25 | <~Vornicus> | I don't know why it was failing to do uniqueness in the first place though, which is worrying |
19:56 | <~Vornicus> | ...one more thing on the pile. gnarg! |
20:17 | <~Vornicus> | (in the highly specific situation of: the second point is on the same horizontal line as the first, at the very, very beginning, it does not work correctly. I suppose I could do this the right way and add more special cases to the thing or I could do it the wrong way and just fuck with ordering until that's not true |
22:42 | | Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
23:21 | | Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Ping timeout: 121 seconds] |
23:35 | | himi [sjjf@Nightstar-1drtbs.anu.edu.au] has joined #code |
23:35 | | mode/#code [+o himi] by ChanServ |
--- Log closed Wed Aug 22 00:00:29 2018 |