Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo crear un sistema de coordenadas tridimensional usando VB?

¿Cómo crear un sistema de coordenadas tridimensional usando VB?

/blog/static/88508439200810104315168/ Aplicación de VB en posicionamiento de coordenadas tras ampliar parcialmente el mapa de contorno dibujado por el surfista Petroleum Software 2008-11-10 16:31 Leer 22 Comentarios 0 Tamaño de fuente: Grande Mediano Pequeño y mediano Gong Tianning, Pan Dilin, Chen Xuhui

(Escuela de Ingeniería y Ciencias de la Computación, Universidad de Ciencia y Tecnología de Anhui, Huainan, Anhui 232001)

Resumen: Para usar VB para llamar a la interfaz de automatización proporcionada por el software de navegación. Después de llamar a controles externos para ampliar la imagen durante el proceso de dibujar el mapa de contorno, no hay forma de posicionar las coordenadas para obtener el valor tridimensional de cualquier punto de la cuadrícula en la imagen. El artículo propone utilizar la función PaintPicture de VB para ampliar el mapa de contorno del navegante generado por el software y, al importar el archivo grd generado por el software del navegante, se puede calcular el punto de cuadrícula de cualquier punto de la imagen para obtener la imagen tridimensional. valor del punto.

Palabras clave: software Surfer; automatización; mapa de contorno; posicionamiento de coordenadas; programación integrada VB 0 Introducción

El software Surfer es un sistema operativo basado en Windows desarrollado por American Golden Software Company. un software de dibujo bidimensional y tridimensional. No solo proporciona una gran cantidad de algoritmos de cuadrícula e interpolación, sino que también tiene una poderosa capacidad para dibujar mapas de contorno y los gráficos tridimensionales correspondientes. Es imprescindible para la ciencia y la tecnología. trabajadores, especialmente investigadores de geociencias. El software proporciona una interfaz de programación integrable. El servidor Surfer se ejecuta en segundo plano y puede eliminar por completo la interfaz de control principal de Surfer. El mapa de contorno se puede dibujar rápidamente a través de la programación integrada VB en la interfaz del programa cliente.

Los mapas de curvas de nivel suelen requerir dos procesos: ampliación local y obtención del valor tridimensional de un punto concreto. Al cargar el control AutoCAD Voloview Express se pueden ampliar, reducir y mover imágenes. El archivo grd exportado por Surfer es un archivo de valores tridimensionales (valores de coordenadas X, Y, Z) de los puntos de la cuadrícula en el mapa de contorno calculado utilizando el algoritmo de interpolación seleccionado. Al analizar el archivo grd, se pueden ver todos los puntos de la cuadrícula en la imagen. se obtendrá un valor tridimensional. Sin embargo, después de utilizar controles externos para ampliar el mapa de contorno, la imposibilidad de localizar las coordenadas se convierte en un obstáculo para obtener el valor tridimensional de un punto específico.

Este artículo utiliza el método PaintPicture que viene con VB para escribir una función de ampliación de imagen. Al mismo tiempo, calcula el número de filas y columnas de la cuadrícula en el área de ampliación y la posición inicial de la cuadrícula de la ampliación. área, para calcular con precisión la imagen en la imagen ampliada. Las coordenadas de la cuadrícula de un determinado punto determinan su valor tridimensional.

1 Proceso específico

En el proyecto de alarma de presión de la mina de carbón en el que participó el autor, es necesario llamar a Surfer para que dibuje el mapa de contorno. Una vez dibujado el mapa de contorno, se muestra la imagen. debe ampliarse parcialmente de acuerdo con los requisitos del cliente. Al mismo tiempo, también es necesario proporcionar valores tridimensionales de las preocupaciones del cliente en cualquier momento. El flujo de estas tareas es el siguiente:

Determine si se crea el objeto Surfer. Si no, créelo. Una vez completado, importe los datos originales y utilice el algoritmo seleccionado para interpolarlo en cuadrícula y generar un grd. archivo. Analice el archivo grd generado por Surfer, extraiga el número de filas y columnas de la cuadrícula en la imagen, los valores X mínimo y máximo de las coordenadas de la cuadrícula, los valores Y mínimo y máximo de las coordenadas de la cuadrícula y el Valores Z de todas las cuadrículas y guárdelos en filas de variables, cols, Hmin, Hmax, Vmin, Vmax y una matriz de datos.

