Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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# 计算x&;从圆的中心点开始的y位置_C#_Unity3d - Fatal编程技术网

C# 计算x&;从圆的中心点开始的y位置

C# 计算x&;从圆的中心点开始的y位置,c#,unity3d,C#,Unity3d,我知道以前有人问过这个问题,我查阅了很多帖子,我意识到我的数学不够好,无法解决这个问题 我有一个圆,它是x=0.0&y=0.0的中心点。在本例中,基于度数270,我希望将x盒放置在x&y上距离中心点的指定度数处。我就是不能把它弄对,即使是用我找到的例子也不行。下面是当前代码I测试以及270度测试的结果,x-box位置错误,因为它不是270度角 我将感谢任何帮助 使用系统; 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 使用Unity

我知道以前有人问过这个问题,我查阅了很多帖子,我意识到我的数学不够好,无法解决这个问题

我有一个圆,它是x=0.0&y=0.0的中心点。在本例中,基于度数270,我希望将x盒放置在x&y上距离中心点的指定度数处。我就是不能把它弄对,即使是用我找到的例子也不行。下面是当前代码I测试以及270度测试的结果,x-box位置错误,因为它不是270度角

我将感谢任何帮助

使用系统;
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共类testscript:MonoBehavior
{
公众形象im1、im2;
公共文本im1text、im2text、deg;
私有浮动度=270f;
私有浮动x,y;
void Start()
{
im1.rectTransform.anchoredPosition=新向量2(0f,0f);
im1text.text=im1.rectTransform.anchoredPosition.ToString();
度文本=度+度;
x=0f+(100*Mathf.Cos(度*Mathf.PI/360f));
y=0f+(100*Mathf.Sin(度*Mathf.PI/360f));

im2.rectTransform.anchoredPosition=新向量2(x,y);
im2text.text=im2.rectTransform.anchoredPosition.ToString(); } } 我已经测试了下面的两个建议,基本上得到了与所有其他建议相同的结果。让我想象一下上次测试的结果: 恒浮度至弧度=2f*Mathf.PI/360f; var弧度=度*度到弧度; x=0+数学余弦(弧度)*100; y=0+Mathf.Sin(弧度)*100; 结果如下: [![在此处输入图像描述][2][2] 解决方案是,正反两个方向互换。谢谢J.Lengel: 浮点数x=1f+(100*Mathf.Sin(angelDegree*Mathf.PI/180));
浮点y=-14f+(100*Mathf.Cos(angelDegree*Mathf.PI/180))在Math.cos和Math.sin中,通过除以360将度转换为弧度。这将不起作用,因为360度相当于2pi(弧度),而不是pi。这意味着你必须除以180,或者乘以2。希望有帮助

我注意到你用余弦表示x,sin表示y。交换这个;你想按顺时针方向走,而你的做法是逆时针方向走

x = x_origin + Math.sin(angle) * radius;
y = y_origin + Math.cos(angle) * radius;
一个完整的圆(360度)是2*PI弧度:

x = 0f + (100 * Mathf.Cos(degree * 2 * Mathf.PI / 360f));
y = 0f + (100 * Mathf.Sin(degree * 2 * Mathf.PI / 360f));

试图将此添加到原始帖子中,但无法完成,因此我在此处发布

我已经测试了上面的内容,并且得到了与之前大多数测试相同的结果。它似乎可以在45度和225度之间工作,但不能在90度、180度和270度之间工作

可能是我的数学能力不及格,我想这是一个很容易解决的问题

我做的最后一个测试,用表示为。图片是:

const float deg_to_rad = 2f * Mathf.PI / 360f;
var radians = degree * deg_to_rad;
x = 0 + Mathf.Cos(radians) * 100;
y = 0 + Mathf.Sin(radians) * 100;
im2.rectTransform.anchoredPosition = new Vector2(x, y); 
以下是我使用上述代码进行测试的最新结果:


您的示例是否根据您的代码显示了框的位置或框的放置位置?这是当前在我的代码中使用270度时放置x框的代码,错误点。im2.rectTransform.anchoredPosition=新矢量2(x,y);>>为了移动由@J.Lengel解决的x盒(文本)绝对愚蠢的错误,我交换了正反两个字母,这导致了问题。
const float deg_to_rad = 2f * Mathf.PI / 360f;
var radians = degree * deg_to_rad;
x = 0 + Mathf.Cos(radians) * 100;
y = 0 + Mathf.Sin(radians) * 100;
im2.rectTransform.anchoredPosition = new Vector2(x, y);