|
Isect(Pt, Dir, Obj, OPt)
e IsectN(Pt, Dir, Obj,
OPt, ONorm)
Estas macros son interfaces de la función trace(). Isect() sólo
devuelve el punto de intersección, IsectN() además, devuelve la
normal a la superficie. Estas macros devuelven la información del
punto y la normal mediante sus parámetros, y verdadero o falso
dependiendo de si se halló una intersección:
Si se halla una intersección, devuelven verdadero y colocan en OPt
el pto. de intersección, y en ONorm la normal. De lo contrario
devuelven falso y no modifican OPt u ONorm.
Parámetros:
Pt
= El origen (punto de inicio) del rayo.Dir
= La dirección del rayo.Obj
= El objeto con el que comprobar la
intersección.OPt
= Variable declarada, la macro le asignará
el punto de intersección.ONorm
= Variable declarada, la macro le
asignará la normal a la superficie en el punto de intersección.Extents(Obj, Min, Max)[= Extremos]
. Esta macro es un
atajo para llamar a min_extent() y max_extent() a la vez, y así
obtener las esquinas de la caja delimitadora de un objeto.
Devuelve estos valores mediante los parámetros Min y Max.
Parámetros:
Obj
= El objeto del que se obtienen los
extremos.Min
= Variable declarada, se le asignará el
extremo menor (min_extent) del objeto.Max
= Variable declarada, se le asignará el
extremo mayor (max_extent) del objeto.Center_Object(Objeto, Eje)[= Centrar objeto]
. Atajo
para usar la macro Center_Trans() con un objeto.
Parámetros:
Objeto
= Objeto a centrar.Eje
= Véase Center_Trans() en la documentación
de transforms.inc.Align_Object(Objeto, Eje, Pt)[= Alinear Objeto]
. Atajo
para usar la macro Align_Trans()
con un objeto.
Parámetros:
Objeto
= Objeto a alinear.Eje
= Véase Align_Trans() en la documentación
de transforms.inc.Pt
= El punto con el que alinear la caja delimitadora
del objeto. Bevelled_Text(Fuente, CadCar, Cortes, BiselAng, BiselProf,
Prof, Pos, UsarMerge)[= Texto Biselado]
. Esta macro intenta
"biselar" los bordes frontales de un objeto texto. Lo logra
haciendo una intersección de múltiples copias del objeto texto,
cada una troceada en una dirección diferente. Los resultados no
son perfectos, pero puede ser completamente aceptable para según
qué propósitos.
Advertencia: el objeto generado puede renderizar considerablemente más
lento que un objeto texto ordinario.
Parámetros:
Fuente
= Cadena de caracteres especificando la fuente
a usar.CadCar
= Cadena de caracteres desde la que se genera
el objeto.Cortes
= Número de intersecciones a usar en el
biselado del texto. Más cortes dan un resultado más suave, pero
usa mucha memoria y es más lento de renderizar.BiselAng
= Ángulo del lado biselado.BiselProf
= Grosor de la porción biselada.Prof
= Grosor total del objeto texto resultante.Pos
= El parámetro de posicionado del objeto texto.
El valor z de este vector será ignorado, porque las caras frontales
de todas las letras deben ser coplanarias para que funcione el biselado.UsarMerge
= Conmuta entre merge (1) y union (0).Text_Space(Fuente, CadCar, Tamaño, Espaciado)[= Espacio_Texto]
.
Calcula el ancho de una cadena de texto, "espacios en blanco "
incluidos, devolviendo los anchos de cuadrícula1 de las n letras. Text_Space da el
espacio que un texto, o un glifo, ocupa en relación a sus
contornos.
Parámetros:
Fuente
= Cadena de caracteres especificando la
fuente a usar.CadCar
= Cadena de texto desde la que se genera el
objeto.Tamaño
= Valor de escalado.Espaciado
= Cantidad de espacio a añadir entre los
caracteres.Text_Width(Fuente, CadCar, Tamaño, Espaciado)[=Ancho_texto]
.
Calcula el ancho de una cadena de texto, devolviendo el ancho de
cuadrícula de las n-1 primeras letras más el ancho de glifo2 de la última letra.
Text_Width da el ancho "físico" del texto y si sólo se usa una
letra, el ancho "físico" de un glifo.
Parámetros:
Fuente
= Cadena de caracteres especificando la fuente
a usar.CadCar
= Cadena de texto desde la que se genera el
objeto.Tamaño
= Valor de escalado.Espaciado
= Cantidad de espacio a añadir entre los
caracteres.Align_Left, Align_Right, Align_Center
. Estas constantes
son usadas por la macro Circle_Text()
.
Circle_Text(Fuente, CadCar, Tamaño, Espaciado, Prof, Radio,
Invertido, Justificacion, Angulo)[= Texto_Círculo]
. Crea un
objeto texto con la parte inferior (o superior) de los caracteres
alineada total o parcialmente con un círculo. Esta macro debe
usarse dentro de un bloque object{...}
.
Parámetros:
Fuente
= Cadena de caracteres especificando la fuente
a usar.CadCar
= Cadena de texto desde la que se genera el
objeto.Tamaño
= Valor de escalado.Espaciado
= Cantidad de espacio a añadir entre los
caracteres.Prof
= Grosor del objeto texto.Radio
= Radio del círculo con el que las letras están
alineadas.Invertido
= Controla qué parte del texto encara
"hacia afuera". Si este parámetro no es nulo, la parte superior
de las letras apuntará hacia el centro del círculo. De lo
contrario, lo hará la inferior.Justificacion
= Align_Left (alinear a la Izda.),
Align_Right (alinear a Dcha.), o Align_Center (alinear centrado).Angulo
= El punto del círculo desde el que empezar
a renderizar. La dirección +x es 0º y la dirección +y es 90º ( o
sea, el ángulo aumenta hacia la izquierda)Wedge(Angulo)[= Cuña]
. Macro que crea una cuña
infinita, intersección de dos planos. Es útil sobre todo en CSG,
por ejemplo, para obtener un arco específico de un toro. El filo
de la cuña se posiciona a lo largo del eje y, y un lado se fija al
plano zy; el otro lado rota a derechas alrededor del eje y.
Parámetros:
Angulo
= Ángulo, en grados, entre los lados de
la cuña.Spheroid(Centro, Radio)[= Esferoide]
. Macro que crea
una esfera escalada asimétricamente. Radio es un vector en donde
cada componente es el radio a lo largo de ese eje.
Parámetros:
Centro
= Centro del esferoide.Radio
= Vector especificando los radios del esferoide.Supertorus(RadioMayor, RadioMenor, ControlMayor, ControlMenor,
Precision, MaxGradient)[= Supertoroide]
. Macro que crea una
isosuperficie de un toro equivalente a un superelipsoide. Si se
especifica un MaxGradient menor que 1 se usará evaluate. Se tendrá
que ajustar MaxGradient para adecuar los parámetros escogidos, es
decir, un supertoro más cuadrado tendrá un gradiente mayor. Tal
vez quiera usarse la función aisladamente en una isosuperficie
propia.
Parámetros:
RadioMayor, RadioMenor
= Radios base para el
toro.ControlMayor, ControlMenor
= Controles para la
redondez del supertoro. Usar números en el intervalo [0, 1].Precision
= El parámetro accuracy (precisión).MaxGradient
= El parámetro max_gradient.Supercone(FinA, A, B, FinB, C, D)[= Supercono]
. Macro
que crea un objeto similar al cono, en donde los puntos finales
son elipses. El objeto real es la intersección de una cuártica con
un cilindro.
Parámetros:
FinA
= Centro del extremo A.A, B
= Controles para los radios del extremo A.FinB
= Centro del extremo B.C, D
= Controles para los radios del extremo B.Connect_Spheres(PtA, RadioA, PtB, RadioB)[= conectar esferas]
.
Macro que crea un cono que unirá suavemente dos esferas. Sin embargo,
sólo crea el objeto cono, debiéndose proporcionar las propias
esferas, o usar la macro Round_Cone2() en su lugar.
Parámetros:
PtA
= Centro de la esfera A.RadioA
= Radio de la esfera A.PtB
= Centro de la esfera B.RadioB
= Radio de la esfera B.Wire_Box_Union(PtA, PtB, Radio),
. Crea
una caja de malla de alambre a partir de cilindros y esferas. El
objeto resultante se adaptará totalmente al interior de un objeto
caja con los mismos puntos para sus esquinas.
Wire_Box_Merge(PtA, PtB, Radio),
Wire_Box(PtA, PtB, Radio, UsarMerge)[= caja de alambres]
Parámetros:
PtA
= Esquina inferior-izquierda-frontal de la
caja.PtB
= Esquina superior-derecha-trasera de la caja.Radio
= Radio de los cilindros y esferas que
componen el objeto.UsarMerge
= Si hay que usar merge o no (union).Round_Box_Union(PtA, PtB, RadioArista),
.
Crea una caja con aristas redondeadas a partir de cajas cilindros
y esferas. El objeto resultante se adaptará totalmente al interior
de un objeto caja con los mismos puntos para sus esquinas. El
resultado es ligeramente distinto de un superelipsoide, el cual
carece de áreas completamente planas.
Round_Box_Merge(PtA, PtB, RadioArista),
Round_Box(PtA, PtB, RadioArista, UsarMerge)[=Caja redondeada]
Parámetros:
PtA
= Esquina inferior-izquierda-frontal de la caja.PtB
= Esquina superior-derecha-trasera de la caja.RadioArista
= Radio de las aristas de la caja.UsarMerge
= Si hay que usar merge o no.Round_Cylinder_Union(PtA, PtB, Radio, RadioArista),
. Crea un cilindro con aristas redondeadas a
partir de cilindros y toros. El objeto resultante se adaptará
totalmente al interior de un objeto cilindro con los mismos puntos
terminales y radio. El resultado es ligeramente distinto de un
superelipsoide, el cual carece de áreas completamente planas.
Round_Cylinder_Merge(PtA, PtB, Radio, RadioArista),
Round_Cylinder(PtA, PtB, Radio, RadioArista, UsarMerge)[= cilindro
redondeado]
Parámetros:
PtA, PtB
= Puntos terminales del cilindro.Radio
= Radio del cilindro.RadioArista
= Radio de las aristas del
cilindro.UsarMerge
= Si hay que usar merge o no.Round_Cone_Union(PtA, RadioA, PtB, RadioB, RadioArista),
Crea un cono con aristas redondeadas a partir de
conos y toros. El objeto resultante se adaptará totalmente al
interior de un objeto cono con los mismos puntos terminales y
radios.
Round_Cone_Merge(PtA, RadioA, PtB, RadioB, RadioArista),
Round_Cone(PtA, RadioA, PtB, RadioB, RadioArista, UsarMerge)[=cono
redondeado].
Parámetros:
PtA, PtB
= Puntos terminales del cono.RadioA, RadioB
= Radios del cono.RadioArista
= Radio de las aristas del cono.UsarMerge
= Si hay que usar merge o no.Round_Cone2_Union(PtA, RadioA, PtB, RadioB),
. Crea un cono
con aristas redondeadas a partir de un cono y dos esferas. El
objeto resultante no se adaptará totalmente al interior de un
objeto cono con los mismos puntos terminales y radios, debido a
las tapas esféricas. Los puntos terminales no se usan para la
porción cónica, sino para las esferas, generándose entonces el
cono idóneo para unirlas suavemente.
Round_Cone2_Merge(PtA, RadioA, PtB, RadioB),
Round_Cone2(PtA, RadioA, PtB, RadioB, UsarMerge)
Parámetros:
PtA, PtB
= Centros de las tapas esféricas.RadioA, RadioB
= Radios de las tapas esféricas.UsarMerge
= Si hay que usar merge o no.Round_Cone3_Union(PtA, RadioA, PtB, RadioB),
. Como
Round_Cone2(), crea un cono con aristas redondeadas a partir de un
cono y dos esferas, y el objeto resultante no se adaptará
totalmente al interior de un objeto cono con los mismos puntos
terminales y radios, debido a las tapas esféricas. La diferencia
es que esta macro, toma los puntos terminales de la porción cónica
y mueve las esferas hasta que se nivelan con la superficie, en
lugar de colocar las esferas en los puntos terminales y generar un cono
para unirlas.
Round_Cone3_Merge(PtA, RadioA, PtB, RadioB)
Round_Cone3(PtA, RadioA, PtB, RadioB, UsarMerge)
Parámetros:
PtA, PtB
= Puntos terminales del cono.RadioA, RadioB
= Radios del cono.UsarMerge
= Si hay que usar merge o no.Quad(A, B, C, D)
y Smooth_Quad(A, NA, B, NB, C,
NC, D, ND) [=Cuadrángulo y C._suavizado]
. Estas macros
crean cuadrángulos, objetos poligonales de 4 lados, usando pares
de triángulos.
Parámetros:
A, B, C, D
= Vértices del "cuad".NA, NB, NC, ND
= Vértices normales del cuad.Hay varias macros HF en shapes.inc, las cuales generan mallas3 de formas variadas. Todas las macros HF tienen los siguientes puntos en común:
A continuación se describe el uso de las diferentes macros HF.
HF_Square (Funcion, UsarUValt, UsarTexturaUV, Res, Suavizado,
NomArchivo, MnExt, MxExt)
. Macro que genera una malla en
forma de campo de alturas cuadrado similar a la primitiva interna
height_field. Véase también la descripción general de las macros
HF anterior.
Parámetros:
Funcion
= Función usada para deformar el campo de
alturas.UsarUValt
= Valor booleano indicando a la macro si
usar mapeado de altura UV o no.UsarTexturaUV
= Valor booleano indicando a la macro
si usar mapeado de textura UV o no.Res
= Vector 2D especificando la resolución de la
malla generada.Suavizado
= Valor booleano indicando a la macro si
suavizar o no la malla generada.NomArchivo
= Nombre del archivo de salida.MnExt
= Esquina inferior-izquierda-frontal de la caja
que contiene al campo de alturas.MxExt
= Esquina superior-derecha-trasera de la caja
que contiene al campo de alturas.HF_Sphere(Funcion, UsarUValt, UsarTexturaUV, Res, Suavizado,
NomArchivo, Centro, Radio, Prof)
. Macro que genera una
malla en forma de campo de alturas esférico. Cuando se usa el
mapeado UV, el cuadrado UV se envolverá en la esfera empezando en
+x yendo a izquierdas alrededor del eje y. Véase también la
descripción general de las macros HF anterior.
Parámetros:
Funcion
= Función usada para deformar el campo de
alturas.UsarUValt
= Valor booleano indicando a la macro si
usar mapeado de altura UV o no.UsarTexturaUV
= Valor booleano indicando a la macro
si usar mapeado de textura UV o no.Res
= Vector 2D especificando la resolución de la
malla generada.Suavizado
= Valor booleano indicando a la macro si
suavizar o no la malla generada.NomArchivo
= Nombre del archivo de salida.Centro
= Centro del campo de alturas antes de ser
desplazado. El desplazamiento puede, y lo más probable es que lo
haga, descentrar el objeto.Radio
= Radio inicial de la esfera, antes de ser
desplazado.Prof
= Profundidad del campo de alturas.HF_Cylinder(Funcion, UsarUValt, UsarTexturaUV, Res, Suavizado,
NomArchivo, FinA, FinB, Radio,Prof)
. Macro que genera una
malla en forma de campo de alturas cilíndrico abierto en sus
extremos. Cuando se usa el mapeado UV, el cuadrado UV se envolverá
alrededor del cilindro. Véase también la descripción general de
las macros HF anterior.
Parámetros:
Funcion
= Función usada para deformar el campo de
alturas.UsarUValt
= Valor booleano indicando a la macro si
usar mapeado de altura UV o no.UsarTexturaUV
= Valor booleano indicando a la macro
si usar mapeado de textura UV o no.Res
= Vector 2D especificando la resolución de la
malla generada.Suavizado
= Valor booleano indicando a la macro si
suavizar o no la malla generada.NomArchivo
= Nombre del archivo de salida.FinA, FinB
= Puntos terminales del cilindro.Radio
= Radio (desplazamiento previo) del cilindro.Prof
= Profundidad del campo de alturas.HF_Torus (Funcion, UsarUValt, UsarTexturaUV, Res, Suavizado,
NomArchivo, Mayor, Menor, Prof)
. Macro que genera una malla
en forma de campo de alturas toroidal. Cuando se usa el mapeado
UV, el cuadrado UV se envolverá alrededor del toroide de forma
similar al mapeado esférico o cilíndrico. Sin embargo, los lados
superior e inferior del mapa se solaparán en el borde interior del
toroide. Véase también la descripción general de las macros HF
anterior.
Parámetros:
Funcion
= Función usada para deformar el campo de
alturas.UsarUValt
= Valor booleano indicando a la macro si
usar mapeado de altura UV o no.UsarTexturaUV
= Valor booleano indicando a la macro
si usar mapeado de textura UV o no.Res
= Vector 2D especificando la resolución de la
malla generada.Suavizado
= Valor booleano indicando a la macro si
suavizar o no la malla generada.NomArchivo
= Nombre del archivo de salida.Mayor
= Radio mayor del toroide.Menor
= Radio menor del toroide.(1) La
cuadrícula contiene al carácter incluido el espacio entre
caracteres (N. de T.)
(2) El glifo es el
gráfico que representa a un carácter. (N. de T.)
(3) Un objeto
mesh2{...} (N. d T.)
|