Как я смогу получить абсолютное значение SCNVector3?

Я хотел бы получить абсолютное значение SCNVector3, чтобы найти величину двух векторов. Scenekit ничего не имеет. Я бы предпочел сделать это без какао-бобов, если есть простой метод. Вот соответствующий код:

  static func angle3dVector(p1: SCNVector3, p2: SCNVector3, p3: SCNVector3, p4: SCNVector3) -> Double {
    let v1: SCNVector3 = SCNVector3(p1.z - p2.z, p1.y - p2.y, p1.x - p2.x)
    let v2: SCNVector3 = SCNVector3(p3.z - p4.z, p3.y - p4.y, p3.x - p4.x)
    let v1norm = v1.normalized()
    let v2norm = v2.normalized()

    let dot = v1.x * v2.x + v1.y * v2.y + v1.z * v2.z
    let res = v1norm.x * v2norm.x + v1norm.y * v2norm.y + v1norm.z * v2norm.z
    // This is where I'm trying to get the magnitude
    var magnitude = abs(v1) * abs(v2)
    let angle: Double = Double(acos(dot/magnitude))


    return (angle/pi) * 180 //Converted to degrees
}

Я мог бы также взять квадратный корень из самого точечного произведения. Существенная потребность состоит в том, чтобы иметь величину двух переменных SCNVector3.

0 ответов

Другие вопросы по тегам