El 3D está un poco fuera de mi profundidad. Si fuera 2D, elegiría las relaciones de aspecto de píxeles en la imagen girada de modo que la relación de las velocidades de muestreo sea aproximadamente igual a la velocidad a la que se cruzan las líneas de escaneo en la imagen original.
Estoy inventando esto a medida que avanzo, así que déjenme trabajar un ejemplo primero:
Supongamos que mis píxeles tienen 16 unidades de ancho y 1 unidad de alto. No importa cuánto gire, me gustaría que los píxeles resultantes tengan un área de aproximadamente 16 unidades al cuadrado. Si giro por , me gustaría que mis nuevos píxeles 1x16. Si giro , me gustaría que mis nuevos píxeles sean 4x4.π/2π/4
Entonces, de manera más general, dada una imagen inicial con un ancho horizontal de píxeles y una altura vertical de píxeles , y una rotación del ángulo .x0y00≤θ≤π/2
Mis nuevas líneas de escaneo horizontal van a intersecar las líneas de escaneo vertical de la imagen original a una velocidad de por unidad de longitud e intersectarán las líneas de escaneo horizontal de la imagen original a una velocidad de por unidad de longitud.1x0cosθ1y0sinθ
Del mismo modo, mis nuevas líneas de escaneo vertical van a intersecar las líneas de escaneo horizontales originales a una velocidad de y las líneas de escaneo vertical originales a una velocidad de .1y0cosθ1x0sinθ
Entonces, me gustaría que mi relación de aspecto sea
y mi nueva área de píxeles será
xθyθ=x0cosθ+y0sinθy0cosθ+x0sinθ
xθyθ=x0y0.
No tengo idea de cómo lidiar mejor con los errores de redondeo, ya que probablemente necesite que las relaciones de aspecto sean racionales y que las áreas de píxeles sean enteros. También tenga en cuenta que no he probado nada, solo encuentre algunas fórmulas para la relación de aspecto que coincidan con la intuición en , y .θ=0θ=π/2θ=π/4