From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/44378 Path: news.gmane.org!not-for-mail From: Alan BRASLAU Newsgroups: gmane.comp.tex.context Subject: Re: Has anybody used asymptote without LaTeX? Date: Sun, 28 Sep 2008 16:19:18 +0200 Organization: CEA DSM-IRAMIS-SPEC Message-ID: <200809281619.18992.alan.braslau@cea.fr> References: <20080922180300.GE10939@atos.labs.wmid.amu.edu.pl> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1222611676 12515 80.91.229.12 (28 Sep 2008 14:21:16 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 28 Sep 2008 14:21:16 +0000 (UTC) Cc: t.m.trzeciak@gmail.com To: ntg-context@ntg.nl Original-X-From: ntg-context-bounces@ntg.nl Sun Sep 28 16:22:12 2008 connect(): Connection refused Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from ronja.vet.uu.nl ([131.211.172.88] helo=ronja.ntg.nl) by lo.gmane.org with esmtp (Exim 4.50) id 1KjxA4-0004LQ-JG for gctc-ntg-context-518@m.gmane.org; Sun, 28 Sep 2008 16:22:12 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 56A161FE10; Sun, 28 Sep 2008 16:21:00 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (smtp.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 28828-01-6; Sun, 28 Sep 2008 16:19:56 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 947231FB6D; Sun, 28 Sep 2008 16:19:56 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id BFBFB1FB57 for ; Sun, 28 Sep 2008 16:19:54 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (smtp.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 28730-01-6 for ; Sun, 28 Sep 2008 16:19:20 +0200 (CEST) Original-Received: from smtp1-g19.free.fr (smtp1-g19.free.fr [212.27.42.27]) by ronja.ntg.nl (Postfix) with ESMTP id 7AA901FB6D for ; Sun, 28 Sep 2008 16:19:20 +0200 (CEST) Original-Received: from smtp1-g19.free.fr (localhost.localdomain [127.0.0.1]) by smtp1-g19.free.fr (Postfix) with ESMTP id 0EEB51AB2EA; Sun, 28 Sep 2008 16:19:20 +0200 (CEST) Original-Received: from drec-hb-001817.localnet (cev75-1-81-57-248-225.fbx.proxad.net [81.57.248.225]) by smtp1-g19.free.fr (Postfix) with ESMTP id BE89A1AB2BA; Sun, 28 Sep 2008 16:19:19 +0200 (CEST) User-Agent: KMail/1.10.1 (Linux/2.6.26; KDE/4.1.1; i686; ; ) In-Reply-To: <20080922180300.GE10939@atos.labs.wmid.amu.edu.pl> Content-Disposition: inline X-Virus-Scanned: amavisd-new at ntg.nl X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.9 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: ntg-context-bounces@ntg.nl Errors-To: ntg-context-bounces@ntg.nl X-Virus-Scanned: amavisd-new at ntg.nl Xref: news.gmane.org gmane.comp.tex.context:44378 Archived-At: 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 ___________________________________________________________________________________