| 
|  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | Is there a simple straightforward way to "mirror" objects in a plane?
For example, convert <-1, 0, 0,> to <1, 0, 0>?
I'm not yet familiar enough with the voluminous documentation to know what to
look for, or of there's vector function that handles this.
 Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | On 31/07/2013 9:30 PM, Bald Eagle wrote:
> Is there a simple straightforward way to "mirror" objects in a plane?
>
> For example, convert <-1, 0, 0,> to <1, 0, 0>?
Have you tried <-1, 0, 0,> * -1 ?
or <-1, 0, 0,> *<-1, 0, 0> ?
-- 
Regards
     Stephen
Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | Indeed, that would be trivial for a point or dozen.
I guess my actual question is:
(a) can this be done to objects, unions, etc.
for example: [fake illustrative code]
object(My_Object) * -1
InvVector (My_Object), Mirror (My_Object) ... you get the idea.
and/or
(b) is there a way process an SDL file to switch from left handed to right
handed world coordinates?
Sorry for the confusion.
 Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | 
> Is there a simple straightforward way to "mirror" objects in a plane?
>
> For example, convert <-1, 0, 0,> to <1, 0, 0>?
> I'm not yet familiar enough with the voluminous documentation to know what to
> look for, or of there's vector function that handles this.
>
>
Very easy, just use a scale with a negative value along one of the axis.
scale<-1,1,1> will mirror any object left to right. If the object is 
some distance from the origin, it will also move to the oposite side.
box{<10,1,1><12,3,3> scale <-1,1,1>}
will now reside from -12 to -10 along the x axis.
scale<1,-1,1> will mirror verticaly and scale<1,1,-1> will mirror front 
to back.
scale -1 will inverse your object in all direction.
It's possible to mirror relative to an non-orthogonal plane, but it's 
somewhat more complexe. It can involve some rotation, inverting scalling 
and a reversed rotation to undo the original one. An advanced option 
will use a matrix transform.
box{<1,1,1><2,2,2> rotate 30*z scale<-1,1,1> rotate -30*z}
It's beter to create your object around the origin, apply any scalling 
and rotation, THEN translate it to the desired location.
Otherwise, the scalling and rotation will cause the object to move around.
Alain
Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | Am 31.07.2013 23:49, schrieb Bald Eagle:
> I guess my actual question is:
> (a) can this be done to objects, unions, etc.
> for example: [fake illustrative code]
> object(My_Object) * -1
> InvVector (My_Object), Mirror (My_Object) ... you get the idea.
Alain already mentioned the use of the scale keyword for that purpose.
> and/or
> (b) is there a way process an SDL file to switch from left handed to right
> handed world coordinates?
Yes: By defining all three of the "up", "right" and "direction" vectors 
in the camera block you get full control over the coordinate system. The 
following will give you a right-handed one:
     right      x*image_width/image_height
     up         y
     direction -z
or:
     right      x
     up         y*image_height/image_width
     direction -z
or:
     right      x*image_width
     up         y*image_height
     direction -z
but also (e.g.):
     right      x*image_width
     up         z*image_height
     direction  y
Note that besides specifying the handedness of the coordinate system 
this also sets the camera's aspect ratio, hence the image_width and 
image_height factors; it also initializes the camera orientation and 
field of view, but you can override those using the look_at and angle 
keywords.
Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |