[Morphic] Morph 3.0

Jerome Peace peace_the_dreamer at yahoo.com
Thu Jun 21 22:05:31 UTC 2007


--- Juan Vuletich <juan at jvuletich.org> wrote:

> Hi Jerome!
> 
> I'm so glad you're looking at my work! 
> 
> Jerome Peace escribió:
> > Hi Juan,
> >
> > Two thought have just come together and I am
> excited.
> >   
> :)
> > >From morphic 3.o I was looking at the ivars for
> > Location
> > and comparing them to problems I've been working
> thru
> > with making polygons tilt just like rectanges and
> > ellipses.
> >
> > The problem I noticed with Location was that you
> had
> > angle but no scale.
> >
> > >From my work with polygons I know that angle and
> scale
> > are natural partners.
> >   
> Well, having scale means that somewhere you also
> have the natural size, 
> i.e. the size when scale is 1. I think that rotating
> an object is 
> something natural in the real world, but applying a
> scale factor is not.

Hmm. What I am using for inspiration is the contrast
between the yellow growth handle on morphs and the
outer handle on a star morph.

With a star as you use the outer handle, the
invariable is the shape. The parts stay the same
relative to each other but the scale and the angle may
both change.

This is a really useful transformation. It allows you
to have all sorts of objects of similar shape but
different scale and orientation.

It is done by matching the scale and angle to the
polar coordinates of the vector from center to outer
handle.

The yellow growth handle on the other hand affects the
aspect ratio of x and y coordinates.  If left
completely unfettered you would have a morph transform
(around its reference point) in response to the x and
y magnitude (and sign) of the vector from reference
point to yellow handle.  

The two interpertations of the vector are mutually
exclusive though they can overlap. You could constrain
the growth handle to just scale (as the orange handle
does). 

With the yellow handle presently there are limits put
on the range of growth and shrinkage.

The blue handle is similar to the stars outer handle
but constrains the rotation of morphs to maintain the
same size. A rotated morph can only be scaled (orange
handle) it can no longer be stretched. 

 
> What would be the meaning for a scale factor in M3
> morphs?

angle and scale would belong to the location.

xaspect and yaspect would not belong to location but
be a parameter of a cartesian coordinate system.
In my conception I would have a class of orthogonal
coordinates which would have points coded in the range
-1 <=coord<=+1 then multiply by and coord aspect.

so the aspects could both be 0.5 and you would get
your unit square. or they could be some other aspect
ratio.

In manipulating the morph you could put a yellow
handle to adjust (stretch) the aspect ratio of the
coord system. Circles become ellipses. Squares become
rectangles. The yellow handle growth would not affect
the angle and it would always (for cartesian coords)
apply to the coord system. Furthmore you could honor
negative aspects as directions to reflect one or more
axes. 

> > xextent and yextent are not substitutes. Indeed
> they
> > cause ambiguity because unless you look at the
> works
> > you wonder if you turn the morph first then apply
> the
> > extent scalers or the other way around. 
> >   
> In my opinion, rotating an object does not change
> width and height. 
> Let's suppose you have a morph with angle zero. You
> adjust the width to 
> be w1 and the height to be h1. The width w1 is
> measured along the X axis 
> of the owner and the height h1 is measured along the
> Y axis of the 
> owner. Then we rotate the morph, for example, by 30
> degrees. If we 
> measure the extent along the X axis of the owner, it
> is no longer w1, 
> and the extent along the Y axis is no longer h1.
> However, these are not 
> the width and height of the morph, which are the
> same as before. In 
> other words: my height is about 5'6". If I lay on a
> bed, my height is 
> not 1'. It is the same as before. Do you agree?

It would depend on whether you had this-end-up stamped
on your forehead or along your left arm. :-)

In the reference system you take with you to bed its
one way. In the reference system gravity supplies to
the world its the other. And looked at from a more
distant reference it will change in 6 hours time while
you sleep.

The bug in morphic is that the words we use can't
distinguish.

When I rotate a polygon, Its submorphs stay in their
upright orientation and translate with respect to the
changing #topLeft boundry point. 

When I rotate an image or a rectangle all the
submorphs rotate around their refpoints which in turn
rotate around the rectangles reference point.

When I set out to fix the difference I came to the
understanding that rotate and scale which must
maintain the aspect ratio of things, differ from
stretch and reflect which can change the aspect ratio
of things but must maintain the orientation.

The way they are done now (with stretch implemented by
extent:) rotation and stretch are not commutative
operations. You can see this with polygons most
easily.

What I've been striving for is elegance and the lack
of limitations on transform operations. And that
starts to come when I recognise that I can ask for
rotate and scale in the same manipulation. Or I can
ask for stretch/reflect at the same time. But I cannot
mix the two.

So seeing the ivars for location the lack of the scale
ivar jumped out. As did the presence of the aspect
ivars clearly there to facilitate scale. Aspect
belongs to the coord system. Even though aspect and
scale can overlap achieving generality is eased when
they are both present and can be treated separately.

> > What I found was in any given operation you had to
> > choose rotate and scale 
> > or 
> > stretch and reflect (That's what should happen
> when
> > one of the extent scalers go negative)
> >
> >   
> I don't understand this. Please elaborate.
> > The other decision I realized from my work with
> > polygons was to get polygons to truely rotate
> (with
> > their submorphs doing the same thing) I had to
> collect
> > the submorphs refernce locations and subject them
> to
> > the same transformation as the polygon (rotate and
> > scale or stretch and reflect) 
> >   
> Well, this is not needed in M3, as the location is
> always relative to 
> the owner. If you change the ivar angle in the
> location in the owner, 
> all the submorphs rotate correctly. You can try it
> yourself in my image, 
> with the halo.

I did. That's why I know you are on the right track.

I believe there is a very easy way of doing morphic
which people didn't see at first. We can see farther
because we stand on the shoulders of giants. :-)

Yours in curiosity and service, --Jerome Peace



       
____________________________________________________________________________________
Pinpoint customers who are looking for what you sell. 
http://searchmarketing.yahoo.com/


More information about the Morphic mailing list