To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.cadOpen lugnet.cad in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 CAD / 11654
Subject: 
Re: Quick way to mirror-image a model?
Newsgroups: 
lugnet.cad
Date: 
Thu, 24 Jun 2004 17:53:31 GMT
Viewed: 
4221 times
  
In lugnet.cad, Don Heyse wrote:
In lugnet.cad, Carl Nelson wrote:
What about a flag for default behavior?  I've been coding to ignore
ones with default rotations,

Why?  I have a slow PC, and running the mirwiz.exe program is
nearly instantaneous.  It's a lookup and 2 matrix multiplies per
part.  If the exception matrix lookup fails, use the default matrix.
It would take extra, unneeded code to ignore things.  Resist the
urge...

Why process something as an exception when the default behavior is needed?  It's
all in what one sees as extra, unneeded code. ;-)

Though I just did some timing and I don't see any performance differences
between ignoring them and not.

but there are plenty of parts (especially slopes) that need a
(-1 0 0 0 1 0 0 0 1) rotation

Stop saying rotation.  It makes me think you're not doing it right.
That's a mirror matrix.

Exception matrix would probably be the best term, since it *always* mirrors and
*may* rotate.

If you *always* do the same matrix math there's no need to
distinguish.  If you're not, then you're making extra busy work
for yourself and possibly introducing bugs.  Here's the pseudo code.

  for (*ALL* parts in the subfile)
  {
    float m[4][4];  // Tempory working matrix.
    float md[4][4] = { // Default = left-right mirror
      {-1.0,0.0,0.0,0.0},
      {0.0,1.0,0.0,0.0},
      {0.0,0.0,1.0,0.0},
      {0.0,0.0,0.0,1.0}
    };
    float *me = md; // Init exception mirror to left-right (the default).
    float *mp = md; // Init global subfile mirror to left-right.

    for( i=0; i< numExceptions; i++ )
    {
       if (exception[i] matches this part)
       {
  // Use the matrix from the exception list (instead of md).
  me = exception[i].matrix
  // Also use the substitute partname
  strcpy(datname, exception[i].datname);
  break;
}
    }
    M4M4Mul(m,LinePtr->v,me); // Run the initial mirror on the part
    M4M4Mul(LinePtr->v,mp,m); // Apply global subfile mirror to part

    // NOTE: You can set mp to mirror across whatever plane you want.
    //       The example here mirrors the subfile across the YZ plane.
  }

It's simple and it's all done with mirrors, except for a few weird
parts which might contain a rotation and/or translation component
mixed in with the mirroring in the me matrix.

My reservation about doing it this way is that it is exclusively tied to a reflection matrix of (-1 0 0 0 1 0 0 0 1)--please see my response to your 2nd message.

So far I've only found a few door parts that need a translation
component.  See http://ldglite.sf.net/mirror.ini for details on
the doors.

Same here.  BTW, do you want me to send you the parts that I've changed
mirror.ini for already?  I've also confirmed some as correct by rotating
different models.

Carl


Subject: 
Re: Quick way to mirror-image a model?
Newsgroups: 
lugnet.cad
Date: 
Thu, 24 Jun 2004 21:06:32 GMT
Viewed: 
4273 times
  
In lugnet.cad, Carl Nelson wrote:
Why process something as an exception when the default behavior is needed?
It's all in what one sees as extra, unneeded code. ;-)

Well, yeah.  But it's simpler to process it all -- the only exceptional
processing you need is "look for the part in mirror.ini.  If not found, use the
default settings".

With your method, you have to also add "if the matrix looks like MD, then
process with method_a; otherwise, use method_b".

HOWEVER, you should process all parts through the mirroring operation -
otherwise, you can't handle parts at arbitrary orientations.  And if you apply
just the reflection matrix (MP), you'll get reversed stud-logos in your
renderings.

Exception matrix would probably be the best term, since it *always* mirrors > and *may* rotate.

Or transformation matrix, or pre-reflection matrix.

Steve


Subject: 
Re: Quick way to mirror-image a model?
Newsgroups: 
lugnet.cad
Date: 
Thu, 24 Jun 2004 21:11:29 GMT
Viewed: 
4365 times
  
