3

This could very well be a duplicate, but I could not seem to find something specific to my problem.

I have a xy grid in a picture box. Each grid cell has a specific mass. I would like to create contour lines on this xy grid based on the mass.

Does anyone have any ideas to a good algorithm to perform this task? I am trying to get this done in VB6 but any algorithm would do.

Edit

Contour Grid

I have a grid. I want to display contour lines based on mass (IE, the cells with more than one point in them will be heavier in mass)

4

1 に答える 1

1

この質問は少し古くなっていますが、私の経験もそうです: 私はほぼ 30 年前にこのようなことをしました。

これにより、ビットマップ上に単純な輪郭が生成されます。

  • グリッド内の各ポイントでフィールド強度を計算します (ポイントの質量に基づいて重力場の等高線のようなものをプロットしようとしていると仮定しています)。
  • 等高線の間の代替スペース (まだ取得していません) を 2 つの代替色で色付けします。たとえば、等高線が 100 単位 (電界強度) 離れている必要がある場合は、に基づいて各ピクセルの色を選択しますToInt(pixel_field_strength / 100) % 2
  • 色の境界のエッジをトレースして輪郭を作成します。たとえば、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
于 2012-01-14T00:41:58.433 に答える