标签: angle

夹紧角度任意范围

我需要一个函数将角度(以度为单位)限制在任意范围内[min,max]。这里有些例子: 角度范围示例

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

  • 在图像 #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;
}
Run Code Online (Sandbox Code Playgroud)

我缺少的是函数angle_in_range …

c++ angle range

5
推荐指数
1
解决办法
2495
查看次数

如何使用 start 和 endAngle 渲染 svg 圆

我使用 start 和 endAngle 渲染了 svg 圆。效果很好。但是当我渲染完整的圆(startAngle为70,endAngle为70)时,输出有很大的不同(0、90、180、270除外)。我为这段代码做错了什么?

            function getPathArc(center, start, end, radius) {
                end -= this.isCompleteAngle(start, end) ? 0.0001 : 0;
                var degree = end - start;
                degree = degree < 0 ? (degree + 360) : degree;
                return this.getCirclePath(
                    center, getLocationFromAngle(start, radius, center),
                    getLocationFromAngle(end, radius, center), radius, (degree < 180) ? 0 : 1
                );
            }

            function getCirclePath(center, start, end, radius, clockWise) {
                return 'M ' + start.x + ' ' + start.y + ' A ' + radius …
Run Code Online (Sandbox Code Playgroud)

javascript geometry svg path angle

5
推荐指数
2
解决办法
1521
查看次数

计算numpy中两个矩阵的行之间的角度

我有两个由 3d 向量(numpy 1D 数组)组成的矩阵,我需要按行计算向量之间的角度,并以 1d 数组返回结果。我知道如何计算两个一维向量之间的角度。执行此操作的正确方法是什么?

*** 所得角度以度数而非弧度为单位。

现在我有这个:

import numpy as np

A = np.array([[1,0,0],
              [0,1,0],
              [0,0,1]])

B = np.array([[1,0,1],
              [1,1,0],
              [0,1,0]])

def angle(V1,V2):
    """
    angle between vectors V1 and V2 in degrees using
    angle = arccos ( V1 dot V2 / norm(V1) * norm(V2) ) *180/np.pi
    """

    cos_of_angle = V1.dot(V2) / (np.linalg.norm(V1) * np.linalg.norm(V2)) 
    return np.arccos(np.clip(cos_of_angle,-1,1))  * 180/np.pi
Run Code Online (Sandbox Code Playgroud)

请注意从 rad 到 deg 转换的缩放项 180/np.pi。

我想要一个数组:

C = [ angle(A[0],B[0]) , angle(A[1],B[1])...... and so on]
Run Code Online (Sandbox Code Playgroud)

如果有人可以提供帮助,我真的很感激。

python numpy vector angle matrix

5
推荐指数
1
解决办法
3651
查看次数

计算两个角度间隔的重叠

假设我有两个间隔,

[a1, a2] and [b1, b2]
Run Code Online (Sandbox Code Playgroud)

哪里a1,a2,b1,b2都在范围之内[0, 2 pi]。现在,给定这两个区间,我想找到它们的重叠区间。这是相当棘手的。由于两个区间的示例是

[5, 1] and [0, 6]
Run Code Online (Sandbox Code Playgroud)

如下所示(红色区域是间隔)。

在此输入图像描述

请注意,这两个间隔返回一个由两个间隔组成的重叠间隔:

[0,1] and [5,6]
Run Code Online (Sandbox Code Playgroud)

有多种不同的情况必须处理,是否有任何已知的算法可以做到这一点?

angle intervals

5
推荐指数
1
解决办法
1168
查看次数

C#中的小行星游戏运动

我正在尝试制作游戏小行星.我现在的问题是,如果按下向上箭头键,它会将"船"向上移动10个像素.如果你按下LEFT箭头键,它会将"船"向左转5度,当你向左转或向右转时我就会发挥作用.然后尝试向上移动.它不会进入转向的方向.它只会将转向的"船"向Y方向移动10度.

What I am thinking of doing is having a variable called direction, think of this variable as a circle with 360 degrees. What I am trying to do is everytime I hit the Left Arrow, it will subtract 5 from direction, which started at 0 and goes backwards from 360 and thus set it to 355. I would then divide 355 by 10 and get 35.5. Then I would divide 10 by 35.5 and get .355. I would then …

c# angle game-physics bresenham

4
推荐指数
1
解决办法
2788
查看次数

是否可以在网页中以一定角度显示文本?

我想知道是否有可能以一定的角度在网页中创建文本,例如40度.如果有可能,我该怎么做?

编辑:最后,我决定采用Mathias Bynens的答案.

html css text angle

4
推荐指数
2
解决办法
1万
查看次数

从四元数到欧拉角以及反向的错误转换

我正在将角度轴表示形式转换为欧拉角。我决定检查并确保从转换中得到的欧拉角会回到原始的轴角。我打印出值,但它们不匹配!我已经阅读了http://forum.onlineconversion.com/showthread.php?t=5408http://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles以及本网站上的类似转换问题。

在下面的代码中,我从角度“ angle”和轴(rx,ry,rz)开始,然后将其转换为四元数(q0,q1,q2,q3)。我将四元数转换为欧拉角(滚动,俯仰,偏航)。然后要检查它,我将(roll,pitch,yaw)转换为cAngle和(cRx,cRy,cRz)的轴角。然后,我对(滚动,俯仰,偏航)进行一些边界检查,以将数字保持在-pi和pi之间,然后将它们打印出来。应该是cAngle = angle和(cRx,cRy,cRz)=(rx,ry,rz),但这两个都是错误的。

我相信旋转是常见的Z * Y * X顺序。我的数学有问题吗?我打算最终在俯仰为0或PI时添加特殊情况,如http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/,但现在我认为问题是独立的。

        //input is angle 'angle' and axis '(rx,ry,rz)'

        //convert rx,ry,rz, angle, into roll, pitch, yaw
        double q0 = Math.Cos(angle / 2);
        double q1 = Math.Sin(angle / 2) *Math.Cos(rx);
        double q2 = Math.Sin(angle / 2) * Math.Cos(ry);
        double q3 = Math.Sin(angle / 2) * Math.Cos(rz);
        double roll = Math.Atan2(2 * (q0 * q1 + q2 * q3), 1 - 2 * (q1 * q1 + q2 …
Run Code Online (Sandbox Code Playgroud)

math angle rotation quaternions

4
推荐指数
1
解决办法
6099
查看次数

计算随机反弹角度

我想每次撞到墙壁时都会改变球的弹跳角度.

它将根据它击中墙壁中间的距离而发生变化......

现在,当我遇到表面时,我很难对X和Y的变化进行编码......我的目标是从当前的X和Y获得度数,对度数应用一个变化(现在我随机添加一个数字到度),然后计算X和Y的新增量值.我知道如何获得newX和newY,但不知道如何获得增量值.

绿色是开始x y(5,5)......蓝色是下一帧(4,4).

在此输入图像描述

  • 所以我计算了45基于此的度数.
  • 然后在度数中添加一个随机数.
  • 然后,我想得到新的x和y坐标.所以我按照这种方法 ......

currX(5) - wallX(0)= distX(5)

currY(5) - wallY(0)= distY(5)

取我的角度的余弦+随机增量,我们会说55度,*distX

cos(55 degrees) = .5735... .5735 x distX (5) = 2.86

和我的角度的罪恶*distiy

sin(55 degrees) = .8191... .8191 x distY (5) = 4.09

newX = cos result (2.86) + originX (5) = 7.86

newY = sin result (4.09) + originY (5) = 9.09

newX, newY = (7.86, …

javascript angle

4
推荐指数
1
解决办法
2293
查看次数

在Python中设置乌龟的角度

我正在创建一个能让长颈鹿沿某个方向和距离移动的功能(不要问).

如果用户在参数中键入"west",则乌龟应向西移动但方向为.但是乌龟的角度每次都在变化,我无法确定我的乌龟转向某个方向的价值.

我需要将角度设置为90,以便它可以向东移动.我找不到用于此目的的有用功能.我尝试使用Pen().degrees(90)但是没有用.有谁知道我怎么做到这一点?

python angle turtle-graphics

4
推荐指数
1
解决办法
9804
查看次数

MATLAB 3D图中的透视控制

如何在MATLAB 3D图形的透视图中更改消失点(P1,P2,P3)?下面是一个解释我的意思的方案:

在此输入图像描述

在此先感谢您的帮助.

matlab projection angle computational-geometry matlab-figure

4
推荐指数
1
解决办法
740
查看次数