int get_disty3d( CDIV_3D_POINT ángulo3D, int distancia )


Retorna:

 El desplazamiento vertical del vector (ángulo, distancia).

Descripción:

Devuelve distancia vertical (en el eje de la coordenada y) a partir del ángulo y distancia (sobre ese ángulo) pasados como parámetros. Es decir, devuelve la distancia que recorre en horizontal el vector formado por el ángulo y longitud (distancia o módulo del vector) indicados.

Se recuerda que el ángulo se especifica en milésimas de grado y como distancia se puede especificar cualquier expresión numérica válida.

La función utilizada para calcular la distancia de fondo, en lugar de la vertical, es get_distz3d().


MAIN_PROGRAM_CDIV

PRIVATE
    int resultado, fichero1;

BEGIN_PROGRAM

    set_gfx(GFX_AUTODETECT_WINDOWED);
    set_mode(m320x200);

    fichero1=load_fpg("../help.fpg");

    y = -5;

    start_3d(0, fichero1, 100, 512, 512, 0, this);

    write(0, 0, 40, 0, "Ángulo Y calculado:");
    write_int(0, 20, 50, 0, &angle3d.y);

    write(0, 0, 80, 0, "Distancia en X:");
    write_int(0, 0, 90, 0, &resultado);
    write(0, 0, 200, 6, "Pulsa [ESPACIO] para hallar otro ángulo.");

    LOOP{
        angle3d.y = rand(0, 360000);

        //Hallamos la distancia
        resultado = get_distx3d(angle3d, 10);

        scan_code=0;
        while (scan_code!=_space)
            FRAME;
    }
END_PROGRAM

En el ejemplo, después de poner los mensajes necesarios, se halla la distancia x de un ángulo hallado al azar y se guardan en las variables destinadas para ello, calculando con la función get_distx3d() la distancia en el ángulo determinado. Cada vez que se pulse la barra espaciadora se repetirá el proceso.

Si se quiere avanzar las coordenadas del proceso una distancia en un ángulo determinado, se pueden utilizar las siguientes sentencias:

 x+=get_distx3d(ángulo3d, distancia);
 y+=get_disty3d(ángulo3d, distancia);
 z+=get_distz3d(ángulo3d, distancia);

Esto sería equivalente a la siguiente sentencia (utilizando la función xadvance3d()).

 xadvance3d(ángulo3d, distancia);

Si el ángulo en el que se quiere mover el proceso es el que tiene en su variable local angle3d, entonces esta misma operación se podría realizar con la función advance3d() de la siguiente forma:

 advance3d(distancia);

Ver: Uso de ángulos en el modo 3D - get_distx3d() - get_distz3d() - xadvance3d() - advance3d()