12345678910111213141516171819202122232425262728293031323334353637 |
- // This file is part of libigl, a simple c++ geometry processing library.
- //
- // Copyright (C) 2018 Alec Jacobson <alecjacobson@gmail.com>
- //
- // 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/.
- #include "tan_half_angle.h"
- #include <cmath>
- template < typename Scalar>
- IGL_INLINE Scalar igl::tan_half_angle(
- const Scalar & a,
- const Scalar & b,
- const Scalar & c)
- {
- // .
- // /|
- // c/ |
- // / |
- // / |
- // .α | a
- // \ |
- // \ |
- // b\ |
- // \|
- //
- // tan(α/2)
- // Fisher 2007
- return sqrt(((a-b+c)*(a+b-c))/((a+b+c)*(-a+b+c)));
- }
- #ifdef IGL_STATIC_LIBRARY
- // Explicit template instantiation
- // generated by autoexplicit.sh
- template double igl::tan_half_angle<double>(double const&, double const&, double const&);
- #endif
|