Exemple #1
0
void Segmento::cohenSutherland(const PV2f &tl, const PV2f &br)
{
    int codigoA = codigo(m_a, tl, br);
    int codigoB = codigo(m_b, tl, br);
    for (int frontera = 0; frontera < 4; ++frontera) {
        if (!(codigoA | codigoB)) {
            return;
        } else if (codigoA & codigoB) {
            m_a = PV2f(0, 0);
            m_b = PV2f(0, 0);
            return;
        }
        if (!codigoA) {
            const int caux = codigoA;
            codigoA = codigoB;
            codigoB = caux;
            const PV2f aux = m_a;
            m_a = m_b;
            m_b = aux;
        } else if ((codigoA & IZQUIERDA) == IZQUIERDA) {
            m_a.setY(m_b.getY() - ((m_b.getY() - m_a.getY()) / (m_b.getX() - m_a.getX())) * (m_b.getX() - tl.getX()));
            m_a.setX(tl.getX());
        } else if ((codigoA & DERECHA) == DERECHA) {
            m_a.setY(m_b.getY() - ((m_b.getY() - m_a.getY()) / (m_b.getX() - m_a.getX())) * (m_b.getX() - br.getX()));
            m_a.setX(br.getX());
        } else if ((codigoA & ARRIBA) == ARRIBA) {
            m_a.setX(m_b.getX() - ((m_b.getY() - tl.getY()) * (m_b.getX() - m_a.getX()) / (m_b.getY() - m_a.getY())));
            m_a.setY(tl.getY());
        } else if ((codigoA & ABAJO) == ABAJO) {
            m_a.setX(m_b.getX() - ((m_b.getY() - br.getY()) * (m_b.getX() - m_a.getX()) / (m_b.getY() - m_a.getY())));
            m_a.setY(br.getY());
        }
        codigoA = codigo(m_a, tl, br);
    }
}
Exemple #2
0
int main(void){
char nombre_completo[TAM], A[N+1];
int i;
for(i=0;i<TAM;i++)
  nombre_completo[i]='\0';
for(i=0;i<N;i++)
  A[i]='\0';
gets(nombre_completo);
codigo(nombre_completo,A);
puts(A);
return 0;
}