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.
Comentários