Aritmética
Aritmética
Descripción general
Se utiliza para realizar operaciones matemáticas comunes en dos o más nodos de parámetros, útil para crear objetos parametrizados complejos utilizando nodos de parámetros conectados a múltiples entradas.
Uso
- Adjunte 2 o más nodos de parámetros a las ranuras de entrada del nodo Aritmético
- Seleccione el tipo de ecuación de la lista desplegable
- Exponga la propiedad del nodo de destino haciendo clic derecho, seleccione exportar y elija el valor que desea parametrizar.
- Conecte la salida aritmética a esta nueva ranura.
Interfaz
Varias operaciones están disponibles.:
Agregar. devuelve la suma de una operación de suma
Sustraer. devuelve la diferencia de una operación de resta
Multiplicar. devuelve el producto de una operación de multiplicación
Dividir. devuelve el cociente de una operación de división
Máximo. devuelve el mayor de los valores de entrada
Mínimo. devuelve el más pequeño de los valores de entrada
Expresión . Cree ecuaciones utilizando funciones y variables comunes.
Editor de expresiones
Para agregar una expresión, seleccione Operación>Expresión y presione Editar expresión para abrir el Editor de expresiones
Para crear relaciones paramétricas complejas, el Editor de expresiones utiliza una sintaxis matemática sencilla que comprende operadores +, -, *, /
, etc. constantes (pi, e, etc.), variables integradas de RailClone, entradas numéricas y funciones (incluidas funciones estándar, trigonométricas, vectoriales, de redondeo y condicionales que toman uno o más argumentos y devuelven un resultado). Para saber qué funciones integradas, operadores y constantes están disponibles, se incluye una lista completa en la Panel de expresiones en el lado izquierdo de la ventana. Para ver una explicación de cada función, haga clic una vez en ella y se mostrará una descripción y un ejemplo de sintaxis en la ventana. Panel de ayuda de expresiones en la parte inferior de la interfaz.
Interfaz
Panel de expresiones. que se encuentra a la izquierda, enumera todas las variables y funciones utilizables. Haga doble clic en un elemento de la lista para agregarlo a la ventana de edición o haga un solo clic para mostrar la ayuda.
Editar ventana. Se utiliza para crear y editar la expresión. Para ver los efectos de una expresión, presione Actualizar. Para construir una variable, puede escribirla manualmente o agregar variables y funciones haciendo doble clic en ellas desde la lista de expresiones.
Ayuda de expresiones. esta ventana proporciona información sobre la variable o función actualmente seleccionada.
RailClone 3 incluyó un nuevo motor de expresiones. Tenga en cuenta que hay un par de cambios clave que debe recordar.
-
La nueva versión usa un doble == para pruebas condicionales
-
La forma en que escribes los números ahora es importante, por ejemplo en RailClone 3:
1 = un número entero
1,0 = un flotador
This means that in RailClone 3 the expressions:
return 1/2;
Will result in 0, because both values are integers.
To return a float value you would use:
Return 1.0/2.0; -
Para enviar un valor a la salida del nodo aritmético debes agregar un devolver comando, por ejemplo:
return degToRad(90);
Usar expresiones para controlar las propiedades de transformación de un segmento
Cuando se utilizan expresiones para controlar las propiedades de transformación de un segmento, es necesario utilizar un Transformar operador. El flujo de trabajo actual no le permitirá conectar una expresión directamente a un nodo de segmento. RailClone detectará una conexión incompatible y mostrará una advertencia.
Sintaxis de expresiones
Las expresiones utilizan una sintaxis matemática sencilla que comprende operadores +, -, *, /
, etc. matemático Funciones que toman uno o más argumentos y devuelven un resultado, las variables integradas de RC (que hemos llamado Atributos para mayor claridad), declarable por el usuario variables, y entradas personalizables. Hay muchas funciones integradas y atributos ya disponibles y todos están documentados en el Lista de comandos en el lado izquierdo del Editor de expresiones. Para ver una explicación de cada entrada, haga clic una vez en ella y se mostrará una descripción y un ejemplo de sintaxis en el panel de Ayuda en la parte inferior de la interfaz. Las reglas generales de sintaxis se describen a continuación.
Retorno
Para enviar un valor a la salida del nodo, utilice el comando de retorno. Por ejemplo return degToRad(90);
Sólo se puede utilizar un comando de retorno en una expresión.
Funciones
Las funciones proporcionan comandos prediseñados que se pueden utilizar para realizar expresiones matemáticas comunes. Para utilizar una función, utilice el nombre seguido de los argumentos necesarios entre paréntesis. Por ejemplo, para convertir 90 grados a radianes se utiliza la función degToRad de la siguiente manera:
degToRad(90)
Cuando una función requiere varios argumentos, estos deben separarse mediante comas. Por ejemplo, para generar un número entero aleatorio entre 0 y 350, usaría la función randomInt como se muestra a continuación:
randomInt(0,359)
Las funciones también se pueden anidar incluyéndolas como argumentos, por ejemplo:
degToRad(randomInt(0,359))
Puede encontrar una lista completa de funciones admitidas, incluida información sobre los argumentos que requieren aquí .
Atributos
Los atributos son variables predefinidas de RailClone. La sintaxis de puntos se utiliza para acceder a los valores de un atributo. Esto significa que cuando se utiliza un atributo, la declaración siempre debe comenzar con una referencia a algún objeto, seguida de un punto (.
o punto) y luego el nombre de la propiedad a la que desea acceder. Cada punto representa un paso desde un acceso más general al objeto a niveles más específicos de detalle de parámetros. Por ejemplo XSplineCoords
se refiere a un valor vectorial. Continuando hacia abajo en la jerarquía, XSplineCoords.Z
se refiere únicamente al eje Z.
Tenga en cuenta que los atributos de la lista de comandos no se pueden editar mediante expresiones.
marcadores
Introducido en RailClone 4, el RC Spline Modifier le permite aplicar marcadores a una spline que contiene un canal de identificación y 9 canales de datos. Para acceder a estos en expresiones, utilizaría lo siguiente.
Para acceder al canal ID para marcadores en la spline X o Y, utilice
XMarkerID
YMarkerID
Para acceder al canal de datos asignado por marcadores en la spline X o Y, utilice
XMarkerData[#]
YMarkerData[#]
donde # puede ser de 0 a 9 para acceder a los 9 canales de datos disponibles en cada marcador.
Variables
Además de los atributos integrados, se pueden crear y editar variables en el script de expresión. Se declaran como uno de tres tipos, ya sea real para valores flotantes o unidades de escena, En t para números enteros, o vectores . No distinguen entre mayúsculas y minúsculas, pero existen algunas restricciones a la hora de nombrar:
- No puede ser el mismo que un atributo, función, variable o parámetro existente.
- Sólo debe constar de símbolos alfanuméricos y guiones bajos (
_
). - No se puede empezar con un número.
- No puede contener espacios.
- Las variables son locales para el objeto RailClone, esto significa que puedes usar el mismo nombre de variable en diferentes objetos sin problemas.
A continuación se muestran ejemplos que ilustran cómo crear cada uno de los tres tipos de variables, así como algunas formas aceptables de construir nombres de variables según las reglas descritas anteriormente.
int objectCount = 4;
real object_rotate_z = 10.5;
vector objectPosition1 = [10,10,0]
También puedes crear variables sin asignar un valor de la siguiente manera:
int objectCount;
real object_rotate_z;
vector objectPosition1;
Una vez que se ha declarado una variable, asigna un nuevo valor usando igual (=). Por ejemplo
objectCount = 5;
object_rotate_z = 22.5;
objectPosition1 =[20,20,20];
Los tipos de variables no se pueden cambiar una vez creados y, aunque puede asignar un valor entero a una variable real, no puede asignar un valor real a un número entero. En este caso necesitarás usar las funciones de redondeo ceil(), floor(), trunc() o round() para convertir el valor real a un número entero, por ejemplo:
int integer;
real float = 12.3;
integer = floor(float);
print integer;
Si evalúa este código, se mostrará 12 en la ventana de salida. Esto se debe a que la función suelo redondea 12,3 al número entero adyacente más bajo que luego se puede asignar a la variable entera sin errores.
Entradas
Las entradas son un tipo especial de variable cuyos valores se asignan en un nodo numérico o constante adjunto, lo que permite al usuario controlar los efectos sin necesidad de comprender el código. Una entrada recibe el nombre del orden en que se adjunta al nodo, Entrada1 en la primera ranura, Entrada2 en la segunda y así sucesivamente.
Operadores
Los operadores que se describen a continuación se pueden utilizar para manipular datos.
Operadores Matemáticos
Se admiten los siguientes operadores aritméticos:
Operador | Uso de ejemplo | Descripción |
---|---|---|
+ | p+q | Adición |
- | p-q | Sustracción |
- | -p | Devuelve el negativo del valor de una variable |
* | p*q | Multiplicación |
/ | p/q | División |
^ | p^q | Energía |
Operadores vectoriales
Cuando se utilizan vectores se aplican los siguientes operadores:
Operador | Sintaxis | Uso de ejemplo | Descripción |
---|---|---|---|
x | V.x | XSplineCoords.x | Devuelve el primer componente de un vector |
y | V.y | XSplineCoords.y | Devuelve el segundo componente de un vector |
z | V.x | XSplineCoords.z | Devuelve el tercer componente de un vector |
+ | V+W | XSplineCoords + YSplineCoords | Adición |
- | V-W | XSplineCoords - YSplineCoords | Sustracción |
* | V*W | XSplineCoords * YSplineCoords | Producto escalar |
* | V*p | XSplineCoords * 5 | Multiplicación escalar |
/ | V/p | XSplineCoords / 2 | División escalar |
^ | V^W | XSplineCoords ^ YSplineCoords | Producto cruzado |
Operadores comparativos
RailClone incluye una función If que le permite crear reglas condicionales. Esta función utiliza la siguiente sintaxis:
if(p,q,r)
Donde p es una prueba lógica que devuelve q si devuelve verdadero o r si devuelve falso.
Para crear las pruebas condicionales para una función SI, utiliza los siguientes operadores:
Operador | Uso de ejemplo | Descripción |
---|---|---|
== | p==q | Devuelve verdadero si p es igual a . |
< | p<q | Devuelve verdadero si p es menos que . |
> | p>q | Devuelve verdadero si p es mas grande que . |
>= | p>=q | Devuelve verdadero si p es mayor que o igual no q |
<= | p>=q | Devuelve verdadero si p es menor o igual a q |
| | p|q | Devuelve verdadero si p o son verdaderas |
& | p&q | Devuelve verdadero si p y son verdaderas |
Separación de instrucciones
Cada comando debe terminar con un punto y coma ( ; ).
Comentarios
Los comentarios se agregan comenzando la línea con un símbolo #. Todo lo que esté después del # en la misma línea se ignorará:
# este es un comentario
# este es otro comentario
Tenga en cuenta que no es necesario que las líneas de comentarios terminen con un punto y coma, aunque no afectará nada si lo hace.
Depuración
Para ayudar a depurar los efectos, proporcionamos un comando de impresión que muestra los resultados de una expresión o el contenido de una variable, parámetro o atributo en la ventana Salida. Por ejemplo, la siguiente expresión imprimirá 5.0 en la ventana de salida.
real exampleVariable = 5.0;
print exampleVariable;
Debido a que a menudo se crean scripts diseñados para manipular los valores de miles de elementos dispersos, no es posible, ni deseable, ver los resultados de cada instancia. Por lo tanto, el comando de impresión muestra valores solo para el primer objeto disperso
Sensibilidad a mayúsculas y minúsculas
Funciones, variables, propiedades y atributos son no distingue mayúsculas y minúsculas.