From: Alan BRASLAU <alan.braslau@cea.fr>
To: ntg-context@ntg.nl
Cc: t.m.trzeciak@gmail.com
Subject: Re: Has anybody used asymptote without LaTeX?
Date: Sun, 28 Sep 2008 16:19:18 +0200 [thread overview]
Message-ID: <200809281619.18992.alan.braslau@cea.fr> (raw)
In-Reply-To: <20080922180300.GE10939@atos.labs.wmid.amu.edu.pl>
On 2008-09-28 04:35 Zhichu Chen wrote:
> It is said that Asymptote has supported PRC format 3D file:
> http://asymptote.sourceforge.net/gallery/3D%20graphs/
>
> I really wanna give it a try, but once I was building from the svn
> source, I was told that I don't have LaTeX in my $PATH. I haven't
> really been using LaTeX for a long time, and I prefer I don't need
> to install a bunch of LaTeX programs and packages just for a
> drawing program which, IMHO, only use LaTeX to make nice
> labels.
>
> Is there any workarounds? And how to embed .prc files into
> the .pdf document?
> --
> Best Regards
> Chen
This doesn't really answer your question
but may be of some related interest to the mailing list.
I am quite fond of pfg/tikz as a drawing package
that works rather well with plain tex, latex and context.
Asymptote is a similar tool, but it seems to be less portable.
However, it appears on the other hand to be much more powerful for 3D.
Neverless, I am sharing with this context list an impressive tikz example
--
Alan Braslau
CEA DSM-IRAMIS-SPEC
CNRS URA 2464
Orme des Merisiers
91191 Gif-sur-Yvette cedex FRANCE
tel: +33 1 69 08 73 15
fax: +33 1 69 08 87 86
mailto:alan.braslau@cea.fr
http://www-dna2006.cea.fr/
.''`.
: :' :
`. `'`
`-
that I have adapted to context. (I have put the author on copy.)
Basically, the only changes to the latex source are
\usepackage{preview} -> \startTEXpage \stopTEXpage
\begin{tikzpicture} -> \starttikzpicture
and a few other minor syntax adaptations...)
Alan
% What is it
% ==========
%
% Examples inspired by the thread at comp.text.tex about how to convert some
hand
% drawn pictures into programmatic 3D sketches:
%
http://groups.google.com/group/comp.text.tex/browse_thread/thread/a03baf5d6fa64865/f7e7b903f1d87a6a
% The sketches present stereographic and cylindrical map projections and they
% pose some interesting challenges for doing them with a 2D drawing package
PGF/TikZ.
%
% The main idea is to draw in selected 3D planes and then project onto the
canvas
% coordinate system with an appriopriate transformation. Some highlights:
% [*] usage of pgf math engine for calculation of projection transformations
and
% transitions points from visible (solid lines) to invisible (dashed
lines) on
% meridians and latitude circles
% [*] definition of 3D plane transformation with expanded styles so that they
are robust
% against redefinition of macros used in their construction
% [*] usage of named coordinates (nodes) for definition of characteristic
points in
% local coordinate systems so that they are accessible outside of their
plane of
% definition
% [*] calculation of intersections points with TikZ intersection coordinate
system
% [*] usage of 'to' path operation instead of 'arc' for marking angles to
allow for
% easy positioning of text labels on the curve
% [*] 3D lighting effects with shading
%
%
% Who's done it
% =============
%
% Tomasz M. Trzeciak
%
%
% Distribution and use
% ====================
%
% Use as you see fit. Consider giving a proper attribution to the author.
%
%
% Change log
% ==========
%
% 2008/08/07 posted to latex-community.org
% 2008/08/08 fixed some typos, added note about 'to' path operation to the
description,
% fixed positioning issue of nodes and 'to' path operation as
suggested
% by Kjell, removed some dead code from KART picture
% 2008/09/28 adapted as an example to ConTeXt
\usemodule[tikz]
\usetikzlibrary[calc,fadings,decorations.pathreplacing]
%% helper macros
\def\pgfmathsinandcos#1#2#3{%
\pgfmathsetmacro#1{sin(#3)}%
\pgfmathsetmacro#2{cos(#3)}%
}
\def\LongitudePlane#1#2#3{%
\pgfmathsinandcos\sinEl\cosEl{#2} % elevation
\pgfmathsinandcos\sint\cost{#3} % azimuth
\tikzset{#1/.estyle={cm={\cost,\sint*\sinEl,0,\cosEl,(0,0)}}}
}
\def\LatitudePlane#1#2#3{%
\pgfmathsinandcos\sinEl\cosEl{#2} % elevation
\pgfmathsinandcos\sint\cost{#3} % latitude
\pgfmathsetmacro\yshift{\cosEl*\sint}
\tikzset{#1/.estyle={cm={\cost,0,0,\cost*\sinEl,(0,\yshift)}}} %
}
\def\DrawLongitudeCircle#1#2{
\LongitudePlane{current plane}{\angEl}{#2}
\tikzset{current plane/.prefix style={scale=#1}}
% angle of "visibility"
\pgfmathsetmacro\angVis{atan(sin(#2)*cos(\angEl)/sin(\angEl))} %
\draw[current plane] (\angVis:1) arc (\angVis:\angVis+180:1);
\draw[current plane,dashed] (\angVis-180:1) arc (\angVis-180:\angVis:1);
}
\def\DrawLatitudeCircle#1#2{
\LatitudePlane{current plane}{\angEl}{#2}
\tikzset{current plane/.prefix style={scale=#1}}
\pgfmathsetmacro\sinVis{sin(#2)/cos(#2)*sin(\angEl)/cos(\angEl)}
% angle of "visibility"
\pgfmathsetmacro\angVis{asin(min(1,max(\sinVis,-1)))}
\draw[current plane] (\angVis:1) arc (\angVis:-\angVis-180:1);
\draw[current plane,dashed] (180-\angVis:1) arc (180-\angVis:\angVis:1);
}
%% document-wide tikz options and styles
\tikzset{%
>=latex, % option for nice arrows
inner sep=0pt,%
outer sep=2pt,%
mark coordinate/.style={inner sep=0pt,outer sep=0pt,minimum
size=3pt,fill=black,circle}%
}
\starttext
\startTEXpage
\starttikzpicture % "THE GLOBE" showcase
\def\R{2.5} % sphere radius
\def\angEl{35} % elevation angle
\filldraw[ball color=white] (0,0) circle (\R);
\foreach \t in {-80,-60,...,80} { \DrawLatitudeCircle{\R}{\t} }
\foreach \t in {-5,-35,...,-175} { \DrawLongitudeCircle{\R}{\t} }
% some fancy transparent shading
% \tikzfading[name=fade inside,inner color=transparent!80,outer
color=transparent!30]
% \shadedraw[ball color=white,path fading=fade inside] (0,0) circle (\R);
\stoptikzpicture
\stopTEXpage
\startTEXpage
\starttikzpicture % CENT
%% some definitions
\def\R{2.5} % sphere radius
\def\angEl{35} % elevation angle
\def\angAz{-105} % azimuth angle
\def\angPhi{-40} % longitude of point P
\def\angBeta{19} % latitude of point P
%% working planes
\pgfmathsetmacro\H{\R*cos(\angEl)} % distance to north pole
\tikzset{xyplane/.estyle={cm={cos(\angAz),sin(\angAz)*sin(\angEl),-
sin(\angAz),cos(\angAz)*sin(\angEl),(0,-\H)}}}
\LongitudePlane{xzplane}{\angEl}{\angAz}
\LongitudePlane{pzplane}{\angEl}{\angPhi}
\LatitudePlane{equator}{\angEl}{0}
%% draw xyplane and sphere
\draw[xyplane] (-2*\R,-2*\R) rectangle (2.2*\R,2.8*\R);
\fill[ball color=white] (0,0) circle (\R); % 3D lighting effect
%\fill[white] (0,0) circle (\R); % just a white circle
\draw (0,0) circle (\R);
%% characteristic points
\coordinate (O) at (0,0);
\coordinate[mark coordinate] (N) at (0,\H);
\coordinate[mark coordinate] (S) at (0,-\H);
\path[pzplane] (\angBeta:\R) coordinate[mark coordinate] (P);
\path[pzplane] (\R,0) coordinate (PE);
\path[xzplane] (\R,0) coordinate (XE);
\path (PE) ++(0,-\H) coordinate (Paux); % to aid Phat calculation
\coordinate[mark coordinate] (Phat) at (intersection cs: first line={(N)--(P)},
second line={(S)--(Paux)});
%% draw meridians and latitude circles
\DrawLatitudeCircle{\R}{0} % equator
%\DrawLatitudeCircle{\R}{\angBeta}
\DrawLongitudeCircle{\R}{\angAz} % xzplane
\DrawLongitudeCircle{\R}{\angAz+90} % yzplane
\DrawLongitudeCircle{\R}{\angPhi} % pzplane
%% draw xyz coordinate system
\draw[xyplane,<->] (1.8*\R,0) node[below] {$x,\xi$} -- (0,0) -- (0,2.4*\R)
node[right] {$y,\eta$};
\draw[->] (0,-\H) -- (0,1.6*\R) node[above] {$z,\zeta$};
%% draw lines and put labels
\draw[dashed] (P) -- (N) +(0.3ex,0.6ex) node[above left] {\bf $N$};
\draw (P) -- (Phat) node[above right] {\bf $\hat{P}$};
\path (S) +(0.4ex,-0.4ex) node[below] {\bf $S$};
\draw[->] (O) -- (P) node[above right] {\bf $P$};
\draw[dashed] (XE) -- (O) -- (PE);
\draw[pzplane,->,thin] (0:0.5*\R) to[bend right=15] node[pos=0.4,right]
{$\beta$} (\angBeta:0.5*\R);
\draw[equator,->,thin] (\angAz:0.4*\R) to[bend right=30] node[pos=0.4,below]
{$\phi$} (\angPhi:0.4*\R);
\draw[thin,decorate,decoration={brace,raise=0.5pt,amplitude=1ex}] (N) -- (O)
node[midway,right=1ex] {$a$};
\stoptikzpicture
\stopTEXpage
\startTEXpage
\starttikzpicture % MERC
%% some definitions
\def\R{3} % sphere radius
\def\angEl{25} % elevation angle
\def\angAz{-100} % azimuth angle
\def\angPhiOne{-50} % longitude of point P
\def\angPhiTwo{-35} % longitude of point Q
\def\angBeta{33} % latitude of point P and Q
%% working planes
\pgfmathsetmacro\H{\R*cos(\angEl)} % distance to north pole
\LongitudePlane{xzplane}{\angEl}{\angAz}
\LongitudePlane{pzplane}{\angEl}{\angPhiOne}
\LongitudePlane{qzplane}{\angEl}{\angPhiTwo}
\LatitudePlane{equator}{\angEl}{0}
%% draw background sphere
\fill[ball color=white] (0,0) circle (\R); % 3D lighting effect
%\fill[white] (0,0) circle (\R); % just a white circle
\draw (0,0) circle (\R);
%% characteristic points
\coordinate (O) at (0,0);
\coordinate[mark coordinate] (N) at (0,\H);
\coordinate[mark coordinate] (S) at (0,-\H);
\path[xzplane] (\R,0) coordinate (XE);
\path[pzplane] (\angBeta:\R) coordinate (P);
\path[pzplane] (\R,0) coordinate (PE);
\path[qzplane] (\angBeta:\R) coordinate (Q);
\path[qzplane] (\R,0) coordinate (QE);
%% meridians and latitude circles
% \DrawLongitudeCircle{\R}{\angAz} % xzplane
% \DrawLongitudeCircle{\R}{\angAz+90} % yzplane
\DrawLongitudeCircle{\R}{\angPhiOne} % pzplane
\DrawLongitudeCircle{\R}{\angPhiTwo} % qzplane
\DrawLatitudeCircle{\R}{\angBeta}
\DrawLatitudeCircle{\R}{0} % equator
% shifted equator in node with nested call to tikz (I didn't know it's
possible)
\node at (0,1.6*\R) { \tikz{\DrawLatitudeCircle{\R}{0}} };
%% draw lines and put labels
\draw (-\R,-\H) -- (-\R,2*\R) (\R,-\H) -- (\R,2*\R);
\draw[->] (XE) -- +(0,2*\R) node[above] {$y$};
\node[above=8pt] at (N) {\bf $N$};
\node[below=8pt] at (S) {\bf $S$};
\draw[->] (O) -- (P);
\draw[dashed] (XE) -- (O) -- (PE);
\draw[dashed] (O) -- (QE);
\draw[pzplane,->,thin] (0:0.5*\R) to[bend right=15] node[midway,right]
{$\beta$} (\angBeta:0.5*\R);
\path[pzplane] (0.5*\angBeta:\R) node[right] {$\hat{1}$};
\path[qzplane] (0.5*\angBeta:\R) node[right] {$\hat{2}$};
\draw[equator,->,thin] (\angAz:0.5*\R) to[bend right=30] node[pos=0.4,above]
{$\phi_1$} (\angPhiOne:0.5*\R);
\draw[equator,->,thin] (\angAz:0.6*\R) to[bend right=35] node[midway,below]
{$\phi_2$} (\angPhiTwo:0.6*\R);
\draw[equator,->] (-90:\R) arc (-90:-70:\R) node[below=0.3ex] {$x = a\phi$};
\path[xzplane] (0:\R) node[below] {$\beta=0$};
\path[xzplane] (\angBeta:\R) node[below left] {$\beta=\beta_0$};
\stoptikzpicture
\stopTEXpage
\startTEXpage
\starttikzpicture % KART
\def\R{2.5}
\node[draw,minimum size=2cm*\R,inner sep=0,outer sep=0,circle] (C) at (0,0)
{};
\coordinate (O) at (0,0);
\coordinate[mark coordinate] (Phat) at (20:2.5*\R);
\coordinate (T1) at (tangent cs: node=C, point={(Phat)}, solution=1);
\coordinate (T2) at (tangent cs: node=C, point={(Phat)}, solution=2);
\coordinate[mark coordinate] (P) at ($(T1)!0.5!(T2)$);
\draw[dashed] (T1) -- (O) -- (T2) -- (Phat) -- (T1) -- (T2);
\draw[->] (-1.5*\R,0) -- (2.5*\R,0) node[right] {$x$};
\draw[->] (0,-1.5*\R) -- (0,1.5*\R) node[above] {$y$};
\draw (O) node[below left] {\bf $O$} -- (P) +(1ex,0) node[above=1ex] {\bf
$P$};
\draw (P) -- (Phat) node[above=1ex] {\bf $\hat{P}$};
\stoptikzpicture
\stopTEXpage
\stoptext
___________________________________________________________________________________
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 : https://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
next prev parent reply other threads:[~2008-09-28 14:19 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-22 18:03 Problem with text floating around tikz picture Marcin Borkowski
2008-09-22 18:38 ` Hans Hagen
2008-09-28 14:19 ` Alan BRASLAU [this message]
2008-09-29 5:17 ` Has anybody used asymptote without LaTeX? Zhichu Chen
2008-09-29 5:57 ` Yue Wang
2008-09-29 12:09 ` Zhichu Chen
2008-09-29 17:19 ` Michail Vidiassov
2008-10-08 16:49 ` Zhichu Chen
2008-10-10 2:48 ` Zhichu Chen
2008-10-11 5:25 ` Michail Vidiassov
2008-10-11 12:02 ` Zhichu Chen
[not found] ` <6faad9f00809221113s4d7e0400t59d0d2dc21515091@mail.gmail.com>
[not found] ` <D4C70B23-AD3C-4464-BF88-61F25EFCBF53@tcs.uni-luebeck.de>
2008-09-29 13:19 ` Problem with text floating around tikz picture Mojca Miklavec
2008-09-29 20:29 ` Hans Hagen
2008-09-28 2:35 Has anybody used asymptote without LaTeX? Zhichu Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200809281619.18992.alan.braslau@cea.fr \
--to=alan.braslau@cea.fr \
--cc=ntg-context@ntg.nl \
--cc=t.m.trzeciak@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).