mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 09:05:45 +00:00
4affe59604
Normalizing the AudioListener front orientation vectors before taking their cross product avoids the possibility of overflow. The panning effect and the azimuth and elevation calculation in the Web Audio spec becomes undefined with linearly dependent listener vectors, so keep existing state in these situations. PannerNode orientation is normalized for consistency, but zero is permitted for this vector because the sound cone algorithm in the Web Audio specifies behavior for this case. --HG-- extra : transplant_source : %DA%C7e%E7%90%14%AF%EA%08%94x%C1%A2g%F1%9A%EE%16%EB%29
50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/**
|
|
* Other similar methods can be added if needed.
|
|
*/
|
|
|
|
#include "ThreeDPoint.h"
|
|
#include "WebAudioUtils.h"
|
|
|
|
namespace mozilla {
|
|
|
|
namespace dom {
|
|
|
|
bool
|
|
ThreeDPoint::FuzzyEqual(const ThreeDPoint& other)
|
|
{
|
|
return WebAudioUtils::FuzzyEqual(x, other.x) &&
|
|
WebAudioUtils::FuzzyEqual(y, other.y) &&
|
|
WebAudioUtils::FuzzyEqual(z, other.z);
|
|
}
|
|
|
|
ThreeDPoint operator-(const ThreeDPoint& lhs, const ThreeDPoint& rhs)
|
|
{
|
|
return ThreeDPoint(lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z);
|
|
}
|
|
|
|
ThreeDPoint operator*(const ThreeDPoint& lhs, const ThreeDPoint& rhs)
|
|
{
|
|
return ThreeDPoint(lhs.x * rhs.x, lhs.y * rhs.y, lhs.z * rhs.z);
|
|
}
|
|
|
|
ThreeDPoint operator*(const ThreeDPoint& lhs, const double rhs)
|
|
{
|
|
return ThreeDPoint(lhs.x * rhs, lhs.y * rhs, lhs.z * rhs);
|
|
}
|
|
|
|
bool operator==(const ThreeDPoint& lhs, const ThreeDPoint& rhs)
|
|
{
|
|
return lhs.x == rhs.x &&
|
|
lhs.y == rhs.y &&
|
|
lhs.z == rhs.z;
|
|
}
|
|
|
|
}
|
|
}
|