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
|
|
|
|