You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android平台电路组件连接拐角点计算方法实现咨询

拐角点计算算法实现方案

问题概述

需实现Android坐标系下源组件与目标组件连接时的拐角点计算方法,输入参数包含源点(PointF)、源组件方向(水平HORIZONTAL/垂直VERTICAL)、目标点(PointF)、目标组件方向,场景具有对称性(源与目标组件可互换)。Android坐标系规则:x坐标从左到右递增,y坐标从上到下递增。

算法实现代码

private final static int HORIZONTAL = 0;
private final static int VERTICAL = 1;

private PointF computeCornerPoint(PointF sourcePoint, int sourceComponentOrientation, PointF targetPoint, int targetComponentOrientation) {
    PointF cornerPoint = new PointF();

    if (sourceComponentOrientation != targetComponentOrientation) {
        // 源与目标方向不同,形成唯一L型拐角
        if (sourceComponentOrientation == HORIZONTAL) {
            // 源水平(竖线延伸),目标垂直(横线延伸)
            cornerPoint.x = sourcePoint.x;
            cornerPoint.y = targetPoint.y;
        } else {
            // 源垂直(横线延伸),目标水平(竖线延伸)
            cornerPoint.x = targetPoint.x;
            cornerPoint.y = sourcePoint.y;
        }
    } else {
        // 源与目标方向相同,按距离差选择拐角点,保证视觉合理性与对称性
        float dx = Math.abs(sourcePoint.x - targetPoint.x);
        float dy = Math.abs(sourcePoint.y - targetPoint.y);
        
        if (sourceComponentOrientation == HORIZONTAL) {
            // 两个水平组件:优先延伸差距大的方向
            cornerPoint.x = dx > dy ? targetPoint.x : sourcePoint.x;
            cornerPoint.y = dx > dy ? sourcePoint.y : targetPoint.y;
        } else {
            // 两个垂直组件:优先延伸差距大的方向
            cornerPoint.x = dx > dy ? targetPoint.x : sourcePoint.x;
            cornerPoint.y = dx > dy ? sourcePoint.y : targetPoint.y;
        }
    }

    return cornerPoint;
}

算法逻辑说明

  1. 不同方向场景:当源与目标组件方向不同时,拐角点为源点x坐标与目标点y坐标的交点(源水平时),或目标点x坐标与源点y坐标的交点(源垂直时),这是L型连线的唯一自然拐角,且满足对称性要求。
  2. 相同方向场景:当源与目标组件方向相同时,通过比较两点在x、y方向的距离差,优先延伸差距较大的方向,保证连线视觉简洁,同时交换源与目标参数后计算结果一致,符合对称性。

需要补充的关键信息

当前实现基于通用UI连线逻辑,若要完全匹配你的示意图场景,还需补充以下信息:

  • 组件连接边偏好:比如水平组件的连接线是从顶部还是底部引出,垂直组件是从左侧还是右侧引出,这会直接影响延伸方向的选择(如y轴向上/向下、x轴向左/向右)。
  • 相同方向场景的固定优先级:是否有明确规则(如强制优先水平延伸、强制优先垂直延伸),而非基于距离差判断。

内容的提问来源于stack exchange,提问作者Abdo21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:15:44