全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1308
推到 Plurk!
推到 Facebook!

如何判断一个点是否在一个任意三角形内部??

答題得分者是:hagar
yeanchong
一般會員


發表:2
回覆:3
積分:1
註冊:2007-02-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-28 22:40:11 IP:60.53.xxx.xxx 訂閱
hi...大家好...我是新手...我想请问高手们....如何判断一点是在任意三角形的内部和外部???
編輯記錄
Coffee 重新編輯於 2008-05-15 12:06:16, 註解 修改分類為問題‧
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-01 07:30:17 IP:59.124.xxx.xxx 未訂閱
http://groups.google.com.tw/group/borland.public.delphi.graphics/browse_thread/thread/29185bf2d99dfe76/aac2b3608562c83b?lnk=st&q=point + in + triangle + delphi&rnum=4&hl=zh-TW#aac2b3608562c83b

<textarea class="delphi" rows="10" cols="60" name="code"> unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Math; type TTriangle = record P1 : TPoint; P2 : TPoint; P3 : TPoint; end; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } Triangle : TTriangle; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function PointInTriangle(P : TPoint; Triangle : TTriangle) : Boolean; var S : Integer; begin S := Sign((Triangle.P1.X - P.X) * (Triangle.P2.Y - P.Y) - (Triangle.P2.X - P.X) * (Triangle.P1.Y - P.Y)) Sign((Triangle.P2.X - P.X) * (Triangle.P3.Y - P.Y) - (Triangle.P3.X - P.X) * (Triangle.P2.Y - P.Y)) Sign((Triangle.P3.X - P.X) * (Triangle.P1.Y - P.Y) - (Triangle.P1.X - P.X) * (Triangle.P3.Y - P.Y)); Result := (S = 3) or (S = -3); end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; Triangle.P1.X := random(100); Triangle.P1.Y := random(100); Triangle.P2.X := random(100); Triangle.P2.Y := random(100); Triangle.P3.X := random(100); Triangle.P3.Y := random(100); end; procedure TForm1.FormPaint(Sender: TObject); var X : Integer; Y : Integer; begin for x := 0 to 100 do begin for y := 0 to 100 do begin if PointInTriangle(Point(X, Y), Triangle) then begin Canvas.Pixels[x, y] := clWhite; end else begin Canvas.Pixels[x, y] := clBlack; end; end; end; Canvas.Pen.Color := clYellow; Canvas.MoveTo(Triangle.P1.X, Triangle.P1.Y); Canvas.LineTo(Triangle.P2.X, Triangle.P2.Y); Canvas.LineTo(Triangle.P3.X, Triangle.P3.Y); Canvas.LineTo(Triangle.P1.X, Triangle.P1.Y); end; end. </textarea>
yeanchong
一般會員


發表:2
回覆:3
積分:1
註冊:2007-02-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-01 09:02:02 IP:60.53.xxx.xxx 訂閱
谢谢 你
系統時間:2024-05-17 16:19:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!