Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Graphic trên linux | Đồ họa trên linux?

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    14

    Mặc định Graphic trên linux | Đồ họa trên linux?

    Mình có đoạn code sưu tầm được như thế này:
    C++ Code:
    1.  
    2.  /*************************************************************************/
    3.  
    4.  /*************************************************************************
    5.  
    6.  
    7.  
    8.  A C++ program to show the projection of 3D objects using General Perspective
    9.  
    10.  Projection.
    11.  
    12.  
    13.  
    14.   *************************************************************************/
    15.  
    16.  /*************************************************************************/
    17.  
    18.  
    19.  
    20.   /*************************************************************************
    21.  
    22.  
    23.  
    24.       By :
    25.  
    26.         Muhammad Tahir Shahzad  [ MTS ]
    27.  
    28.         B.C.S Honours  [ 2000-04 ]
    29.  
    30.         Government College University Lahore
    31.  
    32.         Pakistan
    33.  
    34.  
    35.  
    36.       E-mail :  mtshome@wol.net.pk
    37.  
    38.  
    39.  
    40.     Web-Site :  www.mts-home.cjb.net  [ www.wol.net.pk/mtshome ]
    41.  
    42.         www.mtshome.cjb.net   [ www.geocities.com/mtahirshahzad ]
    43.  
    44.  
    45.  
    46.   *************************************************************************/
    47.  
    48.  
    49.  
    50.  /*************************************************************************/
    51.  
    52.  /*************************************************************************/
    53.  
    54.  //---------------------------  Header Files  ----------------------------//
    55.  
    56.  /*************************************************************************/
    57.  
    58.  /*************************************************************************/
    59.  
    60.  
    61.  
    62.  # include <iostream.h>
    63.  
    64.  # include <graphics.h>
    65.  
    66.  # include    <conio.h>
    67.  
    68.  # include     <math.h>
    69.  
    70.  
    71.  
    72.  /*************************************************************************/
    73.  
    74.  /*************************************************************************/
    75.  
    76.  //-----------------------  Global Declarations  -------------------------//
    77.  
    78.  /*************************************************************************/
    79.  
    80.  /*************************************************************************/
    81.  
    82.  
    83.  
    84.  # define  n1  -1.0
    85.  
    86.  # define  n2   1.0
    87.  
    88.  # define  n3   1.0
    89.  
    90.  
    91.  
    92.  # define  x0   1.0
    93.  
    94.  # define  y0   1.0
    95.  
    96.  # define  z0   1.0
    97.  
    98.  
    99.  
    100.  # define  a    0.2
    101.  
    102.  # define  b    0.2
    103.  
    104.  # define  c    0.2
    105.  
    106.  
    107.  
    108.  /*************************************************************************/
    109.  
    110.  /*************************************************************************/
    111.  
    112.  //-----------------------  Function Prototypes  -------------------------//
    113.  
    114.  /*************************************************************************/
    115.  
    116.  /*************************************************************************/
    117.  
    118.  
    119.  
    120.  void show_screen( );
    121.  
    122.  
    123.  
    124.  void draw_cube(int [8][3]);
    125.  
    126.  void draw_pyramid(int [5][3]);
    127.  
    128.  void get_projected_point(int&,int&,int&);
    129.  
    130.  void multiply_matrices(const float[4],const float[4][4],float[4]);
    131.  
    132.  
    133.  
    134.  void Line(const int,const int,const int,const int);
    135.  
    136.  
    137.  
    138.  /*************************************************************************/
    139.  
    140.  /*************************************************************************/
    141.  
    142.  //------------------------------  main( )  ------------------------------//
    143.  
    144.  /*************************************************************************/
    145.  
    146.  /*************************************************************************/
    147.  
    148.  
    149.  
    150.  int main( )
    151.  
    152.     {
    153.  
    154.        int driver=VGA;
    155.  
    156.        int mode=VGAHI;
    157.  
    158.  
    159.  
    160.        initgraph(&driver,&mode,"..\\Bgi");
    161.  
    162.  
    163.  
    164.        show_screen( );
    165.  
    166.  
    167.  
    168.        int cube[8][3]={
    169.  
    170.              {370,200,50},      //  front left top
    171.  
    172.              {470,200,50},      //  front right top
    173.  
    174.              {470,300,50},      //  front right bottom
    175.  
    176.              {370,300,50},      //  front left bottom
    177.  
    178.              {370,200,-50},     //  back left top
    179.  
    180.              {470,200,-50},     //  back right top
    181.  
    182.              {470,300,-50},     //  back right bottom
    183.  
    184.              {370,300,-50}      //  back left bottom
    185.  
    186.               };
    187.  
    188.  
    189.  
    190.        setcolor(15);
    191.  
    192.      draw_cube(cube);
    193.  
    194.  
    195.  
    196.        settextstyle(0,0,1);
    197.  
    198.      outtextxy(400,320,"Cube");
    199.  
    200.  
    201.  
    202.        int pyramid[5][3]={
    203.  
    204.                 {120,300,50},      //  base front left
    205.  
    206.                 {220,300,50},      //  base front right
    207.  
    208.                 {220,300,-50},     //  base back right
    209.  
    210.                 {120,300,-50},     //  base back left
    211.  
    212.                 {170,150,0}        //  top
    213.  
    214.              };
    215.  
    216.  
    217.  
    218.        setcolor(15);
    219.  
    220.      draw_pyramid(pyramid);
    221.  
    222.  
    223.  
    224.        settextstyle(0,0,1);
    225.  
    226.      outtextxy(135,320,"Pyramid");
    227.  
    228.  
    229.  
    230.        getch( );
    231.  
    232.        closegraph( );
    233.  
    234.        return 0;
    235.  
    236.     }
    237.  
    238.  
    239.  
    240.  /*************************************************************************/
    241.  
    242.  /*************************************************************************/
    243.  
    244.  //------------------------  Funcion Definitions  ------------------------//
    245.  
    246.  /*************************************************************************/
    247.  
    248.  /*************************************************************************/
    249.  
    250.  
    251.  
    252.  /************************************************************************/
    253.  
    254.  //----------------------------  draw_cube( )  --------------------------//
    255.  
    256.  /************************************************************************/
    257.  
    258.  
    259.  
    260.  void draw_cube(int edge_points[8][3])
    261.  
    262.     {
    263.  
    264.        for(int i=0;i<8;i++)
    265.  
    266.       get_projected_point(edge_points[i][0],
    267.  
    268.                      edge_points[i][1],edge_points[i][2]);
    269.  
    270.  
    271.  
    272.      Line(edge_points[0][0],edge_points[0][1],
    273.  
    274.                      edge_points[1][0],edge_points[1][1]);
    275.  
    276.      Line(edge_points[1][0],edge_points[1][1],
    277.  
    278.                      edge_points[2][0],edge_points[2][1]);
    279.  
    280.      Line(edge_points[2][0],edge_points[2][1],
    281.  
    282.                      edge_points[3][0],edge_points[3][1]);
    283.  
    284.      Line(edge_points[3][0],edge_points[3][1],
    285.  
    286.                      edge_points[0][0],edge_points[0][1]);
    287.  
    288.  
    289.  
    290.      Line(edge_points[4][0],edge_points[4][1],
    291.  
    292.                      edge_points[5][0],edge_points[5][1]);
    293.  
    294.      Line(edge_points[5][0],edge_points[5][1],
    295.  
    296.                      edge_points[6][0],edge_points[6][1]);
    297.  
    298.      Line(edge_points[6][0],edge_points[6][1],
    299.  
    300.                      edge_points[7][0],edge_points[7][1]);
    301.  
    302.      Line(edge_points[7][0],edge_points[7][1],
    303.  
    304.                      edge_points[4][0],edge_points[4][1]);
    305.  
    306.  
    307.  
    308.  
    309.  
    310.      Line(edge_points[0][0],edge_points[0][1],
    311.  
    312.                       edge_points[4][0],edge_points[4][1]);
    313.  
    314.      Line(edge_points[1][0],edge_points[1][1],
    315.  
    316.                       edge_points[5][0],edge_points[5][1]);
    317.  
    318.      Line(edge_points[2][0],edge_points[2][1],
    319.  
    320.                       edge_points[6][0],edge_points[6][1]);
    321.  
    322.      Line(edge_points[3][0],edge_points[3][1],
    323.  
    324.                       edge_points[7][0],edge_points[7][1]);
    325.  
    326.     }
    327.  
    328.  
    329.  
    330.  /************************************************************************/
    331.  
    332.  //--------------------------  draw_pyramid( )  -------------------------//
    333.  
    334.  /************************************************************************/
    335.  
    336.  
    337.  
    338.  void draw_pyramid(int edge_points[5][3])
    339.  
    340.     {
    341.  
    342.        for(int i=0;i<5;i++)
    343.  
    344.       get_projected_point(edge_points[i][0],
    345.  
    346.                      edge_points[i][1],edge_points[i][2]);
    347.  
    348.  
    349.  
    350.      Line(edge_points[0][0],edge_points[0][1],
    351.  
    352.                       edge_points[1][0],edge_points[1][1]);
    353.  
    354.      Line(edge_points[1][0],edge_points[1][1],
    355.  
    356.                       edge_points[2][0],edge_points[2][1]);
    357.  
    358.      Line(edge_points[2][0],edge_points[2][1],
    359.  
    360.                       edge_points[3][0],edge_points[3][1]);
    361.  
    362.      Line(edge_points[3][0],edge_points[3][1],
    363.  
    364.                       edge_points[0][0],edge_points[0][1]);
    365.  
    366.  
    367.  
    368.      Line(edge_points[0][0],edge_points[0][1],
    369.  
    370.                       edge_points[4][0],edge_points[4][1]);
    371.  
    372.      Line(edge_points[1][0],edge_points[1][1],
    373.  
    374.                       edge_points[4][0],edge_points[4][1]);
    375.  
    376.      Line(edge_points[2][0],edge_points[2][1],
    377.  
    378.                       edge_points[4][0],edge_points[4][1]);
    379.  
    380.      Line(edge_points[3][0],edge_points[3][1],
    381.  
    382.                       edge_points[4][0],edge_points[4][1]);
    383.  
    384.     }
    385.  
    386.  
    387.  
    388.  /************************************************************************/
    389.  
    390.  //---------------------  get_projected_point( )  -----------------------//
    391.  
    392.  /************************************************************************/
    393.  
    394.  
    395.  
    396.  void get_projected_point(int& x,int& y,int& z)
    397.  
    398.     {
    399.  
    400.        float d0=((n1*x0)+(n2*y0)+(n3*z0));
    401.  
    402.        float d1=((n1*a)+(n2*b)+(n3*c));
    403.  
    404.        float d=(d0-d1);
    405.  
    406.  
    407.  
    408.        float Per_NRC[4][4]={
    409.  
    410.                  {(d-(a*n1)),(b*n1),(c*n1),n1},
    411.  
    412.                  {(a*n2),(d+n2*b),(c*n2),n2},
    413.  
    414.                  {(a*n3),(b*n3),(d+(c*n3)),n3},
    415.  
    416.                  {(-a*d0),(-b*d0),(-c*d0),-d1}
    417.  
    418.                };
    419.  
    420.  
    421.  
    422.        float xy[4]={x,y,z,1};
    423.  
    424.        float new_xy[4]={0};
    425.  
    426.  
    427.  
    428.        multiply_matrices(xy,Per_NRC,new_xy);
    429.  
    430.  
    431.  
    432.        x=(int)(new_xy[0]+0.5);
    433.  
    434.        y=(int)(new_xy[1]+0.5);
    435.  
    436.        z=(int)(new_xy[2]+0.5);
    437.  
    438.     }
    439.  
    440.  
    441.  
    442.  /************************************************************************/
    443.  
    444.  //----------------------  multiply_matrices( )  ------------------------//
    445.  
    446.  /************************************************************************/
    447.  
    448.  
    449.  
    450.  void multiply_matrices(const float matrix_1[4],
    451.  
    452.                    const float matrix_2[4][4],float matrix_3[4])
    453.  
    454.     {
    455.  
    456.        for(int count_1=0;count_1<4;count_1++)
    457.  
    458.       {
    459.  
    460.          for(int count_2=0;count_2<4;count_2++)
    461.  
    462.         matrix_3[count_1]+=
    463.  
    464.                (matrix_1[count_2]*matrix_2[count_2][count_1]);
    465.  
    466.       }
    467.  
    468.     }
    469.  
    470.  
    471.  
    472.  /*************************************************************************/
    473.  
    474.  //--------------------------  Line( )  ------------------------//
    475.  
    476.  /*************************************************************************/
    477.  
    478.  
    479.  
    480.  void Line(const int x_1,const int y_1,const int x_2,const int y_2)
    481.  
    482.     {
    483.  
    484.        int color=getcolor( );
    485.  
    486.  
    487.  
    488.        int x1=x_1;
    489.  
    490.        int y1=y_1;
    491.  
    492.  
    493.  
    494.        int x2=x_2;
    495.  
    496.        int y2=y_2;
    497.  
    498.  
    499.  
    500.        if(x_1>x_2)
    501.  
    502.       {
    503.  
    504.          x1=x_2;
    505.  
    506.          y1=y_2;
    507.  
    508.  
    509.  
    510.          x2=x_1;
    511.  
    512.          y2=y_1;
    513.  
    514.       }
    515.  
    516.  
    517.  
    518.        int dx=abs(x2-x1);
    519.  
    520.        int dy=abs(y2-y1);
    521.  
    522.        int inc_dec=((y2>=y1)?1:-1);
    523.  
    524.  
    525.  
    526.        if(dx>dy)
    527.  
    528.       {
    529.  
    530.          int two_dy=(2*dy);
    531.  
    532.          int two_dy_dx=(2*(dy-dx));
    533.  
    534.          int p=((2*dy)-dx);
    535.  
    536.  
    537.  
    538.          int x=x1;
    539.  
    540.          int y=y1;
    541.  
    542.  
    543.  
    544.          putpixel(x,y,color);
    545.  
    546.  
    547.  
    548.          while(x<x2)
    549.  
    550.         {
    551.  
    552.            x++;
    553.  
    554.  
    555.  
    556.            if(p<0)
    557.  
    558.               p+=two_dy;
    559.  
    560.  
    561.  
    562.            else
    563.  
    564.               {
    565.  
    566.              y+=inc_dec;
    567.  
    568.              p+=two_dy_dx;
    569.  
    570.               }
    571.  
    572.  
    573.  
    574.            putpixel(x,y,color);
    575.  
    576.         }
    577.  
    578.       }
    579.  
    580.  
    581.  
    582.        else
    583.  
    584.       {
    585.  
    586.          int two_dx=(2*dx);
    587.  
    588.          int two_dx_dy=(2*(dx-dy));
    589.  
    590.          int p=((2*dx)-dy);
    591.  
    592.  
    593.  
    594.          int x=x1;
    595.  
    596.          int y=y1;
    597.  
    598.  
    599.  
    600.          putpixel(x,y,color);
    601.  
    602.  
    603.  
    604.          while(y!=y2)
    605.  
    606.         {
    607.  
    608.            y+=inc_dec;
    609.  
    610.  
    611.  
    612.            if(p<0)
    613.  
    614.               p+=two_dx;
    615.  
    616.  
    617.  
    618.            else
    619.  
    620.               {
    621.  
    622.              x++;
    623.  
    624.              p+=two_dx_dy;
    625.  
    626.               }
    627.  
    628.  
    629.  
    630.            putpixel(x,y,color);
    631.  
    632.         }
    633.  
    634.       }
    635.  
    636.     }
    637.  
    638.  
    639.  
    640.  /*************************************************************************/
    641.  
    642.  //--------------------------  show_screen( )  ---------------------------//
    643.  
    644.  /*************************************************************************/
    645.  
    646.  
    647.  
    648.  void show_screen( )
    649.  
    650.     {
    651.  
    652.        setfillstyle(1,1);
    653.  
    654.      bar(182,26,438,38);
    655.  
    656.  
    657.  
    658.        settextstyle(0,0,1);
    659.  
    660.      setcolor(15);
    661.  
    662.        outtextxy(5,5,"******************************************************************************");
    663.  
    664.        outtextxy(5,17,"*-**************************************************************************-*");
    665.  
    666.        outtextxy(5,29,"*--------------------                                  ----------------------*");
    667.  
    668.        outtextxy(5,41,"*-**************************************************************************-*");
    669.  
    670.        outtextxy(5,53,"*-**************************************************************************-*");
    671.  
    672.  
    673.  
    674.      setcolor(11);
    675.  
    676.        outtextxy(189,29,"General Perspective Projection");
    677.  
    678.  
    679.  
    680.      setcolor(15);
    681.  
    682.  
    683.  
    684.        for(int count=0;count<=30;count++)
    685.  
    686.           outtextxy(5,(65+(count*12)),"*-*                                                                        *-*");
    687.  
    688.  
    689.  
    690.        outtextxy(5,438,"*-**************************************************************************-*");
    691.  
    692.        outtextxy(5,450,"*---------------------------                         ------------------------*");
    693.  
    694.        outtextxy(5,462,"******************************************************************************");
    695.  
    696.  
    697.  
    698.      setcolor(12);
    699.  
    700.        outtextxy(227,450,"  Press any key to exit ");
    701.  
    702.     }
    703.  
    704.  
    705.  
    706.  /*************************************************************************/
    707.  
    708.  /*************************************************************************/
    709.  
    710.  //-----------------------------  THE END  -------------------------------//
    711.  
    712.  /*************************************************************************/
    713.  
    714.  /*************************************************************************/
    mình có tìm hiểu và biết rằng trong linux ko có graphic.h. Giờ mình muốn hỏi làm sao để có thể lập trình đồ hoạ trong linux?

    Mình ko cần cao cấp như OpenGL đâu, chỉ làm cái app vẽ vào đường thằng như cái trên thôi.

    Thanks
    Chỉ có thể biết nhiều hay ít, khó có thể biết cho đủ...

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    47

    Bạn thử dùng file tiêu đề graphics.h và file thư viện tĩnh libbgi.a mà mình đính kèm xem. Nhớ là khi biên dịch phải liên kết tĩnh với file thư viện này nhá.
    Tớ cũng chưa thử đâu
    Attached Files Attached Files

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    14

    Code:
    /usr/include/GRAPHICS.H:248: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:250: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:251: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:253: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:254: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:255: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:256: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:257: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:258: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:259: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:261: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:262: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:263: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:264: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:265: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:266: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:267: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:268: error: expected initializer before ‘*’ token
    /usr/include/GRAPHICS.H:269: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:270: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:271: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:272: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:273: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:275: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:276: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:277: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:278: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:279: error: expected initializer before ‘_Cdecl’
    /usr/include/GRAPHICS.H:280: error: expected initializer before ‘_Cdecl’
    Xin lỗi, mình gà quá . Mình paste cả 2 file đó vào /usr/include rồi dùng netBean dịch đoạn code trên thì nó lòi ra một loạt lỗi, mình post thử 1 ít lên đây. Mong mọi người chỉ bào
    Chỉ có thể biết nhiều hay ít, khó có thể biết cho đủ...

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Cài thêm thư viện ncurses.

  5. #5
    Ngày gia nhập
    02 2008
    Bài viết
    14

    Trích dẫn Nguyên bản được gửi bởi Hok_bik_zi Xem bài viết
    Cài thêm thư viện ncurses.
    Đã trót thì trét luôn đi bạn Cài thêm như thế nào bạn Tớ cũng tải thư viện đó về rồi nhưng... chỉ để ngó chứ ko bít xài
    Chỉ có thể biết nhiều hay ít, khó có thể biết cho đủ...

Các đề tài tương tự

  1. Muốn học về Linux để phát triển theo hướng mã nguồn mở trên Linux thì phải làm những gì?
    Gửi bởi vncoder trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 7
    Bài viết cuối: 06-01-2012, 07:58 AM
  2. Linux programming | Chương trình C đầu tiên của bạn trên Linux
    Gửi bởi Kevin Hoang trong diễn đàn Thủ thuật, Tutorials và Mã nguồn
    Trả lời: 12
    Bài viết cuối: 22-11-2010, 03:48 PM
  3. Source code build trên Ubuntu có chạy được Trên Linux Kernel không ?
    Gửi bởi trần trân trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 0
    Bài viết cuối: 03-11-2010, 09:22 AM
  4. Lập trình C trong linux. Cách biên dịch chương trình C trên Linux như thế nào?
    Gửi bởi thangbn trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 5
    Bài viết cuối: 30-05-2009, 11:38 AM
  5. Làm việc với kí tự và chuỗi trong lập trình C trên Linux [Linux Programming]
    Gửi bởi Xcross87 trong diễn đàn Thủ thuật, Tutorials và Mã nguồn
    Trả lời: 4
    Bài viết cuối: 02-10-2007, 11:33 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn