亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? texplot.pas

?? Delphi 的數學控件
?? PAS
字號:
{ **********************************************************************
  *                          Unit TEXPLOT.PAS                          *
  *                            Version 1.2d                            *
  *                      (c) J. Debord, May 2002                       *
  **********************************************************************
                   Plotting routines for TeX/PSTricks
  ********************************************************************** }

unit texplot;

interface

uses
  fmath, matrices, pastring, plotvar;

procedure InitTexGraph(var F : Text; FileName : String);
{ ----------------------------------------------------------------------
  Initializes TeX graphics.
  Writes a border around the graph according to the value
  of the global variable GraphBorder (defined in PLOTVAR.PAS)
  ----------------------------------------------------------------------
  F        : file to be written
  FileName : name of TeX file (e.g. 'figure.tex')
  ---------------------------------------------------------------------- }

function Xcm(X : Float) : Float;
{ ----------------------------------------------------------------------
  Converts user coordinate X to cm
  ---------------------------------------------------------------------- }

function Ycm(Y : Float) : Float;
{ ----------------------------------------------------------------------
  Converts user coordinate Y to cm
  ---------------------------------------------------------------------- }

procedure WriteXAxis(var F : Text);
{ ----------------------------------------------------------------------
  Writes horizontal axis (global variable XAxis in PLOTVAR.PAS)
  ---------------------------------------------------------------------- }

procedure WriteYAxis(var F : Text);
{ ----------------------------------------------------------------------
  Writes vertical axis (global variable YAxis in PLOTVAR.PAS)
  ---------------------------------------------------------------------- }

procedure WriteGrid(var F : Text);
{ ----------------------------------------------------------------------
  Writes a grid (global variable Grid in PLOTVAR.PAS)
  ---------------------------------------------------------------------- }

procedure WriteLine(var F : Text; X1, Y1, X2, Y2 : Float; Style : String);
{ ----------------------------------------------------------------------
  Writes a line between two points
  ----------------------------------------------------------------------
  F      : output file

  X1, Y1 : coordinates of first point

  X2, Y2 : coordinates of second point

  Style  : line style (must be 'solid', 'dotted' or 'dashed')
  ---------------------------------------------------------------------- }

procedure WritePoints(var F : Text; X, Y : TVector;
                      Lbound, Ubound, Symbol, Size : Integer);
{ ----------------------------------------------------------------------
  Writes a set of points
  ----------------------------------------------------------------------
  F              : output file

  X, Y           : point coordinates

  Lbound, Ubound : indices of first and last point

  Symbol         : 1 = solid circle    2 = open circle
                   3 = solid square    4 = open square
                   5 = solid triangle  6 = open triangle
                   7 = plus (+)        8 = multiply (x)
                   9 = star (*)

  Size           : size of points
  ---------------------------------------------------------------------- }

procedure WriteText(var F : Text; Place : String; X, Y : Float; S : String);
{ ----------------------------------------------------------------------
  Writes a text
  ----------------------------------------------------------------------
  F     : output file

  Place : defines the position of point (X,Y) with respect
          to the box enclosing the text

          the possible values are
          'tl', 't', 'tr', 'l', 'r', 'Bl', 'B', 'Br', 'bl', 'b', 'br'
          according to the following scheme:

                             t
               tl +---------------------+ tr
                  |                     |
                  |                     |
                l |                     | r
                  |                     |
               Bl |----------B----------| Br
               bl +---------------------+ br
                             b

  X, Y  : position of text

  S     : text to be written
  ---------------------------------------------------------------------- }

procedure WriteNumber(var F : Text; Place : String; X, Y, Z : Float);
{ ----------------------------------------------------------------------
  Writes a number
  ----------------------------------------------------------------------
  Z is the number to be written
  Other parameters as in WriteText
  ---------------------------------------------------------------------- }

procedure WriteCurve(var F : Text; X, Y : TVector;
                     Lbound, Ubound, Width : Integer;
                     Style : String; Smooth : Boolean);
{ ----------------------------------------------------------------------
  Writes a curve
  ----------------------------------------------------------------------
  F              : output file

  X, Y           : point coordinates

  Lbound, Ubound : indices of first and last point

  Width          : curve width in units of 0.01 cm

  Style          : curve style (must be 'solid', 'dotted' or 'dashed')

  Smooth         : indicates if the curve must be smoothed
  ---------------------------------------------------------------------- }

