7.13.1  shapes.inc

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:

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:

Center_Object(Objeto, Eje)[= Centrar objeto]. Atajo para usar la macro Center_Trans() con un objeto.
Parámetros:

Align_Object(Objeto, Eje, Pt)[= Alinear Objeto]. Atajo para usar la macro Align_Trans() con un objeto.
Parámetros:

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:

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:

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:

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:

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:

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:

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:

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:

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:

Wire_Box_Union(PtA, PtB, Radio),
Wire_Box_Merge(PtA, PtB, Radio),
Wire_Box(PtA, PtB, Radio, UsarMerge)[= caja de alambres]
. 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.
Parámetros:

Round_Box_Union(PtA, PtB, RadioArista),
Round_Box_Merge(PtA, PtB, RadioArista),
Round_Box(PtA, PtB, RadioArista, UsarMerge)[=Caja redondeada]
. 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.
Parámetros:

Round_Cylinder_Union(PtA, PtB, Radio, RadioArista),
Round_Cylinder_Merge(PtA, PtB, Radio, RadioArista),
Round_Cylinder(PtA, PtB, Radio, RadioArista, UsarMerge)[= cilindro redondeado]
. 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.
Parámetros:

Round_Cone_Union(PtA, RadioA, PtB, RadioB, RadioArista),
Round_Cone_Merge(PtA, RadioA, PtB, RadioB, RadioArista),
Round_Cone(PtA, RadioA, PtB, RadioB, RadioArista, UsarMerge)[=cono redondeado].
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.
Parámetros:

Round_Cone2_Union(PtA, RadioA, PtB, RadioB),
Round_Cone2_Merge(PtA, RadioA, PtB, RadioB),
Round_Cone2(PtA, RadioA, PtB, RadioB, UsarMerge)
. 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.
Parámetros:

Round_Cone3_Union(PtA, RadioA, PtB, RadioB),
Round_Cone3_Merge(PtA, RadioA, PtB, RadioB)
Round_Cone3(PtA, RadioA, PtB, RadioB, UsarMerge)
. 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.
Parámetros:

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:

7.13.1.1  Las Macros HF

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:

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:

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:

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:

(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.)