Hola, estoy usando este código C# para rotar polígonos en mi aplicación; rotan pero también se tuercen en el camino, que no es lo que quiero que ocurra. Todos los polígonos son rectángulos con cuatro esquinas definidas como vectores 2D,¿Cómo hacer la rotación correcta del polígono? (en C# aunque se aplica a cualquier cosa)
public Polygon GetRotated(float radians)
{
Vector origin = this.Center;
Polygon ret = new Polygon();
for (int i = 0; i < points.Count; i++)
{
ret.Points.Add(RotatePoint(points[i], origin, radians));
}
return ret;
}
public Vector RotatePoint(Vector point, Vector origin, float angle)
{
Vector ret = new Vector();
ret.X = (float)(origin.X + ((point.X - origin.X) * Math.Cos((float)angle)) - ((point.Y - origin.Y) * Math.Sin((float)angle)));
ret.Y = (float)(origin.Y + ((point.X - origin.X) * Math.Sin((float)angle)) - ((point.Y - origin.Y) * Math.Cos((float)angle)));
return ret;
}
Se ve bien para mí, en una rápida lectura. ¿Qué tipo de sesgo estás viendo? ¿Y hay alguna razón por la que estás usando 'float' en lugar de' double'? –
Dysaster lo tenía, simplemente agregando el término y en lugar de restarlo lo solucionó. gracias a jonskeet también por el código mucho mejor :) – bharling