From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/44396 Path: news.gmane.org!not-for-mail From: "Zhichu Chen" Newsgroups: gmane.comp.tex.context Subject: Re: Has anybody used asymptote without LaTeX? Date: Mon, 29 Sep 2008 13:17:16 +0800 Message-ID: <769ba7780809282217t663e635aj2b71ce9979542f6b@mail.gmail.com> References: <20080922180300.GE10939@atos.labs.wmid.amu.edu.pl> <200809281619.18992.alan.braslau@cea.fr> 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 1222665552 17944 80.91.229.12 (29 Sep 2008 05:19:12 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 29 Sep 2008 05:19:12 +0000 (UTC) To: "mailing list for ConTeXt users" Original-X-From: ntg-context-bounces@ntg.nl Mon Sep 29 07:20:07 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 1KkBAy-0001Zm-4O for gctc-ntg-context-518@m.gmane.org; Mon, 29 Sep 2008 07:20:04 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id A3AE11FE88; Mon, 29 Sep 2008 07:18:56 +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 22895-01; Mon, 29 Sep 2008 07:17:53 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 651D51FE44; Mon, 29 Sep 2008 07:17:53 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 9BA4B1FE44 for ; Mon, 29 Sep 2008 07:17:52 +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 22185-01-6 for ; Mon, 29 Sep 2008 07:17:19 +0200 (CEST) Original-Received: from rv-out-0708.google.com (rv-out-0708.google.com [209.85.198.247]) by ronja.ntg.nl (Postfix) with ESMTP id 09D171FE07 for ; Mon, 29 Sep 2008 07:17:18 +0200 (CEST) Original-Received: by rv-out-0708.google.com with SMTP id f25so2000140rvb.14 for ; Sun, 28 Sep 2008 22:17:17 -0700 (PDT) Original-Received: by 10.142.84.3 with SMTP id h3mr1994395wfb.309.1222665437061; Sun, 28 Sep 2008 22:17:17 -0700 (PDT) Original-Received: by 10.142.90.20 with HTTP; Sun, 28 Sep 2008 22:17:16 -0700 (PDT) In-Reply-To: <200809281619.18992.alan.braslau@cea.fr> 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:44396 Archived-At: Hi, Alan Thank you for your attention, but I don't need the psedu-3D effect. Asymptote could create real 3D file which pdf has supported since, maybe, version 1.5. On Sun, Sep 28, 2008 at 10:19 PM, Alan BRASLAU wrote: > 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 > ___________________________________________________________________________________ > -- Best Regards Chen ---------------------------------------------------------------- Zhi-chu Chen | Shanghai Synchrotron Radiation Facility No. 2019 | Jialuo Rd. | Jiading | Shanghai | P.R. China tel: 086 21 5955 3405 | zhichu.chen.googlepages.com | www.sinap.ac.cn ---------------------------------------------------------------- ___________________________________________________________________________________ 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 ___________________________________________________________________________________