## Warning: package 'cowplot' was built under R version 4.3.3
## Warning: package 'ggplot2' was built under R version 4.3.3
Se tiene una fotografía aérea, cuyas coordenadas de referencia de las marcas fiduciales y la coordenada de un punto p cualquiera, se muestra en la siguiente tabla:
| Punto | Coord. x (und) | Coord. y (und) |
|---|---|---|
| 1 | 0.2203891 | 0.0073742 |
| 2 | 0.0083581 | 0.0079342 |
| 3 | 0.0088878 | 0.2199374 |
| 4 | 0.2209024 | 0.2193982 |
| 5 | 0.1143544 | 0.0016628 |
| 6 | 0.0026287 | 0.1139587 |
| 7 | 0.1149132 | 0.2256663 |
| 8 | 0.2266391 | 0.1133667 |
| p | 0.21469 | 0.19731 |
Además, las distancias reales entre las marcas fiduciales (5 , 7) y (6 , 8), miden 22.40 cm respectivamente;en tal sentido, cálcule:
La distancia fiducial entre marca (1, 2) , (2,3) y el acimut entre las marcas opuestas extremas.
El ángulo de distorsión total en grados sexagesimales.
Las coordenadas del punto principal,
La coordenada fiducial del punto principal y el punto p1.
La coordenada fiducial en el eje “x” y “y” del punto p1 y la coordenada corregida
Proceso de organización de los datos y cálculo el factor de escala.
p <- c(1,2,3,4,5,6,7,8, "p")
cx <- c(0.2203891,0.0083581,0.0088878,0.2209024,0.1143544,0.0026287,0.1149132,0.2266391, 0.21469)
cx
## [1] 0.2203891 0.0083581 0.0088878 0.2209024 0.1143544 0.0026287 0.1149132
## [8] 0.2266391 0.2146900
cy <- c(0.0073742,0.0079342,0.2199374,0.2193982, 0.0016628,0.1139587, 0.2256663, 0.1133667,0.19731)
d<-data.frame(p,cx,cy)
# Mostrando la distribución de los puntos
plot(d$cx,d$cy)
d
## p cx cy
## 1 1 0.2203891 0.0073742
## 2 2 0.0083581 0.0079342
## 3 3 0.0088878 0.2199374
## 4 4 0.2209024 0.2193982
## 5 5 0.1143544 0.0016628
## 6 6 0.0026287 0.1139587
## 7 7 0.1149132 0.2256663
## 8 8 0.2266391 0.1133667
## 9 p 0.2146900 0.1973100
d[6,2]
## [1] 0.0026287
# Cálculo de factor de escala a partir de los puntos de la distancia entre los puntos
#(5 , 7) y (6 , 8) equivalente a 22.40 cm
d57<-function(x1=d[5,2],y1=d[5,3],x2=d[7,2],y2=d[7,3]){
d<- sqrt((x1-x2)^2+(y1-y2)^2)
return(d)
}
d57()
## [1] 0.2240042
# Hallando el factor de escala.
Ey = 22.40/d57()
Ey
## [1] 99.99813
d68 <-function(x1=d[6,2],y1=d[6,3],x2=d[8,2],y2=d[8,3]){
d<- sqrt((x1-x2)^2+(y1-y2)^2)
return(d)
}
d68()
## [1] 0.2240112
# Hallando el factor de escala.
Ex = 22.40/d68()
Ex
## [1] 99.99501
Cálculo de distancia entre las marcas fiduciales opuestas.
d
## p cx cy
## 1 1 0.2203891 0.0073742
## 2 2 0.0083581 0.0079342
## 3 3 0.0088878 0.2199374
## 4 4 0.2209024 0.2193982
## 5 5 0.1143544 0.0016628
## 6 6 0.0026287 0.1139587
## 7 7 0.1149132 0.2256663
## 8 8 0.2266391 0.1133667
## 9 p 0.2146900 0.1973100
d[1,3]
## [1] 0.0073742
# En el eje X
d12<-function(x1=d[1,2],y1=d[1,3],x2=d[2,2],y2=d[2,3]){
d<- sqrt((x1-x2)^2+(y1-y2)^2)
return(d)
}
d12()
## [1] 0.2120317
# Multiplicando por el factor de escala en el eje "x"
d12()*Ex
## [1] 21.20212
En el eje Y
d23<-function(x1=d[2,2],y1=d[2,3],x2=d[3,2],y2=d[3,3]){
d<- sqrt((x1-x2)^2+(y1-y2)^2)
return(d)
}
d23()
## [1] 0.2120039
# Multiplicando por el factor de escala en el eje "y"
d23()*Ey
## [1] 21.19999
Hallando los valores de acimut entre la marca 1 y 2
a12<-function(x1=d[1,2],y1=d[1,3],x2=d[2,2],y2=d[2,3]){
a <- atan((x1-x2)/(y1-y2))*(180/pi)
return(a)
}
a12()
## [1] -89.84868
Hallando los valores de acimut entre la marca 2 y 3
a23<-function(x1=d[2,2],y1=d[2,3],x2=d[3,2],y2=d[3,3]){
a <- atan((x1-x2)/(y1-y2))*(180/pi)
return(a)
}
a23()
## [1] 0.1431559
Los rayos en el eje “x” y eje “y” deben deben sumar 90 grados sexagesimales, los valores valores de sumatoria de valor absoluto de los acimuts deben sumar igual o próximo a 90 grados y la diferencia de noventa grados con la sumatoria de los acimuts van a generar un delta, y el valor de delta es el ángulo de distorsión total.
Θ = 90-(abs(a12())+abs(a23()))
Θ
## [1] 0.008168951
# El valor de la coordenada del punto principal en el eje "x" y "y"
d
## p cx cy
## 1 1 0.2203891 0.0073742
## 2 2 0.0083581 0.0079342
## 3 3 0.0088878 0.2199374
## 4 4 0.2209024 0.2193982
## 5 5 0.1143544 0.0016628
## 6 6 0.0026287 0.1139587
## 7 7 0.1149132 0.2256663
## 8 8 0.2266391 0.1133667
## 9 p 0.2146900 0.1973100
cpcx <-(sum(d$cx)-d[9,2])/8
cpcx
## [1] 0.1146341
cpcy <- (sum(d$cy)-d[9,3])/8
cpcx
## [1] 0.1146341
# d) Cálculo de la distancia fiducial en el eje "x" y "y" del punto p1.
d[9,2]
## [1] 0.21469
dx <- (d[9,2]- cpcx)*Ex
dx
## [1] 10.00509
dy <- (d[9,3]- cpcx)*Ey
dy
## [1] 8.267435
# Para calcular la coordenada corregida aplicamos la rotación matricial afín
m <- function(x=dx,y=dy, Θ = 90-(abs(a12())+abs(a23()))){
m <- matrix(c(1,sin(Θ*pi/180),0, cos(Θ*pi/180) ),ncol = 2,byrow = TRUE)
m1<- matrix(c(x,y),ncol = 1, byrow = TRUE)
m2 <-m%*%m1
return(m2)
}
m()
## [,1]
## [1,] 10.006269
## [2,] 8.267435