2011-10-11 157 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