当前位置: 首页 > 知识库问答 >
问题:

夹紧角至任意范围

潘衡
2023-03-14

彩色区域表示有效的角度范围。

  • 在图像#1中,ang应固定为最大(-90)
  • 在图像#2中,ang应固定在min(135)
  • 在图像#3中,ang应被固定为min(135)

这是我目前所掌握的:

static float clamp_angle(float ang,float min,float max)
{
    ang = normalize_angle(ang); // normalize_angle transforms angle into [-180,180) range
    min = normalize_angle(min);
    max = normalize_angle(max);
    if(angle_in_range(ang,min,max) == false)
    {
        if(abs(get_angle_difference(ang,min)) < abs(get_angle_difference(ang,max))
            ang = min; // Clamp to min if we're closer to min than max
        else
            ang = max;
    }
    return ang;
}

共有1个答案

程树
2023-03-14

您可以将ang变为0,min和max映射为[-180;180),然后您可以检查angle是否在提供的范围内,如下所示:

float clamp_angle(const float ang, const float min, const float max)
{
    float n_min = normalize180(min-ang);
    float n_max = normalize180(max-ang);

    if (n_min <= 0 && n_max >= 0)
    {
        return ang;
    }
    if (abs(n_min) < abs(n_max))
        return min;
    return max;
}

在Coliru上直播

 类似资料:
  • 任意几何范围查询 几何范围查询,即在指定数据集集合中查找符合几何范围的矢量要素,并在客户端中展示出来。 以 World 数据服务为例。使用接口 ol.supermap.FeatureService 在 “World:Countries” 数据集中采用相交空间查询模式查询符合此几何范围的矢量要素。 var polygon = new ol.geom.Polygon([[[0, 0], [-10, 3

  • 本文向大家介绍Unity实现绕任意轴任意角度旋转向量,包括了Unity实现绕任意轴任意角度旋转向量的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Unity实现绕任意轴任意角度旋转向量的具体代码,供大家参考,具体内容如下 游戏中有一需求,就是一个矩形或者Cube绕着某一点旋转任意角度,现在给出下面算法。 测试用例 效果图   以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大

  • 本文向大家介绍java实现图片无损任意角度旋转,包括了java实现图片无损任意角度旋转的使用技巧和注意事项,需要的朋友参考一下 前言 在做项目的时候遇到一个业务需要对图片进行旋转,于是找到一个工具类,亲测有效;在此与大家共享,需要用时可以直接用哈! 实战 一、旋转工具类代码: 二、调用工具类的代码: 三、效果 1、被旋转的图片: 2、顺时针旋转90度图片: 3、顺时针旋转180度图片: 4、顺时针

  • 本文向大家介绍java桌球小游戏 小球任意角度碰撞,包括了java桌球小游戏 小球任意角度碰撞的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java桌球小游戏的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我试图将一个数钳制为一系列数的较低值。例如,如果我有一个系列(对不起,记法不好) 其中是任意整数,是任意正数。 假设q是50,我的系列将是-150, -100, -50, 0, 50, 100, 150 现在我想要的是有一个函数,它将把任何数字钳制到序列中下一个最低的数字。 例如,如果我有一个数字,我会期待,我会期待。 我尝试过许多涉及模和整数除法的算法,但我似乎弄不懂。我最近试过的例子就是 这对

  • 我需要将PDF页面的内容旋转任意角度,然后旋转PDF页面。setRotation(int)命令限制为90度的倍数。页面的内容是矢量和文本,我需要能够在以后放大内容,这意味着我无法将页面转换为图像,因为分辨率降低。