線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1055
推到 Plurk!
推到 Facebook!

請問有無四邊行等份分割的演算法

缺席
jsjs2601
一般會員


發表:7
回覆:7
積分:2
註冊:2008-09-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-03 14:21:54 IP:210.243.xxx.xxx 訂閱
目前小弟有一個問題,就是假設已知四個點的座標(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4),接著我要由使用者輸入相關函數,在此四點所圍成的大四邊形裡面,做切割小方塊且彼此間有間距,最後要得知每個小四邊形四個點的座標,其實從頭到尾都只是要得知點座標而已,跟算面積無關。

舉例如下圖所示:
假設我要切割2列(使用者定義)乘3行(使用者定義)總共6個的小四邊形,接著每個小方塊之間,間隔著d距離的間隔(使用者定義),最後要得知這A,B,C,E,D,F四個小四邊形各自的四點座標。

請問各位先進,有人知道有這種演算法嗎?還是說BCB其實有function可以用,亦或是有相關資料可以看嗎?我已經想到腦將都快沸騰了還想不出個好方法....orz

jsjs2601
一般會員


發表:7
回覆:7
積分:2
註冊:2008-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-07 09:46:02 IP:210.243.xxx.xxx 訂閱
想了好久終於自己想出來了,其實最主要是需要用到一些高中數學

如下所示:
m n
A(x1,y1) . ----------------.----------.B(x2,y2)
P(x,y)

(1)AB兩點間的距離為AB=sqrt(pow( x2-x1,2) pow( y2-y1,2));

(2)假設P(x,y)界在A(x1,y1),B(x2,y2)之間,且線段PA:PB=m:n
則x = (n*x1 m*x2) / (m n)
y = (n*y1 m*y2) / (m n)

接著使用這些數學觀念,將所切割的點視為矩陣,以我貼的圖為例,如下所示:
step1.將周遭四個點(x1,,y1),(x2,y2),(x3,,y3),(x4,,y4)扣除d距離,內縮成A1,D2,C4,F3點。舉例:A1=(X1 d,y1 d)

step2.有了A1和D2點,就可求A1~D2的線長,然後A12和D12線段的長=(A1D2線段-d)/2,這樣A2和D1點也可求出。同理右邊C4,C3,F4,F3點都可求出

step3.有了A1和C4點,則利用step2的觀念,A1~C4之間的點座標也都能求出來,A2和C3之間,D1~F4,D2~F3之間的點座標也可求出來

如此依來所有點都有了,希望對各位網友有幫助~

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