Re: [NTG-context] MetaPost: Confusion with `function()` and `xyscaled`

2011-10-23 Thread Paul Menzel
Am Freitag, den 21.10.2011, 18:08 +0200 schrieb Peter Rolf:
 Am 21.10.2011 17:26, schrieb Paul Menzel:

  Am Freitag, den 21.10.2011, 17:02 +0200 schrieb Peter Rolf:
  
  I agree, this is confusing on the first sight. But scaling is not meant
  as 'scaling to' a dimension. In fact is is just a simple multiplication.
  The reason why it seems to work this way with
  'fullsquare' and such predefined paths is, that they have a 'neutral'
  size/scale (bounding box size of filled path is (1pt,1pt)).
  
  So how can I find out what the dimension of the path of a function is?
  Not scaling it, it also looked pretty small, so I am guessing (1pt,1pt).
 
 I guess in this case its size is (10,log(10)) + pen size when drawn.

That was it kind of. Probably the most of my confusion resulting from
the use of the inverse function.

So all in all the width is 1 – the x-coordinates seem to be scaled to
the width of 1 – and the height is 10, as ten is the highest value.
Therefore the width has to be multiplied with 10cm to get it to 10cm and
since the height it 10 already multiplying it with 2cm gets it to 20cm.

  Multiplying such a path with (x,y) gives an object with size (1*x,1*y).
  In general: if the bounding box of an object has the size (a,b) and you
  scale it with (x,y), the resulting object has a size of (ax,by). That's
  all the magic.
  
  but if you use numbers with a unit than it should not be multiplied but
  expanded to that value, should not it? Otherwise I am unsure how
  multiplication works with a unit.

 1pt is the base unit in MP (used if no dimension is given; probably
 stored as 65536sp (scaled point) units).

In the manual I only found bp for »big point«, which equal PostScript
points equaling 1/72 of an inch.

 Now if you use pure numerics for scale, such as 'xscaled 2', this is
 interpreted as '2pt' (or 2*65536sp). If you use any dimension, it is
 also converted into scaled points. All the same for MP.
 
 If I'm right this should all be the same (untested)
 
 xscaled 2
 xscaled 2pt

This gives the same result.

 xscaled (2*65536sp)

I could not test the above because the numbers got too big and MetaPost
complained.

 1 = 1pt = 65536sp

[…]


Thanks,

Paul


signature.asc
Description: This is a digitally signed message part
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

Re: [NTG-context] MetaPost: Confusion with `function()` and `xyscaled`

2011-10-23 Thread Peter Rolf
Am 23.10.2011 16:12, schrieb Paul Menzel:
 Am Freitag, den 21.10.2011, 18:08 +0200 schrieb Peter Rolf:
 Am 21.10.2011 17:26, schrieb Paul Menzel:
 
 Am Freitag, den 21.10.2011, 17:02 +0200 schrieb Peter Rolf:

 I agree, this is confusing on the first sight. But scaling is not meant
 as 'scaling to' a dimension. In fact is is just a simple multiplication.
 The reason why it seems to work this way with
 'fullsquare' and such predefined paths is, that they have a 'neutral'
 size/scale (bounding box size of filled path is (1pt,1pt)).

 So how can I find out what the dimension of the path of a function is?
 Not scaling it, it also looked pretty small, so I am guessing (1pt,1pt).

 I guess in this case its size is (10,log(10)) + pen size when drawn.
 
 That was it kind of. Probably the most of my confusion resulting from
 the use of the inverse function.
 
 So all in all the width is 1 – the x-coordinates seem to be scaled to
 the width of 1 – and the height is 10, as ten is the highest value.
 Therefore the width has to be multiplied with 10cm to get it to 10cm and
 since the height it 10 already multiplying it with 2cm gets it to 20cm.

I see. I must admit that I haven't looked deeper into function (never
used it).

