我正在寻找一种算法来计算3D中一个点和一个线段之间的平均距离.因此,给定代表线段AB的两个点A(x1,y1,z1)和B(x2,y2,z2),以及第三个点C(x3,y3,z3),AB上每个点之间的平均距离是多少指向C?
我也对两个线段之间的平均距离感兴趣.因此,给定AB段和CD段,从AB上的每个点到CD上最近点的平均距离是多少?
我对我尝试的网络搜索没有任何运气,所以任何建议都将不胜感激.
谢谢.
在阅读了这个问题的答案之后,我了解到SFINAE可以用来根据类是否具有某个成员函数来选择两个函数.它等同于以下内容,只是将if语句中的每个分支拆分为重载函数:
template<typename T>
void Func(T& arg)
{
if(HAS_MEMBER_FUNCTION_X(T))
arg.X();
else
//Do something else because T doesn't have X()
}
Run Code Online (Sandbox Code Playgroud)
变
template<typename T>
void Func(T &arg, int_to_type<true>); //T has X()
template<typename T>
void Func(T &arg, int_to_type<false>); //T does not have X()
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能扩展SFINAE来做多个规则.一些与此相当的东西:
template<typename T>
void Func(T& arg)
{
if(HAS_MEMBER_FUNCTION_X(T)) //See if T has a member function X
arg.X();
else if(POINTER_DERIVED_FROM_CLASS_A(T)) //See if T is a pointer to a class derived from class A
arg->A_Function();
else if(DERIVED_FROM_CLASS_B(T)) //See if T …Run Code Online (Sandbox Code Playgroud)