Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Objective-C中获得-1和1之间的点积_C#_.net_Objective C_Cgpoint_Dot Product - Fatal编程技术网

C# 如何在Objective-C中获得-1和1之间的点积

C# 如何在Objective-C中获得-1和1之间的点积,c#,.net,objective-c,cgpoint,dot-product,C#,.net,Objective C,Cgpoint,Dot Product,在C#中,我有以下代码: Vector2.Dot(ref tmpDirection, ref direction, out result); 这将返回一个介于-1和1之间的浮点值。我很好奇如何在Objective-C中获得相同的功能。我知道你可以计算两个向量的点积,如下所示: CGPoint point1 = CGPointMake(10, 10); CGPoint point2 = CGPointMake(20, 20); float dotProduct = point1.x * poin

在C#中,我有以下代码:

Vector2.Dot(ref tmpDirection, ref direction, out result);
这将返回一个介于-1和1之间的浮点值。我很好奇如何在Objective-C中获得相同的功能。我知道你可以计算两个向量的点积,如下所示:

CGPoint point1 = CGPointMake(10, 10);
CGPoint point2 = CGPointMake(20, 20);
float dotProduct = point1.x * point2.x + point1.y + point2.y;

我不明白的是,C函数如何使结果介于-1和1之间,因为正常的点积数学可以得到任何数字。

要从[-1,1]得到归一化结果,需要做的就是除以量级的乘积:

float mag1 = sqrt(point1.x*point1.x + point1.y*point1.y);
float mag2 = sqrt(point2.x*point2.x + point2.y*point2.y);
dotProduct = (dotProduct)/(mag1*mag2);

要从[-1,1]得到归一化值,只需除以震级的乘积:

float mag1 = sqrt(point1.x*point1.x + point1.y*point1.y);
float mag2 = sqrt(point2.x*point2.x + point2.y*point2.y);
dotProduct = (dotProduct)/(mag1*mag2);

这仅适用于单位向量,来自:

Vector2.Dot方法:

计算两个向量的点积如果两个向量为单位 向量,点积返回一个介于-1和-1之间的浮点值 1,可用于确定之间角度的某些属性 两个向量。例如,它可以显示向量是否为 正交的,平行的,或两者之间有锐角或钝角的


如果您想模拟它,您需要使用点的大小的乘积来规范化点积。这是一个很好的实现方法。

这仅适用于单位向量,来自:

Vector2.Dot方法:

计算两个向量的点积如果两个向量为单位 向量,点积返回一个介于-1和-1之间的浮点值 1,可用于确定之间角度的某些属性 两个向量。例如,它可以显示向量是否为 正交的,平行的,或两者之间有锐角或钝角的


如果您想模拟它,您需要使用点的大小的乘积来规范化点积。这里有一个很好的实现方法。

您也可以使用hypotf(x,y)代替sqrt(xx,yy)。在某些平台上,这可以提高性能。谢谢,这正是我所需要的。我觉得我应该从工程微积分中记住这一点,但不幸的是没有。你也可以用hypotf(x,y)代替sqrt(xx,yy)。在某些平台上,这可以提高性能。谢谢,这正是我所需要的。我觉得我应该从工程微积分中记住这一点,但不幸的是没有。