If I want to test the bounding box of a graphic, I normally use a small
debugging macro (last code line of nearly all of my graphics). It simply
draws a small red frame at the bounding box borders. You can use the
'Measuring Tool' in Acrobat (also Reader?) or even better the 'Object
Inspector' to get the exact size.

minlinewidth:= .143pt;

def wirepen= pencircle scaled minlinewidth enddef ;

def drawbb =
drawoptions() ;
interim linejoin:= mitered;
draw (llcorner currentpicture) shifted ( .5minlinewidth,
.5minlinewidth)
--   (lrcorner currentpicture) shifted (-.5minlinewidth,
.5minlinewidth)
--   (urcorner currentpicture) shifted
(-.5minlinewidth,-.5minlinewidth)
--   (ulcorner currentpicture) shifted (
.5minlinewidth,-.5minlinewidth)
--   cycle
withpen wirepen withcolor red;
%  draw boundingbox currentpicture withpen wirepen withcolor red ; % was
not neutral!
enddef ;


 Multiplying such a path with (x,y) gives an object with size (1*x,1*y).
 In general: if the bounding box of an object has the size (a,b) and you
 scale it with (x,y), the resulting object has a size of (ax,by). That's
 all the magic.

 but if you use numbers with a unit than it should not be multiplied but
 expanded to that value, should not it? Otherwise I am unsure how
 multiplication works with a unit.

 1pt is the base unit in MP (used if no dimension is given; probably
 stored as 65536sp (scaled point) units).
 
 In the manual I only found bp for »big point«, which equal PostScript
 points equaling 1/72 of an inch.

It can't be helped, I always mix this up. :-D
It's 'bp' for MP and for Adobe products, and 'pt' for TeX. Ask me in a
few weeks and I can't give the correct answer.

 
 Now if you use pure numerics for scale, such as 'xscaled 2', this is
 interpreted as '2pt' (or 2*65536sp). If you use any dimension, it is
 also converted into scaled points. All the same for MP.

 If I'm right this should all be the same (untested)

 xscaled 2
 xscaled 2pt
 
 This gives the same result.
 
 xscaled (2*65536sp)
 
 I could not test the above because the numbers got too big and MetaPost
 complained.

