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

三角形內部一點

答題得分者是:pcboy
jenglin
一般會員


發表:45
回覆:32
積分:15
註冊:2006-10-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-29 12:05:45 IP:163.18.xxx.xxx 訂閱
請問各位前輩:
如何在BCB底下,判斷一點在三角形內部呢?
怎麼使用PtInRect()來做判斷呢,感謝...
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-30 08:51:52 IP:61.220.xxx.xxx 訂閱


用 PtInRect() 應該做不到吧, 下面是在 BCB6 實際測試過的程式

<textarea class="cpp" rows="10" cols="60" name="code"> void __fastcall TForm1::FormCreate(TObject *Sender) { int x1, x2, x3, y1, y2, y3, x, y; int x_max, x_min, y_max, y_min; x1= 10; y1= 10; x2= 0; y2= 20; x3= 20; y3= 20; x_max = x1; if ( x2 > x_max ) x_max = x2; if ( x3 > x_max ) x_max = x3; x_min = x1; if ( x2 < x_min ) x_min = x2; if ( x3 < x_min ) x_min = x3; y_max = y1; if ( y2 > y_max ) y_max = y2; if ( y3 > y_max ) y_max = y3; y_min = y1; if ( y2 < y_min ) y_min = y2; if ( y3 < y_min ) y_min = y3; x = 15; y = 15; if ( x > x_min && x < x_max && y > y_min && y < y_max ) { Label1->Caption = "點在三角形內 "; } else { Label1->Caption = "點在三角形外 "; } x = 35; y = 15; if ( x > x_min && x < x_max && y > y_min && y < y_max ) { Label2->Caption = "點在三角形內 "; } else { Label2->Caption = "點在三角形外 "; } } </textarea>

------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-30 10:20:37 IP:122.124.xxx.xxx 未訂閱
插花一下,PtInRegion可以處理不規則的形狀,所以三角形也可以
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-30 11:46:38 IP:61.220.xxx.xxx 訂閱

測試過可用的範例

<textarea class="cpp" rows="10" cols="60" name="code"> void __fastcall TForm1::FormCreate(TObject *Sender) { TPoint points[3]; points[0] = Point(10,10); points[1] = Point(30,10); points[2] = Point(130,30); // CreateEllipticRgn 橢圓形 HRGN MyRgn = ::CreatePolygonRgn(points , 3 , WINDING); //ALTERNATE Selects alternate mode (fills area between odd-numbered and even-numbered polygon sides on each scan line). //WINDING Selects winding mode (fills any region with a nonzero winding value). if (PtInRegion(MyRgn,0 ,0)) { Label1->Caption="點在三角形內 "; } else { Label1->Caption="點在三角形外 "; } if (PtInRegion(MyRgn,30 ,12)) { Label2->Caption="點在三角形內 "; } else { Label2->Caption="點在三角形外 "; } }</textarea>
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
系統時間:2024-04-20 2:24:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!