>>127
if(面と球の中心の距離<=球の半径){
if(垂線の足が三角形に含まれる) return true;
}
for(i=0;i<3;i++){
if(辺と球の中心の距離<=球の半径){
if(垂線の足が線分に含まれる) return true;
}
}
for(i=0;i<3;i++){
if(頂点と球の中心の距離<=球の半径) return true;
}
return false;

その条件で、接触判定する(真偽を得る)だけならこれで良さげ
"変な判定"が何なのか謎