procedure WriteFunc(var F : Text; Func : TFunc; X1, X2 : Float;
                    Npt, Width : Integer; Style : String);
{ ----------------------------------------------------------------------
  Writes the curve representing a function
  ----------------------------------------------------------------------
  F            : output file

  Func         : function to be plotted

  X1, X2       : abscissae of 1st and last point to plot

  Npt          : number of points

  Width, Style : width of curve (as in WriteCurve)
  ----------------------------------------------------------------------
  The function must be programmed as: function Func(X : Float) : Float;
  ---------------------------------------------------------------------- }

procedure CloseTexGraph(var F : Text);
{ ----------------------------------------------------------------------
  Close graphics
  ---------------------------------------------------------------------- }

implementation

const
  PAGEWIDTH  = 13;           { Graph width in cm  }
  PAGEHEIGHT = 10;           { Graph height in cm }

var
  XminCm, YminCm : Float;    { Coord. of lower left corner in cm }
  XmaxCm, YmaxCm : Float;    { Coord. of upper right corner in cm }
  FactX, FactY   : Float;    { Scaling factors }

  function Xcm(X : Float) : Float;
  { Converts user coordinate X to cm }
  begin
    Xcm := XminCm + FactX * (X - XAxis.Min);
  end;

  function Ycm(Y : Float) : Float;
  { Converts user coordinate Y to cm }
  begin
    Ycm := YminCm + FactY * (Y - YAxis.Min);
  end;

  procedure WriteHeader(var F : Text);
  begin
    WriteLn(F, '\documentclass[12pt,a4paper]{article}');
    WriteLn(F, '\usepackage{t1enc}');
    WriteLn(F, '\usepackage{pst-plot}');
    WriteLn(F, '\begin{document}');
    WriteLn(F);
    WriteLn(F, '\begin{pspicture}(', PAGEWIDTH, ',', PAGEHEIGHT, ')');
  end;

  procedure WriteCoord(var F : Text; X, Y : Float);
  { Writes the coordinates (in cm) of a point }
  var
    NSZ : Boolean;
  begin
    NSZ := NSZEro;
    NSZero := False;
    Write(F, '(', Trim(Float2Str(X)), ',', Trim(Float2Str(Y)), ')');
    NSZEro := NSZ;
  end;

  procedure WriteLine(var F : Text; X1, Y1, X2, Y2 : Float; Style : String);
  begin
    Write(F, '\psline');
    if Style <> '' then
      Write(F, '[linestyle=', Style, ']');
    WriteCoord(F, X1, Y1);
    WriteCoord(F, X2, Y2);
    WriteLn(F);
  end;

  procedure WriteText(var F : Text; Place : String; X, Y : Float; S : String);
  begin
    Write(F, '\rput[', Place, ']');
    WriteCoord(F, X, Y);
    WriteLn(F, '{', S, '}');
  end;

  procedure WriteNumber(var F : Text; Place : String; X, Y, Z : Float);
  begin
    Write(F, '\rput[', Place, ']');
    WriteCoord(F, X, Y);
    WriteLn(F, '{', Trim(Float2Str(Z)), '}');
  end;

  procedure WriteXAxis(var F: Text);
  var
    W, X, Xc, Z : Float;
    N, I, J     : Integer;
    NSZ         : Boolean;
  begin
    WriteLine(F, XminCm, YminCm, XmaxCm, YminCm, '');

    N := Round((XAxis.Max - XAxis.Min) / XAxis.Step); { Nb of intervals }
    X := XAxis.Min;                                   { Tick mark position }

    NSZ := NSZero;
    NSZero := False;    { Don't write non significant zero's }

    for I := 0 to N do  { Label axis }
      begin
        if (XAxis.Scale = LIN_SCALE) and (Abs(X) < EPS) then X := 0.0;

        Xc := Xcm(X);
        WriteLine(F, Xc, YminCm, Xc, YminCm - 0.25, '');  { Tick mark }

        if XAxis.Scale = LIN_SCALE then
          Z := X
        else
          Z := Exp10(X);
        WriteNumber(F, 't', Xc, YminCm - 0.35, Z);  { Label }

        if (XAxis.Scale = LOG_SCALE) and (I < N) then
          for J := 2 to 9 do                           { Plot minor divisions }
            begin                                      { on logarithmic scale }
              W := X + Log10(J);
              Xc := Xcm(W);
              WriteLine(F, Xc, YminCm, Xc, YminCm - 0.15, '');
            end;

        X := X + XAxis.Step;
      end;

    { Write axis title }
    if XAxis.Title <> '' then
      WriteText(F, 't', 0.5 * (XminCm + XmaxCm), YminCm - 1.0, XAxis.Title);

    NSZero := NSZ;
  end;

  procedure WriteYAxis(var F : Text);
  var
    W, Y, Yc, Z : Float;
    N, I, J     : Integer;
    NSZ         : Boolean;
  begin
    WriteLine(F, XminCm, YminCm, XminCm, YmaxCm, '');

    N := Round((YAxis.Max - YAxis.Min) / YAxis.Step);
    Y := YAxis.Min;

    NSZ := NSZero;
    NSZero := False;

    for I := 0 to N do
      begin
        if (YAxis.Scale = LIN_SCALE) and (Abs(Y) < EPS) then Y := 0.0;

        Yc := Ycm(Y);
        WriteLine(F, XminCm, Yc, XminCm - 0.25, Yc, '');

        if YAxis.Scale = LIN_SCALE then Z := Y else Z := Exp10(Y);
        WriteNumber(F, 'r', XminCm - 0.35, Yc, Z);

        if (YAxis.Scale = LOG_SCALE) and (I < N) then
          for J := 2 to 9 do
            begin
              W := Y + Log10(J);
              Yc := Ycm(W);
              WriteLine(F, XminCm, Yc, XminCm - 0.15, Yc, '');
            end;

        Y := Y + YAxis.Step;
      end;

    { Write axis title }
    if YAxis.Title <> '' then
      WriteText(F, 'l', XminCm, YmaxCm + 0.5, YAxis.Title);

    NSZero := NSZ;
  end;

  procedure WriteGrid(var F : Text);
  var
    X, Y, Xc, Yc : Float;
    I, N         : Integer;
  begin
    { Horizontal lines }
    if Grid in [HORIZ_GRID, BOTH_GRID] then
      begin
        N := Round((YAxis.Max - YAxis.Min) / YAxis.Step);  { Nb of intervals }
        for I := 1 to Pred(N) do
          begin
            Y := YAxis.Min + I * YAxis.Step;               { Origin of line }
            Yc := Ycm(Y);
            WriteLine(F, XminCm, Yc, XmaxCm, Yc, 'dotted');
          end;
      end;

    { Vertical lines }
    if Grid in [VERTIC_GRID, BOTH_GRID] then
      begin
        N := Round((XAxis.Max - XAxis.Min) / XAxis.Step);
        for I := 1 to Pred(N) do
          begin
            X := XAxis.Min + I * XAxis.Step;
            Xc := Xcm(X);
            WriteLine(F, Xc, YminCm, Xc, YmaxCm, 'dotted');
          end;
      end;
  end;

  procedure InitTexGraph(var F : Text; Filename : String);
  begin
    XminCm := 0.01 * Xwin1 * PAGEWIDTH;
    XmaxCm := 0.01 * Xwin2 * PAGEWIDTH;
    YminCm := 0.01 * Ywin1 * PAGEHEIGHT;
    YmaxCm := 0.01 * Ywin2 * PAGEHEIGHT;

    FactX := (XmaxCm - XminCm) / (XAxis.Max - XAxis.Min);
    FactY := (YmaxCm - YminCm) / (YAxis.Max - YAxis.Min);

    Assign(F, FileName);
    Rewrite(F);

    WriteHeader(F);

    if GraphBorder then
      begin
        Write(F, '\pspolygon');
        WriteCoord(F, XminCm, YminCm);
        WriteCoord(F, XmaxCm, YminCm);
        WriteCoord(F, XmaxCm, YmaxCm);
        WriteCoord(F, XminCm, YmaxCm);
        WriteLn(F);
      end;
  end;

  procedure WritePoint(var F : Text; X, Y : Float);
  var
    Xc, Yc : Float;
  begin
    if XAxis.Scale = LOG_SCALE then X := Log10(X);
    if YAxis.Scale = LOG_SCALE then Y := Log10(Y);

    Xc := Xcm(X);
    Yc := Ycm(Y);

    if (Xc >= XminCm) and (Xc <= XmaxCm) and
       (Yc >= YminCm) and (Yc <= YmaxCm) then
         WriteCoord(F, Xc, Yc);
  end;

  procedure WritePoints(var F : Text; X, Y : TVector;
                        Lbound, Ubound, Symbol, Size : Integer);
  var
    I : Integer;
  begin
    Write(F, '\psdots[dotscale=', Size, ' ', Size, ', dotstyle=');
    case Symbol of
      1 : Write(F, '*');
      2 : Write(F, 'o');
      3 : Write(F, 'square*');
      4 : Write(F, 'square');
      5 : Write(F, 'triangle*');
      6 : Write(F, 'triangle');
      7 : Write(F, '+');
      8 : Write(F, 'x');
      9 : Write(F, 'asterisk');
    end;
    WriteLn(F, ']%');

    I := Lbound;
    repeat
      WritePoint(F, X[I], Y[I]);
      if (I > 0) and (I < Ubound) and (I mod 5 = 0) then WriteLn(F, '%');
      Inc(I);
    until I > Ubound;
    WriteLn(F);
  end;

  procedure WriteCurve(var F : Text; X, Y : TVector;
                       Lbound, Ubound, Width : Integer;
                       Style : String; Smooth : Boolean);
  var
    I  : Integer;
    W  : Float;
    Ws : String;
  begin
    W := 0.01 * Width;
    Str(W:5:2, Ws);
    Ws := Trim(Ws);

    if Smooth then Write(F, '\pscurve') else Write(F, '\psline');
    WriteLn(F, '[linewidth=', Ws, ', linestyle=', Style, ']%');

    I := Lbound;
    repeat
      WritePoint(F, X[I], Y[I]);
      if (I > 0) and (I < Ubound) and (I mod 5 = 0) then WriteLn(F, '%');
      Inc(I);
    until I > Ubound;
    WriteLn(F);
  end;

  procedure WriteFunc(var F : Text; Func : TFunc; X1, X2 : Float;
                      Npt, Width : Integer; Style : String);
  var
    H    : Float;
    I    : Integer;
    X, Y : TVector;
  begin
    DimVector(X, Npt);
    DimVector(Y, Npt);

    H := (X2 - X1) / Npt;
    for I := 0 to Npt do
      begin
        X[I] := X1 + I * H;
        if XAxis.Scale = LIN_SCALE then
          Y[I] := Func(X[I])
        else
          Y[I] := Func(Exp10(X[I]));
      end;

    WriteCurve(F, X, Y, 0, Npt, Width, Style, True);
  end;

  procedure CloseTexGraph(var F: Text);
  begin
    WriteLn(F, '\end{pspicture}');
    WriteLn(F);
    WriteLn(F, '\end{document}');
    Close(F);
  end;

