Sanitizing quad errors
2014-11-04, 12:04 (This post was last modified: 2014-11-04, 22:57 by Roland Melkert.)
2014-11-04, 12:04 (This post was last modified: 2014-11-04, 22:57 by Roland Melkert.)
(this is nost strictly about specifications, so feel free to move this thread)
So, there are some parts in the library that contains errors of various nature. Some of them must be solved by hand, others should be easy to solve "en mass" with minimal work. The problem about crossed quads is an example. Many viewer have built-in correction code, which made the problem more hidden and probably made it easier for mistakes to slip in the library. I think there's no reason not to address the issue directly on the library, so i suggest this:
- find a routine that correct quads. I'm sure there are many, for example it can be inferred from this post that some detection & correction tool already exists. In LDView the code looks like in here.
- put it into a programs that scans all .dat file in the library searching for quad lines. Pass the vertex to che correction function and eventually update the line. If the file has corrections, overwrite the original one with the correct one, maybe reporting which files have been modified for later review. The program appears to be simple as it operates on single lines, it doesn't need any context whatsoever on the 3d model beside the single quad. Actually it's mostly opening and rewriting files.
- review the modified files. I guess there are not that many, so we can probably manually verify one by one
- commit all changed files to the official library. I don't know how it is stored and who has access to it, but i don't think there are problems in a "mass commit", or are there?
- either forget about the script or somehow schedule it to run on new parts/periodically to detect new error.
Of course this doesn't break any compatibility, updating the library will have no visible difference in already existing software.
I'm no good in C, so i'm not able to help with the code (unless you want it written in other languages), i can offer my help to review corrected parts, if it's needed.
So, there are some parts in the library that contains errors of various nature. Some of them must be solved by hand, others should be easy to solve "en mass" with minimal work. The problem about crossed quads is an example. Many viewer have built-in correction code, which made the problem more hidden and probably made it easier for mistakes to slip in the library. I think there's no reason not to address the issue directly on the library, so i suggest this:
- find a routine that correct quads. I'm sure there are many, for example it can be inferred from this post that some detection & correction tool already exists. In LDView the code looks like in here.
- put it into a programs that scans all .dat file in the library searching for quad lines. Pass the vertex to che correction function and eventually update the line. If the file has corrections, overwrite the original one with the correct one, maybe reporting which files have been modified for later review. The program appears to be simple as it operates on single lines, it doesn't need any context whatsoever on the 3d model beside the single quad. Actually it's mostly opening and rewriting files.
- review the modified files. I guess there are not that many, so we can probably manually verify one by one
- commit all changed files to the official library. I don't know how it is stored and who has access to it, but i don't think there are problems in a "mass commit", or are there?
- either forget about the script or somehow schedule it to run on new parts/periodically to detect new error.
Of course this doesn't break any compatibility, updating the library will have no visible difference in already existing software.
I'm no good in C, so i'm not able to help with the code (unless you want it written in other languages), i can offer my help to review corrected parts, if it's needed.