vb6 grid contour

vb6 - Algoritmo de líneas de contorno



grid contour (1)

Esta pregunta es un poco obsoleta, pero también lo es mi experiencia: hice algo así hace casi 30 años.

Esto produce contornos simples en un mapa de bits:

  • Calcule la intensidad de campo en cada punto de la cuadrícula (supongo que está tratando de trazar algo así como los contornos de los campos gravitacionales en función de las masas de los puntos).
  • Colorea los espacios alternos entre las curvas de nivel (que aún no has obtenido) en dos colores alternativos. por ejemplo, si las líneas de contorno deben ser 100 unidades (de intensidad de campo) separadas, entonces elija el color de cada píxel en función de ToInt(pixel_field_strength / 100) % 2 .
  • Rastree los bordes de los límites de color para producir contornos. Por ejemplo, si sus dos colores son blanco y negro, solo retendrá píxeles blancos adyacentes a un píxel negro.

Si solo está interesado en los resultados, use una biblioteca como se sugiere en los comentarios.

Puramente por nostalgia, encontré mi código BBC BASIC original. Todavía se ejecuta en modelb (un emulador de 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

Esto bien podría ser un duplicado, pero no pude encontrar algo específico para mi problema.

Tengo una cuadrícula xy en un cuadro de imagen. Cada celda de grilla tiene una masa específica. Me gustaría crear líneas de contorno en esta cuadrícula xy en función de la masa.

¿Alguien tiene alguna idea para un buen algoritmo para realizar esta tarea? Estoy tratando de hacer esto en VB6, pero cualquier algoritmo sería suficiente.

Editar

Contour Grid

Tengo una grilla Quiero mostrar líneas de contorno basadas en la masa (IE, las celdas con más de un punto en ellas serán más pesadas en masa)