My fault. In the meantime I have checked it and 'sp' is not a predefined
constant in MP (couldn't find it in the manual). Also never used it in MP.

 1 = 1pt = 65536sp
 
 […]
 
 
 Thanks,
 
 Paul
 
 
 
 ___
 If your question is of interest to others as well, please add an entry to the 
 Wiki!
 
 maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
 webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
 archive  : http://foundry.supelec.fr/projects/contextrev/
 wiki : http://contextgarden.net
 ___

___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

Re: [NTG-context] MetaPost: Confusion with `function()` and `xyscaled`

2011-10-23 Thread Hans Hagen

On 23-10-2011 17:17, Peter Rolf wrote:

If I want to test the bounding box of a graphic, I normally use a small
debugging macro (last code line of nearly all of my graphics). It simply
draws a small red frame at the bounding box borders. You can use the
'Measuring Tool' in Acrobat (also Reader?) or even better the 'Object
Inspector' to get the exact size.

minlinewidth:= .143pt;

def wirepen= pencircle scaled minlinewidth enddef ;

def drawbb =
 drawoptions() ;
 interim linejoin:= mitered;
 draw (llcorner currentpicture) shifted ( .5minlinewidth,
.5minlinewidth)
 --   (lrcorner currentpicture) shifted (-.5minlinewidth,
.5minlinewidth)
 --   (urcorner currentpicture) shifted
(-.5minlinewidth,-.5minlinewidth)
 --   (ulcorner currentpicture) shifted (
.5minlinewidth,-.5minlinewidth

)

 --   cycle
 withpen wirepen withcolor red;
%  draw boundingbox currentpicture withpen wirepen withcolor red ; % was
not neutral!
enddef ;


draw boundingbox currentpicture enlarged -.5minlinewidth withpen wirepen 
withcolor red ;



My fault. In the meantime I have checked it and 'sp' is not a predefined
constant in MP (couldn't find it in the manual). Also never used it in MP.


1 = 1pt = 65536sp


sp's would overflow anyway

Hans

-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
 | www.pragma-pod.nl
-
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___


Re: [NTG-context] MetaPost: Confusion with `function()` and `xyscaled`

2011-10-21 Thread Paul Menzel
Dear Peter,


thank you for your answer.

Am Freitag, den 21.10.2011, 17:02 +0200 schrieb Peter Rolf:

 I agree, this is confusing on the first sight. But scaling is not meant
 as 'scaling to' a dimension. In fact is is just a simple multiplication.
 The reason why it seems to work this way with
 'fullsquare' and such predefined paths is, that they have a 'neutral'
 size/scale (bounding box size of filled path is (1pt,1pt)).

So how can I find out what the dimension of the path of a function is?
Not scaling it, it also looked pretty small, so I am guessing (1pt,1pt).

 Multiplying such a path with (x,y) gives an object with size (1*x,1*y).
 In general: if the bounding box of an object has the size (a,b) and you
 scale it with (x,y), the resulting object has a size of (ax,by). That's
 all the magic.

but if you use numbers with a unit than it should not be multiplied but
expanded to that value, should not it? Otherwise I am unsure how
multiplication works with a unit.

 I must admit that this wasn't clear to me before you came up with your
 question. So thanks for that. :-)

Thank you for your answer. As written above it is still not entirely
clear to me. I hope you can remedy my last confusion.


Thanks a lot,

Paul


signature.asc
Description: This is a digitally signed message part
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

Re: [NTG-context] MetaPost: Confusion with `function()` and `xyscaled`

2011-10-21 Thread Peter Rolf
Am 21.10.2011 17:26, schrieb Paul Menzel:
 Dear Peter,
 
 
 thank you for your answer.
 
 Am Freitag, den 21.10.2011, 17:02 +0200 schrieb Peter Rolf:
 
 I agree, this is confusing on the first sight. But scaling is not meant
 as 'scaling to' a dimension. In fact is is just a simple multiplication.
 The reason why it seems to work this way with
 'fullsquare' and such predefined paths is, that they have a 'neutral'
 size/scale (bounding box size of filled path is (1pt,1pt)).
 
 So how can I find out what the dimension of the path of a function is?
 Not scaling it, it also looked pretty small, so I am guessing (1pt,1pt).

I guess in this case its size is (10,log(10)) + pen size when drawn.

 
 Multiplying such a path with (x,y) gives an object with size (1*x,1*y).
 In general: if the bounding box of an object has the size (a,b) and you
 scale it with (x,y), the resulting object has a size of (ax,by). That's
 all the magic.
 
 but if you use numbers with a unit than it should not be multiplied but
 expanded to that value, should not it? Otherwise I am unsure how
 multiplication works with a unit.

1pt is the base unit in MP (used if no dimension is given; probably
stored as 65536sp (scaled point) units).

Now if you use pure numerics for scale, such as 'xscaled 2', this is
interpreted as '2pt' (or 2*65536sp). If you use any dimension, it is
also converted into scaled points. All the same for MP.

If I'm right this should all be the same (untested)

xscaled 2
xscaled 2pt
xscaled (2*65536sp)

1 = 1pt = 65536sp


 I must admit that this wasn't clear to me before you came up with your
 question. So thanks for that. :-)
 
 Thank you for your answer. As written above it is still not entirely
 clear to me. I hope you can remedy my last confusion.
 
 
 Thanks a lot,
 
 Paul
 
 
 
 ___
 If your question is of interest to others as well, please add an entry to the 
 Wiki!
 
 maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
 webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
 archive  : http://foundry.supelec.fr/projects/contextrev/
 wiki : http://contextgarden.net
 ___

___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___