|
En el lenguaje de POV-Ray, necesitas especificar cadenas de caracteres para usar como nombres de fichero, textos de los mensajes, o textos para un objeto de texto. Las cadenas se pueden especificar usando literales, identificadores o funciones que devuelvan valores de cadena. Mira la sección "Funciones de Cadenas" para más detalles. No puedes construir expresiones de cadenas con operadores simbólicos como los que se usan con valores de coma flotante, vectores o colores, pero puedes utilizar funciones de cadenas para realizar varias operaciones con ellas. Algunas aplicaciones de las cadenas en POV-Ray permiten incluir caracteres no imprimibles para dar formato, como fin de línea o retorno de carro
CADENA: FUNCION_DE_CADENAS | IDENTIFICADOR_DE_CADENA | LITERAL DE CADENA: "hasta 256 caracteres ASCII" FUNCION_DE_CADENA: str( COMA_FLOTANTE , ENTERO , ENTERO ) | concat( CADENA , CADENA, [CADENA ,...]) | chr( ENTERO ) | substr( CADENA , ENTERO , ENTERO ) | strupr( CADENA ) | strlwr( CADENA ) | vstr( ENTERO, VECTOR, CADENA, ENTERO, ENTERO )
Los literales de texto comienzan con dobles comillas, seguidas de
hasta 256 caracteres ASCII imprimibles, y terminan con otra comilla
doble. Puedes cambiar el juego de caracteres para cadenas usando la opción charset
en la sentencia global_settings
.
Los siguientes son literales de texto válidos:
"Aquí" "Allí" "imagen.gif" "textures.inc"
Observa que si necesitas especificar comillas en un literal de texto, debes precederlas con la contrabarra "\".
Por ejemplo:
"José dijo \"Hola\" al entrar."
se convierte en
José dijo "Hola" al entrar.
Si necesitas especificar la contrabarra "\", debes de especificar dos contrabarras. Por ejemplo:
"Esto es una contrabarra \\ y esto son dos \\\"
Se convierte en:
Esto es una contrabarra \ y esto son dos \\
Los usuarios de Windows deben estar especialmente atentos, ya que la contrabarra se usa también como separador de trayectoria. Por ejemplo, el siguiente código no produce el resultado esperado:
#declare DisplayFont = "c:\windows\fonts\lucon.ttf" text { ttf DisplayFont "Hello", 2,0 translate y*1.50 }
Los usuarios noveles pueden esperar que esto genere un objeto de texto usando la fuente "c:\windows\fonts\lucon.ttf". Sin embargo, generará un mensaje de error alegando que no puede encontrar el archivo de fuentes llamado "c:windowsfontslucon.ttf".
La forma correcta de conseguir lo deseado sería la siguiente:
#declare DisplayFont = "c:\\windows\\fonts\\lucon.ttf" text { ttf DisplayFont "Hello", 2,0 translate y*1.50 }
La sustitución de \"
por "
sucede en todos
los literales de texto en POV-Ray. Existen otros códigos de formato
como \n
para una nueva línea. Véase la sección "Formato de Textos" para más
detalles.
Los identificadores de cadenas de texto pueden usarse para hacer más legibles los archivos de escena, y para parametrizarlas con el fin de cambiar múltiples valores con un simple cambio en la declaración. Un identificador se declara de la siguiente forma:
DECLARACION_DE_CADENA: #declare IDENTIFICADOR = CADENA | #local IDENTIFICADOR = CADENA
Donde IDENTIFICADOR es el nombre del identificador de hasta 40 caracteres de longitud, y CADENA es cualquier especificación válida de cadena.
Nota: a diferencia de los valores de coma flotante, vectores o colores, aquí no necesitamos el punto y coma al final de la declaración. Véase "#declare frente a #local" para más información acerca del alcance de los identificadores.
He aquí algunos ejemplos:
#declare Nombre_de_la_fuente = "ariel.ttf" #declare Archivo_de_inclusion = "miarchivo.inc" #declare Nombre = "Juan" #declare Nombre = concat(Name," Pérez")
Como puedes ver en el último ejemplo, es lícito redeclarar un identificador de texto y usar el valor anteriormente declarado en la redeclaración.
POV-Ray posee una variedad de funciones incorporadas para manipular valores de coma flotante, vectores y cadenas. La llamada a la función consiste en un identificador que especifica el nombre de la función, seguido de una lista de parámetros entre paréntesis y separados por comas. Por ejemplo:
keyword(param1,param2)
Las siguientes son las funciones que devuelven valores de cadena.
Toman uno o más parámetros de coma flotante, enteros, vectores o
cadenas como entrada. Asumimos que A
es cualquier
expresión válida de coma flotante; B
, L
, y P
son valores de coma flotante truncados a entero internamente; y S
,S1
,S2
etc. son cadenas.
chr(B)
Carácter cuyo valor es B
. Devuelve
una cadena de un solo carácter. El valor del carácter se especifica
como un entero B
que debe de estar comprendido en el rango
de 0 a 65535 si has especificado el charset utf8
en global_settings
,
y de 0 a 127 si has especificado un charset ascii
. Mira
la documentación específica de tu plataforma si has especificado el charset
sys
. Por ejemplo, chr(70)
es la cadena "F". Cuando
trazamos objetos de texto, hay que tener en cuenta que los caracteres
trazados para valores mayores que 127 dependen de la fuente (TTF)
usada.
concat(S1,S2,...)
Concatena las cadenas S1
y S2
. Devuelve una cadena que es el resultado de
concatenar todas las cadenas pasadas como parámetros. Deben existir al
menos dos parámetros, pero pueden ser más. Por ejemplo:
concat("El valor es ", str(A,3,1), " centímetros")
Si el valor de coma flotante A
fuera 12.34321
,
el resultado sería la cadena "El valor es 12.3 centímetros"
.
str(A,L,P):
Convierte el valor de coma flotante A
en una cadena con formato que representa dicho valor. El parámetro
entero L
especifica la longitud mínima del la cadena y el
tipo de justificación a usar si la cadena resultante es menor que la
longitud mínima. Si L
es positivo, se rellenará con ceros
a la izquierda. Si L
es negativo, se rellenará con ceros.
El valor de la longitud mínima es abs(L). Si la cadena
necesitara mayor longitud, puede hacerse tan larga como sea necesario
para representar el valor.
El parámetro entero P
especifica el número de dígitos
después del punto decimal. Si P
es negativo, se usa la
precisión por defecto específica del compilador. Veamos algunos
ejemplos:
str(123.456, 0, 3) "123.456" str(123.456, 4, 3) "123.456" str(123.456, 9, 3) " 123.456" str(123.456,-9, 3) "00123.456" str(123.456, 0, 2) "123.46" str(123.456, 0, 0) "123" str(123.456, 5, 0) " 123" str(123.000, 7, 2) " 123.00" str(123.456, 0,-1) "123.456000" (específico de la plataforma)
strlwr(S)
Minúsculas de la cadena S
.
Devuelve una nueva cadena en la que todas la mayúsculas de la cadena S
se han convertido a minúsculas. La cadena original no se ve afectada.
Por ejemplo: strlwr("Hola a Todos")
da como resultado
"hola a todos".
substr(S,P,L)
Subcadena de S
. Devuelve
una cadena que es un subconjunto de los caracteres en el parámetro de
cadena S
, empezando en la posición especificada por el
valor entero P
y con la longitud indicada por el valor
entero L
. Por ejemplo substr("ABCDEFGHI",4,2)
devuelve la cadena "EF". Si P+L>strlen(S) se produce un
error.
strupr(S)
Mayúsculas de la cadena S
.
Devuelve una cadena nueva en la que todas las minúsculas en la cadena S
se han convertido a mayúsculas. La cadena original permanece intacta.
Por ejemplo: strupr("Hola a Todos")
se convierte en "HOLA
A TODOS".
vstr(N,A,S,L,P)
Convierte el vector A
en
una cadena con formato. Devuelve una cadena formateada para representar
el vector A
, donde los elementos del vector se separan
con la cadena pasada en el parámetro S
. El parámetro
entero N
especifica el número de dimensiones del vector A
,
que se forzará automáticamente dentro del rango 2-5 sin ningún aviso.
Si se especifica un vector A
con más dimensiones de las
indicadas por el parámetro N
, se producirá un error.
El parámetro entero L
especifica la longitud mínima de
la cadena y el tipo de relleno por la izquierda, cuando la cadena es
menor que el mínimo especificado. El parámetro entero P
especifica el número de dígitos tras el punto decimal. Si P
es negativo se usará la precisión por defecto del compilador. La función
de L
y P
es la misma que en str()
. Éstos son algunos ejemplos:
vstr(2, <1,2>, ", ", 0,1) "1.0, 2.0" vstr(5, <1,2,3,4,5>, ", ", 0,1) "1.0, 2.0, 3.0, 4.0, 5.0" vstr(1, 1, ", ", 0,1) "1.0, 1.0" vstr(2, 1, ", ", 0,1) "1.0, 1.0" vstr(5, 1, ", ", 0,1) "1.0, 1.0, 1.0, 1.0, 1.0" vstr(7, 1, ", ", 0,1) "1.0, 1.0, 1.0, 1.0, 1.0" vstr(3, <1,2>, ", ", 0,1) "1.0, 2.0, 0.0" vstr(5, <1,2,3>, ", ", 0,1) "1.0, 2.0, 3.0, 0.0, 0.0" vstr(3, <1,2,3,4>, ", ", 0,1) error
Mira la sección "Funciones de
Coma Flotante", donde encontrarás otras funciones relacionadas con
las cadenas pero que devuelven valores de coma flotante. Además de las
funciones incorporadas que hemos visto, puedes definir tus propias
operaciones de cadenas usando la nueva directiva #macro
. Mira la sección "Macros Definidas por el Usuario"
para más detalles.
|