Oops, I missed replying to one point.

In lugnet.cad, Carl Nelson wrote:
My reservation about doing it this way is that it is exclusively tied to a
reflection matrix of (-1 0 0 0 1 0 0 0 1)--please see my response to your
2nd message.

If you mean (-1 0 0 0 1 0 0 0 1) as the 'default' matrix, my response is: that default matrix works for *any* reflection across any arbitrary plane.

If you mean (-1 0 0 0 1 0 0 0 1) as the reflection matrix, my response is: Don's algorithm works for *any* reflection across any arbitrary plane.

Steve


Subject: 
Re: Quick way to mirror-image a model?
Newsgroups: 
lugnet.cad
Date: 
Thu, 24 Jun 2004 21:23:03 GMT
Viewed: 
4471 times
  
In lugnet.cad, Steve Bliss wrote:
Oops, I missed replying to one point.

In lugnet.cad, Carl Nelson wrote:
My reservation about doing it this way is that it is exclusively tied to a
reflection matrix of (-1 0 0 0 1 0 0 0 1)--please see my response to your
2nd message.

If you mean (-1 0 0 0 1 0 0 0 1) as the 'default' matrix, my response is:
that default matrix works for *any* reflection across any arbitrary plane.

If you mean (-1 0 0 0 1 0 0 0 1) as the reflection matrix, my response is:
Don's algorithm works for *any* reflection across any arbitrary plane.

Uh, I thought we were refering to it as "Steve's algorithm".  Are you
having 2nd thoughts?  ;^)

Enjoy,

Don

PS.  Why am I constantly seeing really long lines in the browser for this
thread.  It makes things really hard to read when I have to scroll 2
miles to the right.


Subject: 
Re: Quick way to mirror-image a model?
Newsgroups: 
lugnet.cad
Date: 
Thu, 24 Jun 2004 21:49:15 GMT
Viewed: 
4509 times
  
In lugnet.cad, Don Heyse wrote:
Uh, I thought we were refering to it as "Steve's algorithm".  Are you
having 2nd thoughts?  ;^)

Sorry, I should have said "Don's pseudo-code". ;)

PS.  Why am I constantly seeing really long lines in the browser for this
thread.  It makes things really hard to read when I have to scroll 2
miles to the right.

I don't know - I'm replying via the web interface, posting with plain text.


Subject: 
Re: Quick way to mirror-image a model?
Newsgroups: 
lugnet.cad
Date: 
Fri, 25 Jun 2004 02:43:13 GMT
Viewed: 
4536 times
  
In lugnet.cad, Steve Bliss wrote:
Oops, I missed replying to one point.

In lugnet.cad, Carl Nelson wrote:
My reservation about doing it this way is that it is exclusively tied to a
reflection matrix of (-1 0 0 0 1 0 0 0 1)--please see my response to your
2nd message.

If you mean (-1 0 0 0 1 0 0 0 1) as the 'default' matrix, my response is: that default matrix works for *any* reflection across any arbitrary plane.

If you mean (-1 0 0 0 1 0 0 0 1) as the reflection matrix, my response is: Don's algorithm works for *any* reflection across any arbitrary plane.

Alright, I give up then.  I've accomplished my original goal of mirroring a
model, and I'm just confusing and frustrating myself and wasting your and Don's
time with stupid questions.

I've put the newest executable & source code at:

http://www.carlnelson.com/page.asp?SID=1&Page=43

Thanks,
Carl


Subject: 
Re: Quick way to mirror-image a model?
Newsgroups: 
lugnet.cad
Date: 
Fri, 2 Jul 2004 21:08:06 GMT
Viewed: 
4848 times
  
In lugnet.cad, Carl Nelson wrote:
I've put the newest executable & source code at:

http://www.carlnelson.com/page.asp?SID=1&Page=43

Before I forget, Steve finished examining all the parts, so
I've put the complete mirror.ini file here for now.

  http://ldglite.sourceforge.net/mirwiz.zip

Enjoy,

Don


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