Changeset 61
- Timestamp:
- 06/22/08 14:29:18 (7 months ago)
- Files:
-
- trunk/pst-solides3d.tex (modified) (3 diffs)
- trunk/solides.pro (modified) (5 diffs)
- trunk/tests/index.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/pst-solides3d.tex
r59 r61 20 20 \ifx\MultidoLoaded\endinput\else\input multido.tex \fi 21 21 % JPV & ML & AS 22 \def\fileversion{3.2 7}23 \def\filedate{2008/06/2 0}22 \def\fileversion{3.28} 23 \def\filedate{2008/06/22} 24 24 \message{`PSTSOLIDESIIID' v\fileversion, \filedate} 25 25 % … … 433 433 /axe { \pst@solides@axe } def 434 434 /plansection [ \pst@solides@plansection ] def 435 \ifx\pst@solides@function\@empty 436 \else 435 437 /function (\pst@solides@function) def 438 \fi 439 % 436 440 /definition (\pst@solides@definition) def 437 441 /args { \pst@solides@args} def … … 926 930 %% fonctions utilisees 927 931 \define@key[psset]{pst-solides3d}{function}{\def\pst@solides@function{#1}}% 928 \psset[pst-solides3d]{function= f}%valeur par defaut932 \psset[pst-solides3d]{function=}% pas de valeur par defaut 929 933 % rotation du texte dans son plan 930 934 \define@key[psset]{pst-solides3d}{RotationAngleText}{\def\pst@solides@RotationAngleText{#1}} % origine du plan trunk/solides.pro
r59 r61 1 1 %! 2 2 % PostScript prologue for pst-solides3d.tex. 3 % Version 3.3 4, 2008/06/203 % Version 3.35, 2008/06/22 4 4 % 5 5 %% COPYRIGHT 2008 by Jean-Paul Vignault, Manuel Luque … … 7648 7648 7649 7649 %%%%% ### newcylindre ### 7650 %% %% syntaxe : z0 r0 z1 newcylindre -> solide 7651 %% /newcylindre { 7652 %% dup xcheck { 7653 %% 2 index exch 7654 %% } { 7655 %% dup isarray { 7656 %% 2 index exch 7657 %% } { 7658 %% 1 index 7659 %% } ifelse 7660 %% } ifelse 7661 %% newtronccone 7662 %% } def 7663 %% 7664 %% %% syntaxe : z0 r0 z1 newcylindrecreux -> solide 7665 %% /newcylindrecreux { 7666 %% newcylindre 7667 %% dup creusesolid 7668 %% } def 7669 7650 7670 %% syntaxe : z0 r0 z1 newcylindre -> solide 7671 %% syntaxe : z0 r0 z1 {mode} newcylindre -> solide 7672 %% syntaxe : z0 r0 z1 [n1 n2] newcylindre -> solide 7673 %% syntaxe : a b {f} {u} h [n1 n2] newcylindre 7651 7674 /newcylindre { 7652 dup xcheck { 7653 2 index exch 7654 } { 7655 dup isarray { 7656 2 index exch 7657 } { 7658 1 index 7659 } ifelse 7660 } ifelse 7661 newtronccone 7662 } def 7663 7664 %% syntaxe : z0 r0 z1 newcylindrecreux -> solide 7665 /newcylindrecreux { 7666 newcylindre 7667 dup creusesolid 7675 2 dict begin 7676 [[/n2 /n1] [1 6] [1 8] [1 10] [3 12] [5 18]] gestionsolidmode 7677 2 copy pop xcheck { 7678 %% cylindre cas general 7679 7680 /h exch def 7681 /u exch def 7682 /lafonction exch def 7683 /b exch def 7684 /a exch def 7685 /pas b a sub n1 div def 7686 /vpas h n2 div def 7687 /S [ 7688 0 1 n2 { 7689 /j exch def 7690 0 1 n1 { 7691 /i exch def 7692 a i pas mul add lafonction 7693 u j vpas mul mulv3d addv3d 7694 } for 7695 } for 7696 ] def 7697 /F [ 7698 0 1 n2 1 sub { 7699 /j exch def 7700 0 1 n1 1 sub { 7701 /i exch def 7702 [ 7703 i n1 1 add j mul add 7704 dup 1 add 7705 dup n1 1 add add 7706 dup 1 sub 7707 ] 7708 } for 7709 } for 7710 ] def 7711 7712 S F generesolid 7713 dup videsolid 7714 } { 7715 %% cylindre de revolution 7716 2 copy pop [n2 n1] newtronccone 7717 } ifelse 7718 end 7668 7719 } def 7669 7720 … … 7719 7770 7720 7771 %%%%% ### newcone ### 7772 %% %% syntaxe : z0 r0 z1 newcone -> solid 7773 %% /newcone { 7774 %% 11 dict begin 7775 %% [ [/n /N] [1 6] [1 8] [1 10] [3 12] [5 18] ] gestionsolidmode 7776 %% 7777 %% /z1 exch def 7778 %% /r0 exch def 7779 %% /z0 exch def 7780 %% /dz z1 z0 sub n div def 7781 %% /dr r0 n div def 7782 %% 7783 %% /F [ 7784 %% %% la base 7785 %% [N 1 sub -1 0 {} for] 7786 %% %% le dernier etage 7787 %% n 1 sub N mul 1 add 1 n N mul 1 sub { 7788 %% /i exch def 7789 %% [i 1 sub i n N mul] 7790 %% } for 7791 %% [n N mul 1 sub n 1 sub N mul n N mul] 7792 %% %% les autres etages 7793 %% 0 1 n 2 sub { 7794 %% /j exch def 7795 %% 0 N j mul add 1 N N j mul add 2 sub { 7796 %% /i exch def 7797 %% [i i 1 add dup N add dup 1 sub] 7798 %% } for 7799 %% [N N j mul add 1 sub N j mul dup N add dup N add 1 sub] 7800 %% } for 7801 %% ] def 7802 %% 7803 %% %% tableau des sommets 7804 %% /S [ 7805 %% %% etage no j (in [1; n]) 7806 %% 0 1 n 1 sub { 7807 %% /j exch def 7808 %% 0 1 N 1 sub { 7809 %% /i exch def 7810 %% 360 N idiv i mul cos r0 dr j mul sub mul 7811 %% 360 N idiv i mul sin r0 dr j mul sub mul 7812 %% z0 dz j mul add 7813 %% } for 7814 %% } for 7815 %% 0 0 z1 7816 %% ] def 7817 %% S F generesolid 7818 %% end 7819 %% } def 7820 %% 7821 %% %% syntaxe : z0 r0 z1 newconecreux -> solid 7822 %% /newconecreux { 7823 %% newcone 7824 %% dup 0 solidrmface 7825 %% dup videsolid 7826 %% } def 7827 7721 7828 %% syntaxe : z0 r0 z1 newcone -> solid 7829 %% syntaxe : z0 r0 z1 {mode} newcone -> solid 7830 %% syntaxe : z0 r0 z1 [n1 n2] newcone -> solid 7831 %% syntaxe : a b {f} {sommet} [n1 n2] newcone -> solid 7722 7832 /newcone { 7723 7833 11 dict begin 7724 7834 [ [/n /N] [1 6] [1 8] [1 10] [3 12] [5 18] ] gestionsolidmode 7725 7726 /z1 exch def 7727 /r0 exch def 7728 /z0 exch def 7729 /dz z1 z0 sub n div def 7730 /dr r0 n div def 7731 7732 /F [ 7733 %% la base 7734 [N 1 sub -1 0 {} for] 7735 %% le dernier etage 7736 n 1 sub N mul 1 add 1 n N mul 1 sub { 7737 /i exch def 7738 [i 1 sub i n N mul] 7739 } for 7740 [n N mul 1 sub n 1 sub N mul n N mul] 7741 %% les autres etages 7742 0 1 n 2 sub { 7743 /j exch def 7744 0 N j mul add 1 N N j mul add 2 sub { 7835 dup xcheck { 7836 %% cas general 7837 /sommet exch def 7838 /lafonction exch def 7839 /b exch def 7840 /a exch def 7841 7842 /pas b a sub N div def 7843 /S [ 7844 sommet 7845 0 1 n 1 sub { 7846 /j exch def 7847 0 1 N { 7848 /i exch def 7849 a i pas mul add lafonction 7850 dupp3d sommet vecteur3d j n div mulv3d addv3d 7851 } for 7852 } for 7853 1 1 n { 7854 /j exch def 7855 0 1 N { 7856 /i exch def 7857 a i pas mul add lafonction 7858 sommet vecteur3d j n div mulv3d sommet addv3d 7859 } for 7860 } for 7861 ] def 7862 7863 /F [ 7864 %% les etages inferieurs 7865 0 1 n 2 sub { 7866 /j exch def 7867 1 1 N { 7868 /i exch def 7869 [ 7870 i j N 1 add mul add 7871 dup 1 add 7872 dup N add 1 add 7873 dup 1 sub 7874 ] 7875 } for 7876 } for 7877 %% dernier etage inferieur 7878 1 1 N { 7745 7879 /i exch def 7746 [i i 1 add dup N add dup 1 sub] 7880 [ 7881 i N 1 add n 1 sub mul add 7882 dup 1 add 7883 0 7884 ] 7747 7885 } for 7748 [N N j mul add 1 sub N j mul dup N add dup N add 1 sub] 7749 } for 7750 ] def 7751 7752 %% tableau des sommets 7753 /S [ 7754 %% etage no j (in [1; n]) 7755 0 1 n 1 sub { 7756 /j exch def 7757 0 1 N 1 sub { 7758 /i exch def 7759 360 N idiv i mul cos r0 dr j mul sub mul 7760 360 N idiv i mul sin r0 dr j mul sub mul 7761 z0 dz j mul add 7886 %% premier etage superieur 7887 1 1 N { 7888 /i exch def 7889 [ 7890 i N 1 add n mul add 7891 dup 1 add 7892 0 7893 exch 7894 ] 7762 7895 } for 7763 } for 7764 0 0 z1 7765 ] def 7766 S F generesolid 7767 end 7768 } def 7769 7770 %% syntaxe : z0 r0 z1 newconecreux -> solid 7771 /newconecreux { 7772 newcone 7773 dup 0 solidrmface 7774 dup videsolid 7896 %% les etages superieurs 7897 n 1 n 2 mul 2 sub { 7898 /j exch def 7899 1 1 N { 7900 /i exch def 7901 [ 7902 i j N 1 add mul add 7903 dup 1 add 7904 dup N add 1 add 7905 dup 1 sub 7906 ] 7907 } for 7908 } for 7909 ] def 7910 7911 S F generesolid 7912 dup videsolid 7913 } { 7914 %% cylindre de revolution 7915 /z1 exch def 7916 /r0 exch def 7917 /z0 exch def 7918 /dz z1 z0 sub n div def 7919 /dr r0 n div def 7920 7921 /F [ 7922 %% la base 7923 [N 1 sub -1 0 {} for] 7924 %% le dernier etage 7925 n 1 sub N mul 1 add 1 n N mul 1 sub { 7926 /i exch def 7927 [i 1 sub i n N mul] 7928 } for 7929 [n N mul 1 sub n 1 sub N mul n N mul] 7930 %% les autres etages 7931 0 1 n 2 sub { 7932 /j exch def 7933 0 N j mul add 1 N N j mul add 2 sub { 7934 /i exch def 7935 [i i 1 add dup N add dup 1 sub] 7936 } for 7937 [N N j mul add 1 sub N j mul dup N add dup N add 1 sub] 7938 } for 7939 ] def 7940 7941 %% tableau des sommets 7942 /S [ 7943 %% etage no j (in [1; n]) 7944 0 1 n 1 sub { 7945 /j exch def 7946 0 1 N 1 sub { 7947 /i exch def 7948 360 N idiv i mul cos r0 dr j mul sub mul 7949 360 N idiv i mul sin r0 dr j mul sub mul 7950 z0 dz j mul add 7951 } for 7952 } for 7953 0 0 z1 7954 ] def 7955 S F generesolid 7956 } ifelse 7957 end 7775 7958 } def 7776 7959 … … 8917 9100 8918 9101 /pst-cylindre { 8919 % rayon 8920 % mode 8921 0 r h 8922 ngrid length 2 eq { 8923 ngrid 8924 } { 8925 {Mode} 8926 } ifelse 8927 newcylindre 8928 solidhollow { 8929 dup creusesolid 8930 } if 9102 tx@Dict /function known { 9103 range aload pop function cvx {axe} h ngrid newcylindre 9104 } { 9105 % rayon 9106 % mode 9107 0 r h 9108 ngrid length 2 eq { 9109 ngrid 9110 } { 9111 {Mode} 9112 } ifelse 9113 newcylindre 9114 solidhollow { 9115 dup creusesolid 9116 } if 9117 } ifelse 8931 9118 gere_pstricks_opt 8932 9119 } def … … 8947 9134 8948 9135 /pst-cone { 8949 % rayon 8950 % mode 8951 0 r h 8952 ngrid length 2 eq { 8953 ngrid 8954 } { 8955 {Mode} 8956 } ifelse 8957 solidhollow { 8958 newconecreux 8959 } { 8960 newcone 9136 tx@Dict /function known { 9137 range aload pop function cvx {0 0 0} ngrid newcone 9138 } { 9139 % rayon 9140 % mode 9141 0 r h 9142 ngrid length 2 eq { 9143 ngrid 9144 } { 9145 {Mode} 9146 } ifelse 9147 solidhollow { 9148 newconecreux 9149 } { 9150 newcone 9151 } ifelse 8961 9152 } ifelse 8962 9153 gere_pstricks_opt trunk/tests/index.txt
r40 r61 15 15 test_15 : objet load + lumière ponctuelle 16 16 test_16 : planshowbase et planshowbase3d 17 test_17 : point 18 test_18 : cylindre généralisé 19
