当前位置: 首页 > news >正文

计算斜着椭圆内某个点到边距离(验证ok)

        sPoint center;
        center.x = sLRpInfo.rdOut.x; center.y = sLRpInfo.rdOut.y;
        float a = sLRpInfo.rdOut.a;  // 长轴半径
        float b = sLRpInfo.rdOut.b; // 短轴半径
        float theta = (360.0 - sLRpInfo.rdOut.fAngle) * CV_PI / 180.0f; // 旋转角度,转换为弧度
        float fddtoCen = 0;
        for (i = 0;i < nDftNum;i++)
        {
            rdFit = A_RoundFitting(v_FitRound.at(i), 0, v_FitRound.at(i).size());
            rdFit.x += roi.l; rdFit.y += roi.t;
            sLRpInfo.rdFeaFit[i] = rdFit;
            if (2 * rdFit.r > sLRpInfo.fGetMaxMinRd[1])sLRpInfo.fGetMaxMinRd[1] = 2 * rdFit.r;
            if (2 * rdFit.r < sLRpInfo.fGetMaxMinRd[0])sLRpInfo.fGetMaxMinRd[0] = 2 * rdFit.r;

            if (sLRpInfo.bArith[5])
            {
                float x_prime = (rdFit.x - center.x) * cos(theta) + (rdFit.y - center.y) * sin(theta);
                float y_prime = -(rdFit.x - center.x) * sin(theta) + (rdFit.y - center.y) * cos(theta);

                // 2. 计算参数角 alpha
                float alpha = atan2(y_prime, x_prime);
                if (alpha < 0) alpha += 2 * CV_PI; // 确保 alpha 在 0 到 2π 之间

                // 3. 计算椭圆边界点
                float x_ellipse = a * cos(alpha);
                float y_ellipse = b * sin(alpha);

                // 4. 旋转回全局坐标系
                sLRpInfo.ptOffArcEdge[i].x = center.x + x_ellipse * cos(theta) - y_ellipse * sin(theta);
                sLRpInfo.ptOffArcEdge[i].y = center.y + x_ellipse * sin(theta) + y_ellipse * cos(theta);

                // 计算边界点到中心的距离
                fddtoCen = A_GetPointDistence(sLRpInfo.ptOffArcEdge[i], center);

                if (fddtoCen > sLRpInfo.fGetMaxMinToArc[1])
                    sLRpInfo.fGetMaxMinToArc[1] = fddtoCen;
                if (fddtoCen < sLRpInfo.fGetMaxMinToArc[0])
                    sLRpInfo.fGetMaxMinToArc[0] = fddtoCen;
            }
        }

相关文章:

  • SpringSecurity——基于角色权限控制和资源权限控制
  • 使用`plot_heatmap`绘制热力图时
  • Android之悬浮窗实现
  • 如何设计一个 RPC 框架?需要考虑哪些点?
  • 结合基于标签置信度的特征选择方法用于部分多标签学习-简介版
  • C++ —— 线程同步(互斥锁)
  • vue 中常用操作数组的方法
  • Minecraft命令总结(持续更新)
  • Deal - DbC、检查Python 值、异常和副作用
  • 鸿蒙NEXT项目实战-百得知识库03
  • jpa报错 Validation failed for query for method public abstract
  • MySQL单表查询
  • 练习题:94
  • MutableList 和 ArrayList 区别
  • 格力地产更名“珠免集团“ 全面转型免税赛道
  • 【AI绘画教程】从MJ到SD,九周精通AI绘画,MJ基础至SD模型训练全方位教学
  • 高级java每日一道面试题-2025年3月06日-微服务篇[Eureka篇]-Eureka Server和Eureka Client关系?
  • OpenWrt中使用GPIO模拟I2C控制CAT9555芯片的示例代码
  • 显示模组ESD损伤探讨
  • 调用百度智能云API实现货币识别
  • 游客称在网红雪山勒多曼因峰需救援被开价2.8万,康定文旅:封闭整改
  • 山寨“小米”智能马桶、花洒销售额过亿,被判赔3500万元
  • 民生访谈|今年上海还有哪些重要演出展览?场地配套如何更给力?
  • 家庭相册㉙在沪打拼25年,我理解了父母清晨去卖蜜饯的辛苦
  • 金融监管总局:近五年民企贷款投放年平均增速比各项贷款平均增速高出1.1个百分点
  • 泉州一家婚介机构广告牌越南新娘七天闪婚领证?市监部门介入