To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.cad.dev.org.ldrawOpen lugnet.cad.dev.org.ldraw in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 CAD / Development / Organizations / LDraw / 1928
1927  |  1929
Subject: 
Re: [Parts Tracker] More BFC Primitives
Newsgroups: 
lugnet.cad.dev.org.ldraw
Date: 
Tue, 9 Apr 2002 00:30:43 GMT
Viewed: 
523 times
  
Maybe I'm more confused now, or less who knows. But I don't
think I made what I was trying to say clear in that last post.
So here I am replying to myself... :)



Kyle McDonald wrote:

Steve Bliss wrote:


The problem here is that non-inverting mirroring is very commonplace in
LDraw parts, and in some places it can't be avoided (except by
inlining).  For example, most parts that appear in a right- and
left-hand pair (wings, exhaust pipes, etc) are set up so that only one
file has the full DAT code -- the other file of the pair just has a
mirrored reference to its partner.



Non-inverting mirroring? Do you mean mirroring where the author doesn't
*intend* inverting? or are you saying it's possible to create a matrix
that would mirror without inverting?

I see two cases, maybe there are more I'm not seeing??

The first is intended inversion where a cylinder primitive that is wound
to face 'outward' is included with a matrix that turns it inside out so
that the faces face inward, for say the inside surface of a 'tube'.
In this case, if I understood correctly you would want the Part author to
*also* add the 0 BFC INVERTNEXT  command??  To me that seems uneeded if
the Matrix already takes care of it. The program now, instead of flipping
the faces because of the command, needs to also not 'unflip' them because
of the matrix. No?


That last sentance doesn't really get across what I was trying to say I think.
Maybe some pseudo code??

It seems to me that the current usage would be:

if( preceeding_line == '0 BFC INVERTNEXT' ) then
   {
     if( ! isMirrorMatrix( matrix ) )  \\ Not mirrored so *do* the INVERTNEXT.
       flip_faces( sub_file );
     else
       do_nothing();                   \\ Mirroring alreay inverts the subfile
                                       \\ so ignore the INVERTNEXT
   }
else
   {
     if( isMirrorMatrix( matrix ) )   \\ Not inverted, but mirrored, so *undo*
       flip_faces( sub_file );        \\ the inversion the mirror matrix caused.
     else
       do_nothing();                  \\ Not inverted, not mirrored, do nothing.
   }

attach_geometry(matrix, sub_file);

Whereas, I was suggesting:

if( preceeding_line == '0 BFC INVERTNEXT' )
   flip_faces( subfile );

Of course this would *require* the mirror's that didn't want inversion
to have '0 BFC INVERTNEXT' inserted before them. I know this would be
alot of work for the existing library, but I would think it would be
pretty easy for new parts, since the author knows wether he wants the
inversion that the mirroring will get him/her.

Are there cases where adding the INVERTNEXT before the mirror matrix
would *not* undo the inversion? I'm not really arguing to change things,
so much as I'm trying to make sure I understand all the details. I
think it'd be worth changing, but I understand it's alot of work too.

-Kyle



--
                                    _
-------------------------------ooO( )Ooo-------------------------------
Kyle J. McDonald                 (o o)
                                  |||||

                                  \\\//
                                  (o o)            kmcdonald@BigFoot.COM
-------------------------------ooO(_)Ooo-------------------------------



Message is in Reply To:
  Re: [Parts Tracker] More BFC Primitives
 
Steve Bliss wrote: > In lugnet.cad.dev.org.ldraw, Kyle McDonald wrote: > [snip more] > > You understand the usage correctly. Except there's no special tie > between a 'mirroring' subfile reference and the INVERTNEXT command. > Authors won't (...) (23 years ago, 9-Apr-02, to lugnet.cad.dev.org.ldraw)

21 Messages in This Thread:





Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR