SCRIPT-R
- frvargas87
- 7 jul 2016
- 1 Min. de lectura

Script para calcular el perímetro y superficie de un polígono. Este es un ejercicio adicional realizado en una tarea de la maestría.
El ejercicio indicaba calcular el perímetro y superficie dado un conjunto de puntos (Coordenadas X,Y). Pero modifiqué la opción para ingresar cualquier par de puntos y ver como variaba la forma, superficie, y límites de un polígono.
El código fue elaborado en R sowfware estadístico.
########OTRO CODIGO AUMENTANDO VERTICES####### rm(list=ls()) require(utils) { cat("APLICATIVO PARA CALCULAR AREA Y SUPERFICIE \n DEBERÁ INGRRESAR AL MENOS 3 COORDENADAS") X=as.numeric(readline("¿Ingrese coordenada X? ")) Y=as.numeric(readline("¿Ingrese coordenada Y? ")) } datos=as.matrix(rbind(cbind(X,Y),cbind(X,Y)))
while (nrow(datos)<=3) { datos=rbind(datos,NA) IngX=readline("Ingrese otra coordenada de X: ") datos[(nrow(datos)-1),1]=as.numeric(IngX) datos[nrow(datos),1]=datos[1,1] IngY=readline("Ingrese otra coordenada de Y: ") datos[nrow(datos)-1,2]=as.numeric(IngY) datos[nrow(datos),2]=datos[1,2] #IngCodigo=readline("¿Desea ingresar más vértices? (1-Sí/2-No): ") }
{ IngCodigo=readline("¿Desea ingresar más vértices? (1-Sí/2-No): ") while (IngCodigo==1) { datos=rbind(datos,NA) IngX=readline("Ingrese otra coordenada de X: "); datos[(nrow(datos)-1),1]=as.numeric(IngX) datos[nrow(datos),1]=datos[1,1] IngY=readline("Ingrese otra coordenada de Y: "); datos[nrow(datos)-1,2]=as.numeric(IngY) datos[nrow(datos),2]=datos[1,2] IngCodigo=readline("¿Desea ingresar más vértices? (1-Sí/2-No): ") } if (IngCodigo!=1) { perim=0; superficie=0; for (i in (c(2:(nrow(datos))))) { perim=perim+sqrt(((datos[i-1,1]-datos[i,1])^2)+((datos[i-1,2]-datos[i,2])^2)) superficie= superficie+((datos[i-1,1]*datos[i,2])-(datos[i,1]*datos[i-1,2])) } perim=as.matrix(round(perim,3)) superficie=as.matrix(abs(superficie)/2) plot.new() plot(datos) polygon(datos) cat("RESULTADO:") cat(paste("\nPerímetro: ",as.character(perim),"u \nSuperficie: ",as.character(superficie),"u2")) winDialog(type = "ok", paste("Perímetro: ",as.character(perim),"u", "\n Superficie: ",as.character(superficie),"u2")) lineas=list(bquote( Perímetro==.(perim)~u),bquote(Superficie==.(superficie)~u^2)) text(max(datos[,1]-2),(min(datos[,2]+1)-(0.2264324 * 1.5 * seq(length(lineas)))),do.call(expression,lineas)) } }
Espero sus comentarios.
Descagar el instalador de R para correr el script.
Entradas recientes
Ver todoArtículo publicado por Harvard business Review (HBR), pero porque dijo eso el HBR? Obviamente no es porque la mayoría lucimos como Anne...
Las políticas de privacidad se consideran una de las piezas de información más importantes en el sitio web de una empresa. ¿Lanzando un...
La base de datos espacial es el componente más importante en cualquier sistema GIS. Recuerde, los datos dependen de eso. Una buena base...
Comments