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

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

?? main.pas

?? 簡化線的經典算法倒戈拉斯普克 倒戈拉斯普克
?? PAS
字號:
unit Main;
{ Unit Main

  This is a demonstration program for the Douglas-Peucker algorithm

  This file requires the RxLib to be installed. This library is freely
  available from the internet here: http://sourceforge.net/projects/rxlib/

  copyright (c) 2003 Nils Haeck M.Sc. SimDesign

  ****************************************************************
  The contents of this file are subject to the Mozilla Public
  License Version 1.1 (the "License"); you may not use this file
  except in compliance with the License. You may obtain a copy of
  the License at:
  http://www.mozilla.org/MPL/

  Software distributed under the License is distributed on an
  "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  implied. See the License for the specific language governing
  rights and limitations under the License.

}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Contnrs, RXSpin, DouglasPeuckers;

type
  TForm1 = class(TForm)
    pbMain: TPaintBox;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label5: TLabel;
    sePrecision: TRxSpinEdit;
    Label6: TLabel;
    lbNumPtsOrig: TLabel;
    Label7: TLabel;
    lbNumPtsSimple: TLabel;
    Label8: TLabel;
    sePenWidth: TRxSpinEdit;
    Label9: TLabel;
    procedure pbMainPaint(Sender: TObject);
    procedure pbMainMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pbMainMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure pbMainMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure chbDrawControlsClick(Sender: TObject);
    procedure sePrecisionChange(Sender: TObject);
    procedure sePenWidthChange(Sender: TObject);
  private
    { Private declarations }
    procedure AddPointToCurve(X, Y: integer);
    procedure CreateSimplifiedPolyline;
  public
    OrigList: array of TPoint;
    SimpleList: array of TPoint;
    PosX, PosY: integer;
  end;

var
  Form1: TForm1;

const
  cMinCurveDist = 2.0; // Maximum allowed distance between points in original curve

implementation

{$R *.DFM}

procedure TForm1.AddPointToCurve(X, Y: integer);
var
  APoint: TPoint;
begin
  PosX := X;
  PosY := Y;
  APoint.X := X;
  APoint.Y := Y;
  SetLength(OrigList, Length(OrigList) + 1);
  OrigList[Length(OrigList) - 1] := APoint;
end;

procedure TForm1.pbMainPaint(Sender: TObject);
begin
  with pbMain.Canvas do begin
    // Draw original polyline
    if Length(OrigList) > 0 then begin
      Pen.Color := clBlack;
      Pen.Width := 1;
      PolyLine(OrigList);
    end;

    // Draw simplification
    if Length(SimpleList) > 0 then begin
      Pen.Color := clRed;
      Pen.Width := round(sePenWidth.Value);
      PolyLine(SimpleList);
    end;

  end;
  // Other controls
  lbNumPtsOrig.Caption   := IntToStr(Length(OrigList));
  lbNumPtsSimple.Caption := IntToStr(Length(SimpleList));
end;

procedure TForm1.pbMainMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // Delete the old curves
  SetLength(OrigList, 0);
  SetLength(SimpleList, 0);
  // Add the new startpoint
  AddPointToCurve(X, Y);
end;

procedure TForm1.pbMainMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  i, Count, MedX, MedY: integer;
  Dist: double;
begin
  // Add points to the curve as long as the mouse is down
  if ssLeft in Shift then begin
    Dist := sqrt(sqr(X - PosX) + sqr(Y - PosY));
    if Dist >= cMinCurveDist then begin
      // For fast mouse movements we should add intermediate points
      Count := trunc(Dist / cMinCurveDist);
      if Count > 1 then
        for i := 1 to Count - 1 do begin
          MedX := PosX + round((X - PosX) * i / Count);
          MedY := PosY + round((Y - PosY) * i / Count);
          // Store the intermediate point
          AddPointToCurve(MedX, MedY);
        end;
      // Store the new point
      AddPointToCurve(X, Y);
      pbMain.Invalidate;
    end;
  end;
end;

procedure TForm1.pbMainMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  // Mouse is released so finalize the curve
  CreateSimplifiedPolyline;
  pbMain.Invalidate;
end;

procedure TForm1.chbDrawControlsClick(Sender: TObject);
begin
  pbMain.Invalidate;
end;

procedure TForm1.sePrecisionChange(Sender: TObject);
begin
  // We must re-do the approximation
  CreateSimplifiedPolyline;
  pbMain.Invalidate;
end;

procedure TForm1.CreateSimplifiedPolyline;
// Create the simple polyline approximation
var
  ALength: integer;
begin
  // Create the simple polyline approximation
  SetLength(SimpleList, Length(OrigList));
  if length(OrigList) > 2 then begin
    ALength := PolySimplifyInt2D(sePrecision.Value, OrigList, SimpleList);
    SetLength(SimpleList, ALength);
  end;
end;

procedure TForm1.sePenWidthChange(Sender: TObject);
begin
  pbMain.Invalidate;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
voyeur盗摄精品| 国产69精品久久久久毛片| 蜜桃免费网站一区二区三区| 麻豆成人久久精品二区三区红| 日韩成人伦理电影在线观看| 裸体歌舞表演一区二区| 国产呦精品一区二区三区网站| 国产成人精品1024| 欧美午夜寂寞影院| 91精品久久久久久蜜臀| 久久久精品蜜桃| 一区二区三区成人在线视频| 美女视频网站久久| 一本色道**综合亚洲精品蜜桃冫| 91精品国产综合久久久久久 | 日韩欧美国产综合一区 | 国产盗摄女厕一区二区三区| 欧美视频一区在线观看| 精品国产乱码久久久久久闺蜜| 亚洲成人免费视频| 国产精品一区在线观看你懂的| 色综合久久久久| 久久亚洲精华国产精华液| 亚洲图片欧美视频| www.欧美.com| 久久久.com| 国产在线精品免费av| 欧美一卡二卡三卡| 亚洲欧美综合网| 色婷婷综合视频在线观看| 久久99久久99| 制服丝袜日韩国产| 亚洲免费av高清| 91久久精品一区二区三区| 中文字幕日本乱码精品影院| 处破女av一区二区| 中文字幕制服丝袜一区二区三区| 国产一区二区视频在线| 精品国产一区二区三区四区四| 另类小说综合欧美亚洲| 精品美女在线播放| 九一九一国产精品| 欧美高清视频不卡网| 亚洲一区国产视频| 不卡一区二区三区四区| 久久精品亚洲国产奇米99| 久久疯狂做爰流白浆xx| 欧美成人a在线| 国产毛片一区二区| 国产精品美女久久久久久2018| 国产成人av网站| 亚洲色图制服丝袜| 波多野洁衣一区| 亚洲1区2区3区4区| 亚洲精品在线观看视频| av高清不卡在线| 亚洲成人久久影院| 久久久久国产一区二区三区四区| 高清国产午夜精品久久久久久| 国产精品乱码一区二区三区软件| 99国产精品国产精品久久| 亚洲同性同志一二三专区| 欧美女孩性生活视频| 久久成人免费网| 亚洲日本在线看| 欧美精品一区二区在线观看| 不卡在线观看av| 国产一级精品在线| 亚洲精品成人a在线观看| 欧美精品一区二区在线观看| 蜜臂av日日欢夜夜爽一区| 中文字幕日韩一区二区| 欧美成人女星排行榜| 日本电影欧美片| 国产麻豆视频一区二区| 国产精品色一区二区三区| 欧美日韩国产高清一区二区三区 | 大胆欧美人体老妇| 狠狠色丁香婷综合久久| 国产精品欧美经典| 久久久三级国产网站| 日韩一区二区高清| 欧美日韩你懂的| 色菇凉天天综合网| 不卡一区中文字幕| 国产成人无遮挡在线视频| 麻豆精品视频在线观看| 日韩有码一区二区三区| 一区二区三区四区亚洲| 综合久久国产九一剧情麻豆| 国产精品全国免费观看高清| 久久视频一区二区| 免费高清视频精品| 精品免费视频一区二区| 欧美丰满美乳xxx高潮www| 欧美日韩国产综合草草| 91精品一区二区三区久久久久久 | 国产一区二区调教| 高清国产一区二区三区| eeuss影院一区二区三区| 成人黄色电影在线| 在线精品观看国产| 精品嫩草影院久久| 久久综合九色欧美综合狠狠| 欧美极品aⅴ影院| 亚洲精品视频免费看| 洋洋av久久久久久久一区| 丁香婷婷综合激情五月色| 91麻豆文化传媒在线观看| 在线播放91灌醉迷j高跟美女| 欧美一卡在线观看| 亚洲欧美自拍偷拍| 精品夜夜嗨av一区二区三区| 91美女精品福利| 欧美一区午夜视频在线观看| 亚洲精品国产视频| 欧美亚洲国产一区二区三区va | 蜜芽一区二区三区| 欧美系列亚洲系列| 性做久久久久久免费观看欧美| 欧美色图激情小说| 理论电影国产精品| 久久久亚洲高清| 日日欢夜夜爽一区| av电影一区二区| 国产三级一区二区三区| 日韩影视精彩在线| 在线精品视频免费播放| 亚洲欧美综合另类在线卡通| 精品一区二区三区免费毛片爱| 欧美无砖砖区免费| 一区二区三区中文字幕| 国产一区二区精品在线观看| 91精品久久久久久久91蜜桃| 亚洲精品一二三四区| 国产一区在线观看视频| 久久午夜羞羞影院免费观看| 精品一区二区国语对白| 久久久久久99精品| 成人性生交大合| 国产视频一区二区在线| 91免费在线看| 日本一区二区三区高清不卡| 美女www一区二区| 亚洲视频一区在线观看| 欧美日韩一区二区在线观看视频 | 国产三级一区二区三区| 99久久精品情趣| 麻豆精品视频在线| 亚洲人成7777| 欧美国产日本韩| 欧美一区二区三区播放老司机| 国产精品一级黄| 免费高清不卡av| 国产精品久久久久久久久果冻传媒| 成人综合在线观看| 国内成人自拍视频| 久久精品男人天堂av| 色哟哟一区二区| 成人h动漫精品一区二区| 精品午夜久久福利影院| 一区二区三区中文在线观看| 久久久综合激的五月天| 欧美一区二区三区免费视频| 成人美女视频在线观看| 福利一区二区在线观看| 丁香天五香天堂综合| 国模少妇一区二区三区| 国产成人精品免费视频网站| 亚洲永久精品大片| 欧美亚洲动漫制服丝袜| 免费在线一区观看| 国产69精品久久久久毛片 | 精品国产免费视频| 色综合视频一区二区三区高清| av中文字幕一区| 亚洲午夜激情av| 久久精品99国产精品日本| 懂色av噜噜一区二区三区av| 欧美日韩国产一区二区三区地区| 精品乱码亚洲一区二区不卡| 亚洲人成在线观看一区二区| 美腿丝袜一区二区三区| 在线免费观看成人短视频| 欧美大白屁股肥臀xxxxxx| 亚洲制服丝袜av| 成人av网址在线| 久久久精品人体av艺术| 老司机精品视频一区二区三区| 久久99热国产| 色综合中文字幕国产 | 91色综合久久久久婷婷| 亚洲欧美日韩久久精品| 久久综合九色综合97婷婷女人 | 精品久久一区二区三区| 欧美tickling挠脚心丨vk| 亚洲综合另类小说| 欧美人与z0zoxxxx视频| 午夜一区二区三区在线观看| 欧美色精品天天在线观看视频|