import Foundation
func areaTriangulo(_ p1: Punto, _ p2: Punto, _ p3: Punto) -> Double {
let det = p1.x * (p2.y - p3.y) + p2.x * (p3.y - p1.y) + p3.x * (p1.y - p2.y)
return abs(det)/2
}
struct Punto{
var x = 0.0, y = 0.0
}
struct Tamaño{
var alto = 0.0, largo = 0.0
}
struct Figura{
var origen : Punto
var tamaño : Tamaño
var area: Double{
return tamaño.alto*tamaño.largo
}
var centro: Punto{
get{
let centrox = origen.x+ (tamño.ancho/2)
let centroy = origen.y+ (tamño.alto/2)
return = Punto(x: centrox, y: centroy)
}
set{
let origen.x = newValue.x + (tamño.ancho/2)
let origen.y = newValue.y + (tamño.alto/2)
}
}
init (origen: Punto, tamaño: Tamaño){
self.origen = origen
self.tamaño= tamaño
}
}
struct Cuadrilatero :Figura{
var p1 : Punto
var p2 : Punto
var p3 : Punto
var p4 : Punto
override var centro :Punto {
set{
let incX = newValue.x + centro.x
let incY = newValue.y + centro.y
super.centro = newValue
p1 = Punto(x: p1.x + incX, y: p1.y + incY)
p2 = Punto(x: p2.x + incX, y: p2.y + incY)
p3 = Punto(x: p3.x + incX, y: p3.y + incY)
p4 = Punto(x: p4.x + incX, y: p4.y + incY)
}
get{
super.centro
}
}
override var area: Double{
return areaTriangulo(p1 + p2 + p3) + areaTriangulo(p1 + p3 + p4)
}
init (p1: Punto, p2: Punto, p3: Punto, p4: Punto){
self.p1 = p1
self.p2 = p2
self.p3 = p3
self.p4 = p4
let miny = min(p1.x, p2.x, p3.x, p4.x)
let minx = min(p1.y, p2.y, p3.y, p4.y)
let maxy = max(p1.x, p2.x, p3.x, p4.x)
let maxx = max(p1.y, p2.y, p3.y, p4.y)
let alto = maxy -miny
let ancho = maxx - minx
super.innit(origen: Punto(x : minx, y: miny), tamaño: Tamaño(ancho: ancho, alto: alto))
}
}
struct Circle: Figura{
var radio : Double = 0
var area : Double{
get{
Double.pi*radio*radio
}
set{
}
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: