Я работаю над проектом с трехмерными объектами и манипулирую ими через свою программу.В настоящее время у меня есть текстовое поле, которое позволяет мне указывать курс в градусах, и кнопка, которая вычисляет необходимые значения, чтобы мой основной объект изменил свой заголовок.Вот код этой функции:
private void btnSetHeading_Click(object sender, EventArgs e)
{
if (this.textBoxHeading.Text.Length == 0)
return;
float heading = (float)0;
try
{
heading = float.Parse(this.textBoxHeading.Text);
}
catch (FormatException ex)
{
MessageBox.Show(ex.Message);
return;
}
if (heading < (float)0 || heading > (float)360)
{
MessageBox.Show("Invalid heading parameter. Acceptable range: 0 - 360");
return;
}
float tempCosine = (float)Math.Cos(((heading * Math.PI) / (float)360.0));
float tempSine = -((float)Math.Sin(((heading * Math.PI) / (float)360.0)));
try
{
ProgramInterop.CreateInstance.SetHeading(tempCosine, tempSine);
}
catch (Exception ex)
{
MessageBox.Show("Caught: " + ex.Message);
}
}
Если в качестве заголовка указать 90, я получу следующие результаты: tempCosine = 0.7071068 и tempSine = -0.7071068, из-за чего мой основной объект будет повернут на 90 градусов или болеевосток.
Программа требует указывать заголовок в двух отдельных значениях (tempCosine и tempSine), которые я недостаточно знаком с геометрией, чтобы понять, почему я умножил бы на 360 вместо 180, но это то, как еготребуется для работы.
Теперь для следующей части моего проекта необходимо, чтобы мой главный объект был обращен к другому объекту, учитывая обе их (x, y) координаты.Например, если мой основной объект находится в точке (9112.94, 22088.74), а новый объект, в котором я хочу встретиться, находится в точке (9127.04, 22088.88), то для его ориентации потребуется почти ровно 90 градусов.
Как я могу рассчитать tempCosine и tempSine из этих двух координат?