Hej, welcome to LDraw!
Your post is a little difficult to answer because it is a little like
"Hey, I want to build a car, so why are there 4 wheels, and what about the windshield?"
The main answer is that many things in the file format still are today as they were when they were created by James Jessiman.
We preserved them because changing them fundamentally would immediately break everything that exists,
from software to parts to models to websites (like the Parts Tracker).
He for example chose to have 3 translation numbers x y z, plus the rotation matrix separate in lines of syntax type 1.
It is trivial for a program to read in these numbers and put them into a standard 4x4 matrix which is used
wide-spreadedly in 3D software. So this difference just is an oddity, but not a real problem.
The same goes for the definition of the coordinate system: yes, it might be a little
awkward and different than elsewhere, but on the other hand it just is mathematically equal to any other possible choice.
You just need to use it right, and that would be the same also for all other coordinate system choices.
The BFC elements exist exactly for the purpose you already mentioned, i.e., orienting surfaces properly so that rendering
software can run faster: surfaces not pointing to the user normally cannot be seen, and their rendering effort can be saved.
Of course not for transparent parts. And so on. A real reply to all your questions would require to write down a long article about
each and every LDraw syntax element and how and why it evolved that way.
Also this my reply should not be understood as a criticism of your question, it just explains why answering it is a little difficult.
As a suggestion I would like to say that a good starting point could be to accept the existing standards for now and write
a software operating on them. Future extensions and modifications are always possible.
If you want to build a house but start redesigning all nuts and bolts and tools for that, you will probably never finish the house itself.
You need some firm ground to stand on and from which to take off.
I suggest to begin with writing a parser for the LDraw file format. The format is so simple that doing that
and rendering the loaded data into some 3D scene should give you maybe good energy and faith for anything more that you want to build.
As said, good to see you around here!
Your post is a little difficult to answer because it is a little like
"Hey, I want to build a car, so why are there 4 wheels, and what about the windshield?"
The main answer is that many things in the file format still are today as they were when they were created by James Jessiman.
We preserved them because changing them fundamentally would immediately break everything that exists,
from software to parts to models to websites (like the Parts Tracker).
He for example chose to have 3 translation numbers x y z, plus the rotation matrix separate in lines of syntax type 1.
It is trivial for a program to read in these numbers and put them into a standard 4x4 matrix which is used
wide-spreadedly in 3D software. So this difference just is an oddity, but not a real problem.
The same goes for the definition of the coordinate system: yes, it might be a little
awkward and different than elsewhere, but on the other hand it just is mathematically equal to any other possible choice.
You just need to use it right, and that would be the same also for all other coordinate system choices.
The BFC elements exist exactly for the purpose you already mentioned, i.e., orienting surfaces properly so that rendering
software can run faster: surfaces not pointing to the user normally cannot be seen, and their rendering effort can be saved.
Of course not for transparent parts. And so on. A real reply to all your questions would require to write down a long article about
each and every LDraw syntax element and how and why it evolved that way.
Also this my reply should not be understood as a criticism of your question, it just explains why answering it is a little difficult.
As a suggestion I would like to say that a good starting point could be to accept the existing standards for now and write
a software operating on them. Future extensions and modifications are always possible.
If you want to build a house but start redesigning all nuts and bolts and tools for that, you will probably never finish the house itself.
You need some firm ground to stand on and from which to take off.
I suggest to begin with writing a parser for the LDraw file format. The format is so simple that doing that
and rendering the loaded data into some 3D scene should give you maybe good energy and faith for anything more that you want to build.
As said, good to see you around here!