METAPOST equivalent to TikZ polar coordinates?
up vote
5
down vote
favorite
When drawing with TikZ, I find sometime convenient to use polar coordinates (angle:distance), as in this MWE
documentclass{article}
usepackage{tikz}
begin{document}
begin{tikzpicture}
[pole/.style={circle,draw=gray,fill=gray,thick,text width=2cm, align=center}]
node[pole] (eur) at (60:3cm) {Europe};
node[pole] (afr) at (300:3cm) {Afrique};
node[pole] (amq) at (180:3cm) {Amérique};
end{tikzpicture}
end{document}
How can I get a similar effect using METAPOST ? I could'nt find direct answer in the manual. I am quite sure one can achieve the same with a good knowledge of geometry. It would be good for scripting.
So far, my METAPOST equivalent would be
beginfig(1);
u:=1cm ;
label(btex Amérique etex, (-3u,0) ) ;
label(btex Europe etex, (u,2u) ) ;
label(btex Afrique etex, (u,-2u) ) ;
endfig ;
end
Of course this are not polar coordinates and I am even not sure angles are the same as in TikZ.
Since I am not a scientist, I would be glad to have some explanation if some geometry knowledge is required.
metapost
add a comment |
up vote
5
down vote
favorite
When drawing with TikZ, I find sometime convenient to use polar coordinates (angle:distance), as in this MWE
documentclass{article}
usepackage{tikz}
begin{document}
begin{tikzpicture}
[pole/.style={circle,draw=gray,fill=gray,thick,text width=2cm, align=center}]
node[pole] (eur) at (60:3cm) {Europe};
node[pole] (afr) at (300:3cm) {Afrique};
node[pole] (amq) at (180:3cm) {Amérique};
end{tikzpicture}
end{document}
How can I get a similar effect using METAPOST ? I could'nt find direct answer in the manual. I am quite sure one can achieve the same with a good knowledge of geometry. It would be good for scripting.
So far, my METAPOST equivalent would be
beginfig(1);
u:=1cm ;
label(btex Amérique etex, (-3u,0) ) ;
label(btex Europe etex, (u,2u) ) ;
label(btex Afrique etex, (u,-2u) ) ;
endfig ;
end
Of course this are not polar coordinates and I am even not sure angles are the same as in TikZ.
Since I am not a scientist, I would be glad to have some explanation if some geometry knowledge is required.
metapost
You can easily convert r and φ to cartesian coordinates using the prescription (x,y) = (r*cos(φ),r*sin(φ))
– Henri Menke
Nov 15 at 20:21
add a comment |
up vote
5
down vote
favorite
up vote
5
down vote
favorite
When drawing with TikZ, I find sometime convenient to use polar coordinates (angle:distance), as in this MWE
documentclass{article}
usepackage{tikz}
begin{document}
begin{tikzpicture}
[pole/.style={circle,draw=gray,fill=gray,thick,text width=2cm, align=center}]
node[pole] (eur) at (60:3cm) {Europe};
node[pole] (afr) at (300:3cm) {Afrique};
node[pole] (amq) at (180:3cm) {Amérique};
end{tikzpicture}
end{document}
How can I get a similar effect using METAPOST ? I could'nt find direct answer in the manual. I am quite sure one can achieve the same with a good knowledge of geometry. It would be good for scripting.
So far, my METAPOST equivalent would be
beginfig(1);
u:=1cm ;
label(btex Amérique etex, (-3u,0) ) ;
label(btex Europe etex, (u,2u) ) ;
label(btex Afrique etex, (u,-2u) ) ;
endfig ;
end
Of course this are not polar coordinates and I am even not sure angles are the same as in TikZ.
Since I am not a scientist, I would be glad to have some explanation if some geometry knowledge is required.
metapost
When drawing with TikZ, I find sometime convenient to use polar coordinates (angle:distance), as in this MWE
documentclass{article}
usepackage{tikz}
begin{document}
begin{tikzpicture}
[pole/.style={circle,draw=gray,fill=gray,thick,text width=2cm, align=center}]
node[pole] (eur) at (60:3cm) {Europe};
node[pole] (afr) at (300:3cm) {Afrique};
node[pole] (amq) at (180:3cm) {Amérique};
end{tikzpicture}
end{document}
How can I get a similar effect using METAPOST ? I could'nt find direct answer in the manual. I am quite sure one can achieve the same with a good knowledge of geometry. It would be good for scripting.
So far, my METAPOST equivalent would be
beginfig(1);
u:=1cm ;
label(btex Amérique etex, (-3u,0) ) ;
label(btex Europe etex, (u,2u) ) ;
label(btex Afrique etex, (u,-2u) ) ;
endfig ;
end
Of course this are not polar coordinates and I am even not sure angles are the same as in TikZ.
Since I am not a scientist, I would be glad to have some explanation if some geometry knowledge is required.
metapost
metapost
asked Nov 15 at 20:02
sztruks
1,211716
1,211716
You can easily convert r and φ to cartesian coordinates using the prescription (x,y) = (r*cos(φ),r*sin(φ))
– Henri Menke
Nov 15 at 20:21
add a comment |
You can easily convert r and φ to cartesian coordinates using the prescription (x,y) = (r*cos(φ),r*sin(φ))
– Henri Menke
Nov 15 at 20:21
You can easily convert r and φ to cartesian coordinates using the prescription (x,y) = (r*cos(φ),r*sin(φ))
– Henri Menke
Nov 15 at 20:21
You can easily convert r and φ to cartesian coordinates using the prescription (x,y) = (r*cos(φ),r*sin(φ))
– Henri Menke
Nov 15 at 20:21
add a comment |
1 Answer
1
active
oldest
votes
up vote
7
down vote
accepted
Use the dir
operator. From the MetaPost manual:
Here with MetaFun in ConTeXt:
startMPpage
u:=1cm ;
label(btex Amérique etex, 3u*dir 60) ;
label(btex Europe etex, 3u*dir 300) ;
label(btex Afrique etex, 3u*dir 180) ;
stopMPpage
Thanks. I wouldn't have been able to find this on my own. It's been too long since I learnt what does cos and sin reflect… But now I see the point.
– sztruks
Nov 15 at 21:24
There is also an operatorangle
that does the opposite, so thatangle dir 60
should return60
. A bit likeatan2
in other languages.
– Thruston
Nov 15 at 21:42
As a matter of style you could also write3 dir 60 scaled u
.
– Thruston
Nov 15 at 21:47
@Thrustonangle
does exactly performatan2
(at least indouble
anddecimal
mode) github.com/TeX-Live/texlive-source/blob/…
– Henri Menke
Nov 15 at 21:50
Yes quite right. In my old-fashioned British way, when I say “a bit like” I mean “exactly the same as”…
– Thruston
Nov 15 at 21:55
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
7
down vote
accepted
Use the dir
operator. From the MetaPost manual:
Here with MetaFun in ConTeXt:
startMPpage
u:=1cm ;
label(btex Amérique etex, 3u*dir 60) ;
label(btex Europe etex, 3u*dir 300) ;
label(btex Afrique etex, 3u*dir 180) ;
stopMPpage
Thanks. I wouldn't have been able to find this on my own. It's been too long since I learnt what does cos and sin reflect… But now I see the point.
– sztruks
Nov 15 at 21:24
There is also an operatorangle
that does the opposite, so thatangle dir 60
should return60
. A bit likeatan2
in other languages.
– Thruston
Nov 15 at 21:42
As a matter of style you could also write3 dir 60 scaled u
.
– Thruston
Nov 15 at 21:47
@Thrustonangle
does exactly performatan2
(at least indouble
anddecimal
mode) github.com/TeX-Live/texlive-source/blob/…
– Henri Menke
Nov 15 at 21:50
Yes quite right. In my old-fashioned British way, when I say “a bit like” I mean “exactly the same as”…
– Thruston
Nov 15 at 21:55
add a comment |
up vote
7
down vote
accepted
Use the dir
operator. From the MetaPost manual:
Here with MetaFun in ConTeXt:
startMPpage
u:=1cm ;
label(btex Amérique etex, 3u*dir 60) ;
label(btex Europe etex, 3u*dir 300) ;
label(btex Afrique etex, 3u*dir 180) ;
stopMPpage
Thanks. I wouldn't have been able to find this on my own. It's been too long since I learnt what does cos and sin reflect… But now I see the point.
– sztruks
Nov 15 at 21:24
There is also an operatorangle
that does the opposite, so thatangle dir 60
should return60
. A bit likeatan2
in other languages.
– Thruston
Nov 15 at 21:42
As a matter of style you could also write3 dir 60 scaled u
.
– Thruston
Nov 15 at 21:47
@Thrustonangle
does exactly performatan2
(at least indouble
anddecimal
mode) github.com/TeX-Live/texlive-source/blob/…
– Henri Menke
Nov 15 at 21:50
Yes quite right. In my old-fashioned British way, when I say “a bit like” I mean “exactly the same as”…
– Thruston
Nov 15 at 21:55
add a comment |
up vote
7
down vote
accepted
up vote
7
down vote
accepted
Use the dir
operator. From the MetaPost manual:
Here with MetaFun in ConTeXt:
startMPpage
u:=1cm ;
label(btex Amérique etex, 3u*dir 60) ;
label(btex Europe etex, 3u*dir 300) ;
label(btex Afrique etex, 3u*dir 180) ;
stopMPpage
Use the dir
operator. From the MetaPost manual:
Here with MetaFun in ConTeXt:
startMPpage
u:=1cm ;
label(btex Amérique etex, 3u*dir 60) ;
label(btex Europe etex, 3u*dir 300) ;
label(btex Afrique etex, 3u*dir 180) ;
stopMPpage
answered Nov 15 at 20:16
Henri Menke
67.2k7148255
67.2k7148255
Thanks. I wouldn't have been able to find this on my own. It's been too long since I learnt what does cos and sin reflect… But now I see the point.
– sztruks
Nov 15 at 21:24
There is also an operatorangle
that does the opposite, so thatangle dir 60
should return60
. A bit likeatan2
in other languages.
– Thruston
Nov 15 at 21:42
As a matter of style you could also write3 dir 60 scaled u
.
– Thruston
Nov 15 at 21:47
@Thrustonangle
does exactly performatan2
(at least indouble
anddecimal
mode) github.com/TeX-Live/texlive-source/blob/…
– Henri Menke
Nov 15 at 21:50
Yes quite right. In my old-fashioned British way, when I say “a bit like” I mean “exactly the same as”…
– Thruston
Nov 15 at 21:55
add a comment |
Thanks. I wouldn't have been able to find this on my own. It's been too long since I learnt what does cos and sin reflect… But now I see the point.
– sztruks
Nov 15 at 21:24
There is also an operatorangle
that does the opposite, so thatangle dir 60
should return60
. A bit likeatan2
in other languages.
– Thruston
Nov 15 at 21:42
As a matter of style you could also write3 dir 60 scaled u
.
– Thruston
Nov 15 at 21:47
@Thrustonangle
does exactly performatan2
(at least indouble
anddecimal
mode) github.com/TeX-Live/texlive-source/blob/…
– Henri Menke
Nov 15 at 21:50
Yes quite right. In my old-fashioned British way, when I say “a bit like” I mean “exactly the same as”…
– Thruston
Nov 15 at 21:55
Thanks. I wouldn't have been able to find this on my own. It's been too long since I learnt what does cos and sin reflect… But now I see the point.
– sztruks
Nov 15 at 21:24
Thanks. I wouldn't have been able to find this on my own. It's been too long since I learnt what does cos and sin reflect… But now I see the point.
– sztruks
Nov 15 at 21:24
There is also an operator
angle
that does the opposite, so that angle dir 60
should return 60
. A bit like atan2
in other languages.– Thruston
Nov 15 at 21:42
There is also an operator
angle
that does the opposite, so that angle dir 60
should return 60
. A bit like atan2
in other languages.– Thruston
Nov 15 at 21:42
As a matter of style you could also write
3 dir 60 scaled u
.– Thruston
Nov 15 at 21:47
As a matter of style you could also write
3 dir 60 scaled u
.– Thruston
Nov 15 at 21:47
@Thruston
angle
does exactly perform atan2
(at least in double
and decimal
mode) github.com/TeX-Live/texlive-source/blob/…– Henri Menke
Nov 15 at 21:50
@Thruston
angle
does exactly perform atan2
(at least in double
and decimal
mode) github.com/TeX-Live/texlive-source/blob/…– Henri Menke
Nov 15 at 21:50
Yes quite right. In my old-fashioned British way, when I say “a bit like” I mean “exactly the same as”…
– Thruston
Nov 15 at 21:55
Yes quite right. In my old-fashioned British way, when I say “a bit like” I mean “exactly the same as”…
– Thruston
Nov 15 at 21:55
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f460188%2fmetapost-equivalent-to-tikz-polar-coordinates%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
You can easily convert r and φ to cartesian coordinates using the prescription (x,y) = (r*cos(φ),r*sin(φ))
– Henri Menke
Nov 15 at 20:21