double cal_curvature_radius(const Eigen::Vector2d& p0,
const Eigen::Vector2d& p1,
const Eigen::Vector2d& p2) {
double aa = (p1 - p2).squaredNorm();
double bb = (p2 - p0).squaredNorm();
double cc = (p0 - p1).squaredNorm();
double a = std::sqrt(aa);
double b = std::sqrt(bb);
double c = std::sqrt(cc);
double cos_b = (aa + cc - bb) / (2 * a * c);
if (std::abs(cos_b) >= 1.0) {
return 65504.0; // 直线,返回一个很大值即可
}
double sin_b = std::sqrt(1 - cos_b * cos_b);
return 0.5 * b / sin_b;
}
计算曲率半径 C++实现
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在数学中,矩阵的“谱半径”是指其特征值的模集合的上确界。换言之,对于给定的 n 个复数空间的特征值 { a1...
- 我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容。...
- 为什么需要数值积分的C/C++实现 现在比较流行将Python作为科学计算语言来使用, 但是在使用Python的过...