等高线算法

3

这可能是一个重复问题,但我似乎找不到与我的问题特定相关的内容。

我在图片框中有一个xy网格。每个网格单元都有一个特定的质量。我想根据质量在这个xy网格上创建等高线。

有人有任何好的算法来执行此任务吗?我正在尝试在VB6中完成这项工作,但任何算法都可以。

编辑

等高线图

我有一个网格。我想根据质量显示等高线(即,那些有多个点的单元格质量会更大)。


也许如果您能提供一个您想要看到的结果示例,您会得到更好的回应。 - Brad
http://dynamicdatadisplay.codeplex.com/ :有人在另一个问题中提到了这个网站:http://www.stackoverflow.com/questions/3180401/net-open-source-contour-plotting - Lee Louviere
1个回答

1

这个问题有点过时了,但我的经验也是如此:我大约30年前做过类似的事情。

这会在位图上产生简单的轮廓:

  • 计算网格中每个点的场强(我假设您正在尝试基于点的质量绘制类似于重力场轮廓的东西)。
  • 用两种交替颜色为轮廓线之间的交替空间着色(您还没有得到它们)。例如,如果轮廓线应该相隔100个单位(场强),则根据 ToInt(pixel_field_strength / 100) % 2 的值选择每个像素的颜色。
  • 跟踪颜色边界的边缘以产生轮廓。例如,如果您的两种颜色是白色和黑色,则仅保留与黑色像素相邻的白色像素。

如果您只对结果感兴趣,请使用评论中建议的库。

纯粹出于怀旧的目的,我找到了我的原始BBC BASIC代码。它仍然可以在modelb(BBC Micro模拟器)上运行。

   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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接