Distancia punto a segmento, tercera parte

En esta tercera parte sobre la distancia de un punto a un segmento comienzo a construir un ejemplo de utilización.

Como el ejemplo es bastate complejo, los impacientes pueden saltarse las explicaciones y descargar el código fuente del ejemplo en: distancia.zip.

En principio el ejemplo iba a ser mucho más sencillo, pero me entro la vena didáctica y acabe haciendo que los puntos del segmento y del punto exterior fueran números enteros y que el origen de coordenadas estuviera en el centro de la ventana. Esto ha significado añadir la “traducción” de los puntos de la vista a coordenadas cartesianas.

La ventana y los objetos del programa

En este caso la definición de la ventana comienza en Xcode, una vez creado el projecto hay que crear nuevas clases: una corresponde a la definición del segmento con el codigo explicado anteriormente (distancia punto a segmento, segunda parte), y otra correspondiente a la vista personalizada (NSView) que dibujará los objetos.

En la vista personalizada definiremos dos conectores (IBOutlet), uno para mostrar la distancia y otro para el segmento:

#import <Cocoa/Cocoa.h>
#import "segmento.h"
@interface SVista : NSView {
    IBOutlet Segmento *segment;         // El segmento, se inicializara en IB
    IBOutlet id muestraDistancia;       // Muestra la distancia calculada en la ventana
}
@end

Seguidamente hay que ir a Interface Builder para definir la ventana del programa. En la ventana del programa añadimos una vista personalizada (Custom View) que podemos encontrar en la libreria de objetos Cocoa. Para simplificar el ejemplo en este caso las medidas de la ventana son fijas. Una vez colocada la ventana, en el apartado “Class Identity ” del inspector hay que indicar que la clase personalizada será la que hemos creado con Xcode. En la siguiente imagen puede verse la ventana y los conectores (outlets) que hemos definido antes.

Después hay que añadir una instancia de segmento. En Xcode 3 ha cambiado el comportamiento respecto a anteriores versiones. En esta versión si añadimos una instancia de una clase a Interface Builder el sistema se encargará de la gestión del objeto (inicializar, destruir, gestionar la memoria). Aunque siempre es posible utilizar el método anterior.

Para ello hace falta añadir un NSObjet de la libreria de objetos (simplemente arrastrando) y en el inspector seleccionar la clase del objeto.

En la misma ventana de la aplicación además de la vista personalizada podemos añadir una etiqueta (Label, NSTextField) que permitirá mostrar la distancia.

El último paso en IB es conectar los conectores al elemento correspondiente. Esto se hace con apretando la tecla de control y arrastrando el ratón desde el objeto a conectar al conectado. En este caso desde la vista a la instancia de la clase Segmento.

De momento esto es todo por hoy, espero seguir explicando cosas sobre como se dibuja la ventana, como se escalan los puntos a la ventana y como se hace el arrastre de los puntos con el ratón.

Código fuente del ejemplo

Archivos alojados en Dropbox.com

Entradas relacionadas

Etiquetas: , , ,

Una respuesta to “Distancia punto a segmento, tercera parte”

  1. NEstor Says:

    Primero que nada felicidades, y te agradezco por la informacion de tu blog me ha sido de mucha ayuda, espero que sigas postendo, para que podamos aprender un poco mas

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: