unity una rotar personaje objetos objeto mover linea figura con como c# math rotation angle

c# - una - rotar objeto con mouse unity



Girar un punto por otro punto en 2D (3)

Quiero saber cómo calcular las nuevas coordenadas para un punto cuando se gira en un ángulo relativo a otro punto.

Tengo una flecha de bloque y quiero rotarla con un ángulo theta relativo a un punto en el medio de la base de la flecha.

Esto es necesario para permitirme dibujar un polígono entre 2 controles en pantalla. No puedo usar y rotar una imagen.

De lo que he considerado hasta ahora lo que complica aún más el asunto es que el origen de una pantalla está en la esquina superior izquierda.


Si está utilizando GDI + para hacer eso, puede usar los métodos de Transform del objeto Graphics :

graphics.TranslateTransform(point of origin); graphics.RotateTransform(rotation angle);

Luego dibuja las cosas reales.


Si tiene el espacio de nombres System.Windows.Media disponible, puede usar las transformaciones integradas:

using System.Windows.Media; var transform = new RotateTransform() {Angle = angleInDegrees, CenterX = center.X, CenterY = center.Y}; var transformedPoint = transform.Transform(point);


Si gira el punto (px, py) alrededor del punto (ox, oy) por el ángulo theta obtendrá:

p''x = cos(theta) * (px-ox) - sin(theta) * (py-oy) + ox p''y = sin(theta) * (px-ox) + cos(theta) * (py-oy) + oy