2015-10-12 10 views
1

Я искал сеть в течение нескольких часов, чтобы преобразовать координату z-оси в угол. У меня уже есть x, y для угла, и теперь для его завершения мне нужно z. Вот код для х, у:Как преобразовать координату z в угол в C#?

 private float XYToDegrees(Point xy, Point origin) 
    { 
     int deltaX = origin.X - xy.X; 
     int deltaY = origin.Y - xy.Y; 

     double radAngle = Math.Atan2(deltaY, deltaX); 
     double degreeAngle = radAngle * 180.0/Math.PI; 

     return (float)(180.0 - degreeAngle); 
    } 

и этот код для запуска функции:

XYToDegrees(new Point(2334, -447), new Point(2433, -659)) - 270; 

Цель апликатов для угла, чтобы угол камеры в соответствии с объект, на который я смотрю.

Я очень благодарен за помощь. Благодаря!

+0

вы знаете математическую функцию для преобразования г в координаты, кроме декартовой? Вы знаете, хотите ли вы пойти на полярную или цилиндрическую? –

+0

Большинство 3d-движков и сред имеют функцию 'camera.LookAt (obj)'. Если у вас есть один, вы можете найти алгоритм для метода LookAt и реализовать его. Не заново создавайте ось. – SimpleVar

ответ

0

Это очень simmilar, просто еще один треугольник

private float XYZToDegrees(double deltaX, double deltaY, double deltaZ) 
{ 
    double deltaXY = Math.Sqrt(deltaY * deltaY + deltaX * deltaX); 
    double radAngle = Math.Atan2(deltaZ, deltaXY); 
    double degreeAngle = radAngle * 180.0/Math.PI; 

    return (float)degreeAngle; 
} 
+0

Спасибо вам большое! похоже, сейчас работает. –