예제 #1
0
boolean pto2D::dentro3 (pto2D A, pto2D B, pto2D C)	//Ha de ser un metodo estricto, aunque se ponen >=
{
    pto3D bisA = B.menos (A).aversor ().mas (C.menos (A).aversor ());	//bisectrices
    pto3D bisB = A.menos (B).aversor ().mas (C.menos (B).aversor ());
    double angulo1 = C.menos (A).anguloconr (bisA);	//angulos maximos
    double angulo2 = C.menos (B).anguloconr (bisB);
    double anguloP1 = menos (A).anguloconr (bisA);	//Angulos del candidato
    double anguloP2 = menos (B).anguloconr (bisB);

    if ((anguloP1 <= angulo1) && (anguloP2 <= angulo2))
	return true;
    else
	return false;
}
예제 #2
0
boolean pto2D::dentrocasi3 (pto2D A, pto2D B, pto2D v1, pto2D v2)
    //ptos comprendidos en el triangulo cuyo lado esta formado por  AB
    //los lados marcados por v1 (que emerge de A) y v2 (de B)
    //Ha de ser un metodo estricto
{
    pto3D vAB = B.menos (A);
    pto3D vBA = A.menos (B);
    pto3D bisA = vAB.aversor ().mas (v1.aversor ());	//bisectrices
    pto3D bisB = vBA.aversor ().mas (v2.aversor ());
    double angulo1 = v1.anguloconr (bisA);	//angulos maximos
    double angulo2 = v2.anguloconr (bisB);
    double anguloP1 = menos (A).anguloconr (bisA);	//Angulos del candidato
    double anguloP2 = menos (B).anguloconr (bisB);

    if ((anguloP1 <= angulo1) && (anguloP2 <= angulo2))
	return true;
    else
	return false;
}
예제 #3
0
void main (void)
{
    char cad[50], resp;
    int total, esta;

    clrscr ();

    do {
        printf ("Introduzca un número: ");

        do {
            gets (cad);
            menos (cad);
            total = strlen (cad);
            esta = comprobar (cad, total);

            if (esta != 0) {
                printf ("No metas porquería.");

                if (indice != total - 1)
                    printf (" A partir de la %c no vale.", cad[indice]);
                else
                    printf (" La %c no vale.", cad[indice]);

                printf ("\nIntroduzca otro: ");
            }

            if (total == 0)
                esta = 1;
        }
        while (esta != 0);

        ceros (cad);

        total = strlen (cad);

        leer (cad, total);

        printf ("\n\n¿Desea probar otro número?(s/n): ");

        do {
            resp = getche ();
            printf ("\n");
            resp = tolower (resp);

            if ((resp != 's') && (resp != 'n'))
                printf ("¿Otro número?(s/n): ");
        }
        while ((resp != 's') && (resp != 'n'));
    }
    while (resp == 's');
}
예제 #4
0
boolean pto2D::dentro4cv (pto2D A, pto2D B, pto2D C, pto2D D, double p)
{
    /*
     * SOLO VALIDO PARA TRAP CONVEXOS
     *         C---------------------D
     *        /                       \
     *       A-------------------------B
     *  TRAPEZOIDE MAGICO compuesto por A= 0, B quiral 1er tubo
     * C origen segundo tubo D=final segundo tubo
     * angulos subtendidos BAC y CDB
     */
    //Calculamos centroide,
    pto2D centro = A.mas (B).mas (C).mas (D).escala (0.25).a2D ();
    //Vectores  de conexion a cada uno de los cuatro
    pto2D ca = A.menos (centro).a2D ();
    pto2D cb = B.menos (centro).a2D ();
    pto2D cc = C.menos (centro).a2D ();
    pto2D cd = D.menos (centro).a2D ();
    //y nuevos puntos, expandidos
    A = centro.mas (ca.escala (p)).a2D ();
    B = centro.mas (cb.escala (p)).a2D ();
    C = centro.mas (cc.escala (p)).a2D ();
    D = centro.mas (cd.escala (p)).a2D ();

    pto3D bisA = B.menos (A).aversor ().mas (C.menos (A).aversor ());	//bisectrices
    pto3D bisD = B.menos (D).aversor ().mas (C.menos (D).aversor ());

    double anguloA = C.menos (A).anguloconr (bisA);	//angulos maximos
    double anguloD = B.menos (D).anguloconr (bisD);
    //
    double anguloPbisA = menos (A).anguloconr (bisA);	//Angulos del candidato
    double anguloPbisD = menos (D).anguloconr (bisD);

    if ((anguloPbisA < anguloA) && (anguloPbisD < anguloD))
	return true;
    else
	return false;

}