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

C#中如何缩放由4个Vector3顶点组成的矩形(扩大0.5单位)

解决矩形顶点固定偏移扩大的问题

嘿,你的问题很典型——依赖坐标系象限的偏移逻辑确实会在顶点落在坐标轴上时失效,而且只适用于中心在原点的矩形。这里有个不依赖位置的通用方法,能让你给矩形每个顶点向外固定偏移0.5单位,完美解决你的需求:

核心思路

要实现固定距离的“扩大”,关键是找到矩形的中心,然后让每个顶点沿着从中心指向自身的方向向外移动指定距离。这样不管矩形在坐标系的哪个位置,哪怕顶点在坐标轴上,都能均匀扩大,不会出现遗漏或错误偏移。

具体实现代码

// 先计算矩形的中心坐标
Vector3 center = Vector3.zero;
foreach (Vector3 element in list)
{
    center += element;
}
center /= list.Count; // 这里list是4个顶点,也可以直接写除以4

List<Vector3> list2 = new List<Vector3>();
float expandDistance = 0.5f;

foreach (Vector3 element in list)
{
    // 计算从中心指向当前顶点的方向向量
    Vector3 direction = element - center;
    
    // 避免极端情况(比如所有点重合),做个小阈值判断
    if (direction.magnitude > 0.0001f)
    {
        // 归一化方向向量,确保移动的是固定距离
        Vector3 unitDirection = direction.normalized;
        // 计算新顶点:原顶点 + 方向*偏移距离,y轴保持0(和你原代码逻辑一致)
        Vector3 newVertex = new Vector3(
            element.x + unitDirection.x * expandDistance,
            0,
            element.z + unitDirection.z * expandDistance
        );
        list2.Add(newVertex);
    }
    else
    {
        // 极端情况:顶点和中心重合,直接添加原顶点
        list2.Add(element);
    }
}

为什么这个方法更可靠

  • 不依赖坐标系位置:不管矩形在世界的哪个角落,中心计算都是基于自身顶点,偏移逻辑完全自包含
  • 覆盖所有顶点情况:哪怕顶点x或z为0,只要它是矩形的顶点,就能正确计算方向并偏移
  • 保持矩形形状:偏移后依然是和原矩形平行的矩形,不会变形

如果你的矩形y轴不需要固定为0,只需要把代码里的0改成element.y即可,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:43:10