Programa en C para dibujar la Torre Eiffel usando gráficos de computadora

En gráficos C , las funciones de graphics.h se utilizan para dibujar diferentes formas como círculos, rectángulos, etc., mostrar texto (cualquier mensaje) en un formato diferente (diferentes fuentes y colores). Mediante el uso de graphics.h se pueden crear programas, animaciones y también juegos.

Función utilizada:

  • rectángulo (l, t, r, b) :  una función del archivo de encabezado graphics.h que dibuja un rectángulo de izquierda (l) a derecha (r) y de arriba (t) a abajo (b).
  • line(a1, b1, a2, b2) :  Una función del archivo de encabezado graphics.h que dibuja una línea desde el punto (a1, b1) hasta el punto (a2, b2).
  • ellipse(int x, int y, int start_angle, int end_angle, int x_radius, int y_radius) : Una función del archivo de encabezado graphics.h donde x, y es la ubicación de la elipse. x_radius y y_radius deciden el radio de la forma x e y. start_angle es el punto inicial del ángulo y end_angle es el punto final del ángulo. El valor del ángulo puede variar de 0 a 360 grados.

Acercarse:

  • El primer paso es hacer la base del lado izquierdo de la torre. La base del lado izquierdo está totalmente construida con una función line().
  • En el lado izquierdo de la base, construya un total de cuatro líneas. Estas líneas están en mosaico unas de otras. Luego une el lado izquierdo de las líneas con una línea tangente y el lado derecho con otra línea tangente. Además, haga la decoración interior uniendo los lados opuestos de cada base con una línea. Este trabajo completo debe realizarse mediante una función line().
  • Se tiene que hacer lo mismo con el lado derecho, similar al hecho con el lado izquierdo. Pero la diferencia es que se requiere inclinar las bases en el lado opuesto.
  • Luego une dos lados con una función line() .
  • El siguiente paso es hacer un semicírculo usando una función elipse().
  • Implemente tres rectángulos usando una función de rectángulo(). Todos estos rectángulos se utilizarán en funciones de decoración.
  • Entre los rectángulos, uno estará decorado con un triángulo continuo que será implementado por la función line(). Estas decoraciones triangulares continuas se realizarán mediante un bucle while .
  • Otro rectángulo estará decorado con líneas verticales que están separadas por la misma distancia. Estas líneas verticales se implementan mediante una función line() en otro bucle while.
  • Los pasos seguidos en la base inferior también deben realizarse aquí. El método completo es totalmente el mismo aquí también. Pero aquí, hemos implementado tres bases en lugar de cuatro.
  • Une los dos lados con una función line().
  • Implemente dos rectángulos usando la función rectángulo(). Entre ellos, el superior se decorará con unas líneas verticales colocadas a la misma distancia entre sí. Estas líneas serán implementadas por la función line() en un ciclo while.
  • Haz un bucle while que dividirá la altura de la torre restante y también creará algo de decoración en ella en un solo bucle while. Toda esta operación será implementada por la función line().
  • Une los dos lados con la función de línea. Cree un rectángulo usando una función de rectángulo() en el lado superior y una línea recta usando una función de line().

A continuación se muestra la implementación del enfoque anterior:

C

// C program for the above approach
#include <conio.h>
#include <graphics.h>
#include <stdio.h>
  
