From 7bd53a20b9a4f0c2696bbe01fda5d72677181f04 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 17 Nov 2008 01:24:33 +0000 Subject: pst-func update (14nov08) git-svn-id: svn://tug.org/texlive/trunk@11314 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/dvips/pst-func/pst-func.pro | 38 ++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) (limited to 'Master/texmf-dist/dvips/pst-func') diff --git a/Master/texmf-dist/dvips/pst-func/pst-func.pro b/Master/texmf-dist/dvips/pst-func/pst-func.pro index 03bdf15ef53..8a4b0e98f8e 100644 --- a/Master/texmf-dist/dvips/pst-func/pst-func.pro +++ b/Master/texmf-dist/dvips/pst-func/pst-func.pro @@ -1,3 +1,4 @@ +%% $Id: pst-func.pro 55 2008-11-14 12:01:12Z herbert $ %% %% This is file `pst-func.pro', %% @@ -15,7 +16,7 @@ %% `pst-func' is a PSTricks package to plot special math functions %% %% -%% version 0.08 / 2008-03-21 Herbert Voss +%% version 0.09 / 2008-03-22 Herbert Voss % /tx@FuncDict 100 dict def tx@FuncDict begin @@ -32,13 +33,15 @@ tx@FuncDict begin ifelse } def % /MoverN { % m n on stack, returns the binomial coefficient m over n + 2 dict begin /n exch def /m exch def n 0 eq { 1 }{ m n eq { 1 }{ m factorial n factorial m n sub factorial mul div } ifelse } ifelse + end } def % -/BezierPascal [ +/Pascal [ [ 1 ] % 0 [ 1 1 ] % 1 [ 1 2 1 ] % 2 @@ -55,7 +58,7 @@ tx@FuncDict begin 10 dict begin % hold all local /t ED /t1 1 t sub def % t1=1-t - /Coeff BezierPascal BezierType get def % get the coefficients + /Coeff Pascal BezierType get def % get the coefficients 0 0 % initial values for x y BezierType -1 0 { % BezierType,...,2,1,0 /I ED % I=BezierType,...,2,1,0 @@ -73,6 +76,7 @@ tx@FuncDict begin } def % /BezierCurve { % on stack [ coors psk@plotpoints BezierType +% 10 dict begin /BezierType ED 1 exch div /epsilon ED ] /Points ED % yi xi ... y3 x3 y2 x2 y1 x1 y0 x0 @@ -84,6 +88,34 @@ tx@FuncDict begin t GetBezierCoor t 0.9999 lt { lineto }{ 1 epsilon sub GetBezierCoor 4 2 roll ArrowB pop pop pop pop } ifelse } for +% end +} def +% +/Bernstein { % on stack tStart tEnd plotpoints i n + 12 dict begin % hold all local + /envelope ED % plot envelope? + /n ED + /i ED + /ni n i sub def + /epsilon ED % step=1/plotpoints + /tEnd ED + /tStart ED +% +% B_{i,n}(t)=\binom{n}{i}t^i(1-t)^{n-i} (Bernstein) +% f_n(x)=\frac{1}{\sqrt{\pi n\cdot x(1-x)}} (envelope) +% + n i MoverN /noveri ED % \binom{n}{i} + [ % for the array of points + tStart epsilon tEnd { + dup dup /t ED % leave one on stack + neg 1 add /t1 ED % t1=1-t + envelope + { t t1 mul 4 mul Pi2 mul n mul sqrt 1 exch Div } % envelope + { noveri t i exp mul t1 ni exp mul } ifelse % t f(t) + ScreenCoor % convert to screen coor + } for + end + false /Lineto /lineto load def Line } def % /Si { % integral sin from 0 to x (arg on stack) -- cgit v1.2.3