Foros ZackYFileS

Foros ZackYFileS (http://foros.zackyfiles.com/index.php)
-   PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc (http://foros.zackyfiles.com/forumdisplay.php?f=370)
-   -   Pregunta matemática de nota (http://foros.zackyfiles.com/showthread.php?t=585578)

TheDog6 27/09/2008 13:16

Pregunta matemática de nota
 
Hola, supongamos que tenemos un bitmap de windows. Lo rotamos z grados (no 90, 180 ó 270, así sería muy fácil). En el bitmap rotado, supongamos un pixel del bitmap, que lo forman las coordenadas horizontal y vertical, x-y. ¿A qué coordenadas corresponderá este pixel en el bitmap original? ¿Necesitamos trigonometría para calcularlo, que me temo que sí?

Coke-OFF 27/09/2008 19:29

habria que tener en cuenta varios factores...

1º centro de coordenadas
2º centro de rotacion
3º si ambos puntos coinciden o no
4º si no coinciden, donde se situa el centro de rotacion con respecto al de coordenadas.
5º distancia del centro de rotacion al pixel rotado, que en el caso de que coincidieran el centro de rotacion y coordenadas, no habria problema, se podria hallar.

x² + y² = d²

6º distancia del pixel rotado al original.

dpixel = raiz cuadrada de 2d² - 2d²Cos(angulo de rotacion)

7º angulo que forma el pixel rotado con la horizontal o eje x, en su caso...

a = arctan(y/x)

8º angulos que forman la recta(pixel rotado-pixel original) con las rectas (centro rotacion-pixel rotado) y (centro rotacion-pixel original)...como es isosceles, son iguales

b = (180 - angulo de rotacion)/2

9º angulo del triangulo rectangulo de hipotenusa recta(pixel rotado-pixel original)

c = b - (90 - a)

10º distancia en coordenadas del pixel rotado al original

x = dpixel * Sen c
y = dpixel * Cos c

Coke.

Coke-OFF 27/09/2008 20:18

o mas rapido, siempre y cuando centro de rotacion == centro de coordenadas

1º distancia del centro de rotacion al pixel rotado

d = raiz cuadrada de x² + y²

2º angulo pixel rotado - eje x...

a = arctan(y/x)

3º angulo pixel original - eje x

b = a - angulo rotacion

4º coordenadas pixel original

x = Cos b * d
y = Sen b * d

Coke.

TheDog6 28/09/2008 22:50

Muchas gracias, me pierdo bastante con todo eso, lo que parece claro es que dependerá del algoritmo de rotación que se emplee, comprendiendo perfectamente el algoritmo se podrá deducir la fórmula para averiguar esas coordenadas. La trigonometría la comprendí durante un curso y después la olvidé del todo. Un saludo.


La franja horaria es GMT +2. Ahora son las 04:54.

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
ZackYFileS - Foros de Debate