Calcule el intervalo de cada cuadrícula en la abscisa y ordene en el eje de coordenadas del mapa de contorno: Hdeta=(Hmax- Hmin)/(cols- 1), Vdeta=(Vmax- Vmin )/(filas- 1); Calcule la longitud de cada cuadrícula en el eje X y el eje Y en el cuadro de imagen de VB: SwPerGrid=Picture.ScaleWidth/cols, ShPerGrid=Picture.ScaleHeight/rows. Si el usuario necesita ampliar una determinada parte de la imagen, obtenga las coordenadas inicial y final (x1, y1) y (x2, y2) del dominio ampliado en el sistema de coordenadas del marco de la imagen VB, convertidas respectivamente o la posición en la cuadrícula. sistema de coordenadas (X1grid, Y1grid), (X2grid, Y2grid), fórmula de conversión: extraiga los valores Z de todas las cuadrículas en el área de selección; use la función PaintPicture para ampliar el área de selección; Valores Hmin, Vmin, SwPerGrid y ShPerGrid. Si el usuario necesita el valor tridimensional de un determinado punto en la imagen, la posición del punto en el sistema de coordenadas de la cuadrícula se convierte de acuerdo con la posición del punto en el sistema de coordenadas del marco de la imagen VB (de acuerdo con la fórmula de conversión anterior ); el valor tridimensional del punto se calcula a través de las coordenadas de la cuadrícula Valor: X=Xgrid*Hdeta+Hmin, Y=Ygrid*Vdeta+Vmin, Z=data Ygrid, Xgrid). En la Figura 1 se muestra un diagrama de flujo simplificado. 2 Diseño del programa

Para simplificar los pasos, el mapa de contorno dibujado usando el software de navegación y el archivo grd del mapa se han preparado y colocado en el documento del programa. No es necesario llamar al software de navegación. dibujo en el sitio en el programa de prueba. Gráfico de líneas de valor y generación de archivos grd. A continuación solo se proporciona la parte principal del pseudocódigo.

⑴ Defina los marcos de imagen imagen1 e imagen2, cargue el mapa de contorno generado por Surfer y extraiga filas, columnas, Hmin, Hmax, Vmin, Vmax, datos() del archivo grd y calcule Hdeta, Vdeta, SwPerGrid, ShPerGrid (código omitido).

⑵ Supervise el evento de movimiento del mouse en el marco de imagen 1 y muestre el valor tridimensional del punto del mouse en tres barras de etiquetas; monitoree el evento de presión del mouse en el marco de imagen 2 y registre su posición (código); omitido); monitorear el evento de movimiento del mouse del marco de imagen 2. Si ocurre un evento de presión antes, dibuje un cuadro rectangular para marcar el área de ampliación seleccionada (código omitido) monitorear el evento de liberación del mouse del marco de imagen 2, registrar su posición; calcule el área de selección El número de cuadrículas, guarde el valor Z de los puntos de la cuadrícula en el área de selección en la matriz y amplíe la imagen.

Subimagen privada1_Mous eMove(Botón como entero, Mayús como

Entero,X como único, Y como único)

SwPerGrid=Picture1.ScaleWidth/cols

// Calcula el ancho de cada cuadrícula en el cuadro de imagen de VB

ShPerGrid=Picture1.ScaleHeight/rows

// Calcula la altura ocupada en cada cuadrícula Cuadro de imagen VB

Xgrid=Int(X/SwPerGrid)

// Calcula la coordenada de abscisas de la cuadrícula del punto seleccionado

Ygrid=rows -1-Int (Y/ShPerGrid)

// Calcula la ordenada de la cuadrícula del punto seleccionado

Label1.Caption=Xgrid*Hdeta+Hmin

Label2.Caption=Ygrid *Vdeta+Vmin

Label3.Caption=pdata(Ygrid,Xgrid)

// Calcula y muestra el valor tridimensional del punto respectivamente

p>

End Sub

Imagen secundaria privada2_Mous eUp(Botón como entero,Mayús como

Entero,X como único,Y como único)

X1grid =Int(X1 /SwPerGrid)Y1grid=rows -1-Int(Y1/ShPerGrid)

// Calcular la posición de la coordenada inicial en la grilla

X2grid=Int(X2/ SwPerGrid)

Y2grid=rows -1-Int(Y2/ShPerGrid)

// Calcular la posición de la coordenada final en la grilla

rows=Y1grid- Y2grid+ 1

cols=X2grid-X1grid+1

// Calcula el número de filas y columnas de la cuadrícula en el área seleccionada

Imagen1.PaintPicture Imagen2 Ampliar dominio

Para i=0 A filas -1

Para j=0 A columnas -1

pdata(i,j)=data(Y2grid+ i, X1grid+j)

// Guarda los datos en el área seleccionada

End Sub

2.3 Resultados de ejecución del programa

Este El programa satisface las necesidades del cliente: puede ampliar cualquier área de la imagen y el valor tridimensional de un determinado punto se puede localizar con precisión después de la ampliación. Como se muestra en la Figura 2: el marco de imagen 1 está a la izquierda y el marco de imagen 2 está a la derecha. Los clientes pueden seleccionar un área en el marco de imagen 2, y el área seleccionada se ampliará y se completará en el marco de imagen 1, y deslizando el. El mouse en el marco de imagen 1 puede mostrar el valor tridimensional del punto del mouse en tres etiquetas.