2011-10-11 158 views
3

這可能是一個重複,但我似乎無法找到特定於我的問題的東西。等高線算法

我在圖片框中有一個xy網格。每個網格單元具有特定的質量。我想根據質量在這個xy網格上創建輪廓線。

有沒有人有任何想法到一個很好的算法來執行此任務?我試圖在VB6中完成這個任務,但是任何算法都可以。

編輯

Contour Grid

我有一個網格。我想顯示基於質量的等高線(IE,其中多於一個點的單元質量會更重)

+0

也許如果你能提供一個你希望看到的結果的例子,你會得到更好的迴應。 – Brad

+0

http://dynamicdatadisplay.codeplex.com/:有人在另一個問題中提到過這個問題:http://www.stackoverflow.com/questions/3180401/net-open-source-contour-plotting –

回答

1

這個問題有點陳舊,但我的經驗也是如此:我做了近30年前。

這將產生一個位圖簡潔的輪廓:

  • 在網格中的每個點計算磁場強度(我假設你想繪製像基於羣衆的引力場的輪廓點)。
  • 用兩種替代顏色爲等高線之間的交替空間着色(您還沒有)。例如如果輪廓線相距100個單位(場強),則根據ToInt(pixel_field_strength/100) % 2選擇每個像素的顏色。
  • 跟蹤顏色邊界的邊緣以產生輪廓。例如,如果您的兩種顏色是白色和黑色,則只保留與黑色像素相鄰的白色像素。

如果您只是對結果感興趣,請使用評論中建議的庫。

純粹爲了懷舊的緣故,我找到了我最初的BBC BASIC代碼。它仍然運行在modelb(BBC微型仿真器)上。

10 REM THIS COMES WITH NO WARRANTY! 
    20 
    30 REM Gravity field 
    40 
    50 MODE 1 
    60 PROCsetup 
    70 FOR Y%=300 TO 900 STEP 4 
    80 FOR X%=200 TO 800 STEP 4 
    90  R=LOG(FNforce(X%,Y%)) 
    100  GCOL0,((R*10) MOD 2)+1 
    110  PLOT69,X%,Y% 
    120  NEXT 
    130 NEXT 
    140 PROCcontour 
    150 VDU19,1,0,0,0,0 
    160 VDU19,2,0,0,0,0 
    170 END 
    180 DEFPROCsetup 
    190 N%=5 
    200 DIM X%(N%),Y%(N%),M%(N%) 
    210 FOR P%=1 TO N% 
    220 READ X%(P%),Y%(P%),M%(P%) 
    230 NEXT 
    240 ENDPROC 
    250 DATA 625,625,1000000 
    260 DATA 425,725,1000000 
    270 DATA 475,425,1000000 
    280 DATA 375,575,1000000 
    290 DATA 725,525,1000000 
    300 DEFFNforce(X,Y) 
    310 P=0 
    320 FOR P%=1 TO N% 
    330 DX=X%(P%)-X:DY=Y%(P%)-Y 
    340 R=SQR(DX*DX+DY*DY) 
    350 P=P+M%(P%)/R 
    360 NEXT 
    370 =P 
    380 DEFPROCcontour 
    390 GCOL0,3 
    400 FOR Y%=300 TO 900 STEP 4 
    410 FOR X%=200 TO 800 STEP 4 
    420  IF POINT(X%,Y%)=1 AND (POINT(X%+4,Y%)=2 OR POINT(X%-4,Y%)=2 OR POINT(X%,Y%+4)=2 OR POINT(X%,Y%-4)=2) THEN PLOT69,X%,Y% 
    430  NEXT 
    440 NEXT 
    450 ENDPROC