// Driver Code
void main()
{
    int gd = DETECT, gm;
  
    // Initialize of gdriver with
    // DETECT macros
    initgraph(&gd, &gm, "C:\\turboc3\\bgi");
  
    // Declared Variables
    int a = 390, b = 390, c = 700;
  
    // Left Side
    // Lower Base
    line(300, 1000, 450, 1000);
  
    // Inside Decoration
    line(300, 1000, 480, 940);
    line(450, 1000, 330, 940);
  
    // 1st Base
    line(330, 940, 480, 940);
  
    // Inside Decoration
    line(330, 940, 510, 880);
    line(480, 940, 360, 880);
  
    // 2nd Base
    line(360, 880, 510, 880);
  
    // Inside Decoration
    line(360, 880, 540, 820);
    line(390, 820, 510, 880);
  
    // 3rd Base
    line(390, 820, 540, 820);
  
    // Left Tangent
    line(300, 1000, 390, 820);
  
    // Right Tangent
    line(450, 1000, 540, 820);
  
    // Joining Line
    line(390, 820, 810, 820);
  
    // Half Circle
    ellipse(600, 900, 15, 165, 90, 80);
  
    // Right Side
    // Lower Base
    line(750, 1000, 900, 1000);
  
    // Inside Decoration
    line(750, 1000, 870, 940);
    line(720, 940, 900, 1000);
  
    // 1st Base
    line(720, 940, 870, 940);
  
    // Inside Decoration
    line(720, 940, 840, 880);
    line(870, 940, 690, 880);
  
    // 2nd Base
    line(690, 880, 840, 880);
  
    // Inside Decoration
    line(690, 880, 810, 820);
    line(840, 880, 660, 820);
  
    // 3rd Base
    line(660, 820, 810, 820);
  
    // Left Tangent
    line(750, 1000, 660, 820);
  
    // Right Tangent
    line(900, 1000, 810, 820);
  
    // Rectangles For Decoration
    rectangle(390, 800, 810, 820);
    rectangle(380, 780, 820, 800);
    rectangle(390, 760, 810, 780);
  
    // Triangle Decoration
    while (a <= 790) {
        line(a, 820, a + 10, 800);
        line(a + 10, 800, a + 20, 820);
        a = a + 20;
    }
  
    // Vertical Line Decoration
    while (b <= 810) {
        line(b, 760, b, 780);
        b = b + 20;
    }
  
    // Left Side
    // Upper Base
    line(410, 760, 530, 760);
  
    // Inside Decoration
    line(410, 760, 560, 700);
    line(530, 760, 440, 700);
  
    // 1st Base
    line(440, 700, 560, 700);
  
    // Inside Decoration
    line(440, 700, 590, 640);
    line(560, 700, 470, 640);
  
    // 2nd base
    line(470, 640, 590, 640);
  
    // Left Tangent
    line(410, 760, 470, 640);
  
    // Right Tangent
    line(540, 760, 590, 640);
  
    // Right Side
    // Upper Base
    line(670, 760, 790, 760);
  
    // Inside Decoration
    line(670, 760, 760, 700);
    line(790, 760, 640, 700);
  
    // 1st Base
    line(640, 700, 760, 700);
  
    // Inside Decoration
    line(640, 700, 730, 640);
    line(760, 700, 610, 640);
  
    // 2nd Base
    line(610, 640, 730, 640);
  
    // Left Tangent
    line(670, 760, 610, 640);
  
    // Right Tangent
    line(790, 760, 730, 640);
  
    // Joining Line
    line(470, 640, 730, 640);
  
    // Rectangle For Decoration
    rectangle(460, 620, 740, 640);
    rectangle(470, 600, 730, 620);
  
    // Redeclaring Variable
    b = 470;
  
    // Vertical Line Decoration
    while (b <= 730) {
        line(b, 600, b, 620);
        b = b + 10;
    }
  
    // Redeclaring Variable
    a = 600;
    b = 500;
  
    // Middle Line
    line(600, 600, 600, 140);
  
    // Upper Most Decoration
    while (b >= 240) {
        if (b == c)
            break;
        else {
            line(b, a, c, a);
            line(b, a, c - 10, a - 40);
            line(b + 10, a - 40, c, a);
            a = a - 40;
            b = b + 10;
            c = c - 10;
        }
    }
  
    // Tangent Lines
    line(500, 600, 590, 240);
    line(700, 600, 610, 240);
    rectangle(590, 200, 610, 240);
  
    // Holding The Screen For A While
    getch();
  
    // Close the initialized gdriver
    closegraph();
}

Producción:

Eiffel Tower

Publicación traducida automáticamente

Artículo escrito por sounetraghosal2000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *