// This file is part of libigl, a simple c++ geometry processing library. // // Copyright (C) 2018 Alec Jacobson // // 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 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 const&, double const&, double const&); #endif