5 votos

Traducir la fórmula de Excel para utilizarla en la calculadora de campo

Tengo una serie de ecuaciones para crear puntos de esquina para hacer polígonos girados basados en ángulos en la tabla de atributos, pero lo he creado en excel y no puedo averiguar la sintaxis para que funcione correctamente en la calculadora de campo. Tengo 8 fórmulas trigonométricas diferentes para crear coordenadas XY para los 4 puntos de esquina. Una de ellas es la siguiente:

=COS(ATAN(1500/2250)+RADIANS(MOD(360-([Angle]+270),360)))*(SQRT((1500^2)+(2250^2)))+[X]

Una vez que entienda la sintaxis de una, debería poder utilizarla para las otras 7 fórmulas, aunque varíen ligeramente.
¿Puede alguien aconsejar la mejor manera de utilizar esta fórmula en la calculadora de campo? Gracias.

Editar , después de recibir la respuesta de @Paul:

He descubierto la sintaxis correcta de algunos de los otros, pero dos de ellos todavía me dan problemas. Uno produce un resultado diferente al de Excel y otro dice que la sintaxis es incorrecta.

=COS(RADIANS(270)-ATAN(750/1500)+RADIANS(MOD(360-([A]+270),360)))*SQRT((1500^2)+(750^2))+[X]

=COS(-ATAN(1500/2250)+RADIANS(MOD(360-([A]+270),360)))*SQRT((1500^2)+(2250^2))+[X]

Creo que tiene que ver con los signos negativos y con que probablemente los puse en el lugar equivocado...

0 votos

Son Angle y X sus dos únicas variables?

0 votos

@Paul sí. Voy a tener que hacerlo para Y, también, pero eso será en un campo separado. todo lo demás es sólo el cálculo.

10voto

Örjan Jämte Puntos 3127

Todas las funciones trigonométricas que necesitas están en el matemáticas módulo. Supongo que querrá atan2() que es el equivalente a atan(y/x). Para la función mod, tendrás que utilizar el símbolo de porcentaje.

Cada función tiene también una versión simplificada (a) ya que se calculan algunas constantes. Son funciones idénticas pero serán más rápidas.

Parser:

Python

Código de bloque:

from math import cos, atan2, radians, sqrt
from math import cos, radians #Use this for simplified functions as others aren't needed.

def trigfunc1(angle, x):
    return cos(atan2(1500,2250) + radians((360-(angle+270))%360)) * sqrt(1500**2+2250**2) + x

def trigfunc1a(angle, x):
    return cos(0.5880026035475675 + radians((90-angle)%360)) * 2704.163456597992 + x

def trigfunc2(a, x):
    return cos(radians(270) - atan2(750,1500) + radians((360-(a+270)%360))) * sqrt(1500**2+750**2) + x

def trigfunc2a(a, x):
    return cos(4.2487413713838835 + radians((90-a)%360)) * 1677.0509831248423 + x

def trigfunc3(a, x):
    return cos(-atan2(1500,2250) + radians((360-(a+270)%360))) * sqrt((1500**2)+(2250**2)) + x

def trigfunc3a(a, x):
    return cos(-0.5880026035475675 + radians((90-a)%360)) * 2704.163456597992 + x

Expresión:

trigfunc1(!Angle!, !X!)
trigfunc2(!A!, !X!)
trigfunc3(!A!, !X!)

0 votos

¡Ah! ¡Perfecto! ¡Muchas gracias! Lo único es que la primera x en (x+270) en realidad tenía que ser ángulo, pero con ese cambio funciona perfectamente. Probablemente debería considerar aprender python un día de estos...

0 votos

@katzendoodle, sí, me acabo de dar cuenta. Arreglado, gracias. Si tienes problemas con las otras fórmulas, puedes editarlas en tu post y dejarme un comentario aquí.

0 votos

He colgado otras dos fórmulas porque me daban problemas... Sin embargo, tengo todas las demás. Gracias.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X