LDraw.org Discussion Forums
Non-binary fractional circular primitives - Printable Version

+- LDraw.org Discussion Forums (https://forums.ldraw.org)
+-- Forum: Administrative (https://forums.ldraw.org/forum-4.html)
+--- Forum: Standards Board (https://forums.ldraw.org/forum-5.html)
+--- Thread: Non-binary fractional circular primitives (/thread-24588.html)



Non-binary fractional circular primitives - Chris Dee - 2021-04-28

Hi

Does the Standards Board have an opinion on the discussion about non-binary fractional circular primitives happening here.

Personally, I don't have a problem with 3-16ringNN primitives.


RE: Non-binary fractional circular primitives - Travis Cobbs - 2021-04-28

(2021-04-28, 5:40)Chris Dee Wrote: Hi

Does the Standards Board have an opinion on the discussion about non-binary fractional circular primitives happening here.

Personally, I don't have a problem with 3-16ringNN primitives.

First of all, I'm not completely sure what fwcain is arguing against. In one place it was to use 1-16 plus 1-8 to make 3-16, and in another it was to use ring1 + ring2 + ring8 to make ring11. Based on a later post, I think that he was indicating that the latter was a mistake, and his argument is that only 1-16, 1-8, 1-4, 1-2, and 4-4 circular primitives should be allowed.

I personally strongly disagree with his argument, for a number of reasons:

  1. Having a bunch of ring primitives does not (in my opinion) hurt anything. They are all very simple files, and they have very precise constraints on what they should contain.
  2. Forcing part authors to combine 1-16 and 1-8 ring primitives to make a 3-16 primitive just makes all their lives miserable.
  3. Rounding means that combining 1-16 and 1-8 ring primitives to approximate a 3-16 primitive will always be an approximation, due to the necessary 45 degree rotation introducing √2 / 2 into the matrix. (I guess you could put them in the other order and have a 22.5 degree rotation, but that would also require rounding.)
  4. The official primitives reference never says to limit circular primitives to powers of two, and even explicitly includes 3-4disc and 3-4edge as examples. Additionally, it lists currently available primitives, so the large number of existing non-power-of-two primitives show up there without any mention that they should be avoided, which IMO is an implicit stamp of approval.
Due to 4 above, I would normally say that nothing needs to be changed. But the fact that this discussion has happened means that that is probably not a good option. I'd personally be happy to explicitly state that combining circular primitives with non 90 degree angles (for example 1-16 and 1-8) is forbidden in official parts (due to point 3 above).


RE: Non-binary fractional circular primitives - Chris Dee - 2021-05-01

(2021-04-28, 17:24)Travis Cobbs Wrote:  I'd personally be happy to explicitly state that combining circular primitives with non 90 degree angles (for example 1-16 and 1-8) is forbidden in official parts (due to point 3 above).

So would I.

I guess we could add a 'Primitives Regulations' section to the LDraw.org Official Parts Library Specifications, but there is quite a lot to document.


RE: Non-binary fractional circular primitives - Chris Dee - 2021-05-02

(2021-05-01, 20:27)Chris Dee Wrote: So would I.

I guess we could add a 'Primitives Regulations' section to the LDraw.org Official Parts Library Specifications, but there is quite a lot to document.

Or we could just add the following text (or similar) to the Primitives Reference:

To avoid rounding errors, it is preferable to use existing (or create new) fractional circular primitives rather than rotate an existing primitive by anything other than 90 degrees. For example 3-16XXXX.dat is preferred to combining 1-8XXXX.dat with 1-16XXXX.dat rotated by 22.5 degrees.


RE: Non-binary fractional circular primitives - Travis Cobbs - 2021-05-02

(2021-05-02, 6:54)Chris Dee Wrote: Or we could just add the following text (or similar) to the Primitives Reference:

To avoid rounding errors, it is preferable to use existing (or create new) fractional circular primitives rather than rotate an existing primitive by anything other than 90 degrees. For example 3-16XXXX.dat is preferred to combining 1-8XXXX.dat with 1-16XXXX.dat rotated by 22.5 degrees.

I like this option.