end.


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品在线观看网站| 高清shemale亚洲人妖| 欧美高清视频一二三区| 午夜精品福利在线| 日韩精品中文字幕在线不卡尤物| 国产剧情一区二区| 中文字幕一区二区三区在线播放| 在线视频一区二区三| 亚洲va中文字幕| 精品国产sm最大网站免费看| 国产黄人亚洲片| 亚洲精品视频一区二区| 欧美色图在线观看| 男女性色大片免费观看一区二区 | 成年人午夜久久久| 一区二区三区在线观看欧美| 欧美久久高跟鞋激| 精品一区二区三区久久| 国产精品大尺度| 51午夜精品国产| 国产高清不卡一区二区| 一区二区成人在线| 久久综合色鬼综合色| 色综合天天综合| 老司机午夜精品| 亚洲日本在线a| 欧美成人猛片aaaaaaa| 91亚洲精华国产精华精华液| 奇米影视7777精品一区二区| 国产精品久久久久一区二区三区 | 中文字幕五月欧美| 欧美人xxxx| 成人高清av在线| 午夜视黄欧洲亚洲| 国产亚洲欧美日韩在线一区| 在线免费观看日韩欧美| 国产精品123| 日本亚洲天堂网| 中文字幕av一区 二区| 欧美疯狂做受xxxx富婆| 99久久精品免费看国产| 精品一区二区免费| 亚洲五码中文字幕| 美国一区二区三区在线播放| 亚洲久草在线视频| 久久综合狠狠综合久久综合88| 在线免费观看不卡av| 粉嫩av一区二区三区粉嫩| 亚洲成人av资源| 一区二区三区四区在线免费观看| 久久麻豆一区二区| 日韩小视频在线观看专区| 蜜臀久久久久久久| 亚洲精品自拍动漫在线| 久久久不卡网国产精品一区| 欧美一区二区视频观看视频| 色偷偷成人一区二区三区91| 成人av资源站| 成人午夜激情片| 国产91露脸合集magnet| 精品影视av免费| 美女尤物国产一区| 日日摸夜夜添夜夜添亚洲女人| 亚洲激情中文1区| 成人欧美一区二区三区1314| 国产农村妇女精品| 久久久精品人体av艺术| 久久综合色之久久综合| 26uuu精品一区二区在线观看| 欧美一卡二卡三卡| 69av一区二区三区| 欧美一区日韩一区| 欧美一区二区三区免费视频| 欧美日韩国产三级| 欧美日本一区二区| 91精品国产欧美一区二区成人| 欧美电影影音先锋| 欧美一级黄色大片| 欧美一二区视频| 精品国产三级电影在线观看| 精品处破学生在线二十三| 精品成人佐山爱一区二区| 久久婷婷色综合| 日本一区二区免费在线观看视频| 国产偷国产偷亚洲高清人白洁| 国产偷国产偷亚洲高清人白洁| 中文子幕无线码一区tr| 亚洲人成精品久久久久| 一区二区在线电影| 天天色 色综合| 久久精品国产免费看久久精品| 国产在线不卡一卡二卡三卡四卡| 国产一区二区影院| 成人午夜在线播放| 色香蕉成人二区免费| 欧美日韩激情在线| 久久婷婷久久一区二区三区| 国产精品久久久久久久裸模| 亚洲乱码国产乱码精品精可以看| 亚洲在线中文字幕| 久久国产免费看| 成人免费av资源| 欧美色涩在线第一页| 精品久久久久久综合日本欧美| 久久久91精品国产一区二区三区| 亚洲欧洲三级电影| 视频一区二区欧美| 国产精品一区二区不卡| 欧美在线观看18| 亚洲精品一区二区三区精华液| 国产精品成人免费| 日韩综合在线视频| 不卡的电影网站| 91精品综合久久久久久| 国产精品成人一区二区三区夜夜夜 | 国产精品综合二区| 欧美午夜影院一区| 国产日韩欧美不卡在线| 亚洲国产美国国产综合一区二区| 精品在线观看视频| 欧美亚洲禁片免费| 国产亚洲综合在线| 日韩成人午夜精品| 一本到一区二区三区| 精品欧美一区二区三区精品久久| 亚洲天堂精品视频| 国产高清精品在线| 欧美一区二区视频网站| 亚洲激情中文1区| 国产成人在线电影| 欧美成人三级在线| 亚洲午夜一区二区三区| 播五月开心婷婷综合| 精品国产123| 爽好久久久欧美精品| 色94色欧美sute亚洲线路一ni| 2020日本不卡一区二区视频| 亚洲成人自拍一区| 91色视频在线| 国产精品伦理在线| 国产麻豆一精品一av一免费| 欧美日韩大陆一区二区| 一区二区三区在线看| 99re8在线精品视频免费播放| 久久久精品国产免大香伊| 久久激五月天综合精品| 91精品中文字幕一区二区三区| 亚洲美女屁股眼交| 91视频你懂的| 亚洲欧洲精品天堂一级| 国产白丝精品91爽爽久久| 久久亚洲一区二区三区四区| 日本不卡视频在线| 678五月天丁香亚洲综合网| 亚洲国产成人av| 欧美日韩一本到| 亚洲国产中文字幕| 欧美午夜精品免费| 亚洲综合在线电影| 色播五月激情综合网| 又紧又大又爽精品一区二区| 91同城在线观看| 亚洲男人电影天堂| 91激情五月电影| 一区二区三区国产豹纹内裤在线 | 亚洲一线二线三线视频| 91免费看视频| 亚洲在线一区二区三区| 精品视频一区三区九区| 午夜天堂影视香蕉久久| 欧美精品乱码久久久久久| 丝袜诱惑亚洲看片| 91精品国产欧美一区二区| 麻豆精品久久精品色综合| 日韩欧美精品在线视频| 国产伦精品一区二区三区视频青涩 | 成人黄色在线看| 一区二区视频在线| 欧美三级在线播放| 老司机精品视频一区二区三区| 日韩欧美国产电影| 国产高清成人在线| 亚洲日穴在线视频| 欧美日韩精品一区二区三区四区 | 久久久久国产精品麻豆ai换脸| 国产成人综合精品三级| 国产精品不卡视频| 欧美亚洲精品一区| 激情综合色综合久久综合| 国产欧美日韩综合| 在线亚洲一区二区| 久久精品国内一区二区三区| 国产日产欧美一区二区三区| 色婷婷av一区二区三区软件| 日韩av中文字幕一区二区 | 成人黄色综合网站| 亚洲1区2区3区4区| 国产日本亚洲高清| 欧美日韩性生活| 国产毛片精品视频|