欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言利用EasyX實現(xiàn)繪制足球圖案

 更新時間:2022年11月23日 14:41:41   作者:編程小魚六六六  
這篇文章主要為大家詳細(xì)介紹了C語言如何利用EasyX繪圖庫實現(xiàn)繪制一個簡單的足球圖案,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

思路

如何使用 C 語言配置EasyX繪圖庫繪制一個足球呢,今天我嘗試了一下,難度還算可以,但是過程比較繁瑣,代碼寫的有些復(fù)雜,后期有興趣的,可以在我的代碼的基礎(chǔ)上進(jìn)行優(yōu)化,用更短的代碼將這個圖形繪制出來。

簡單描述一下這個程序的思路和實現(xiàn)過程。足球是一個由五邊形和六邊形組成的球體。這里我使用一個旋轉(zhuǎn)算法,首先確定一個足球的圓心。然后確定半徑,通過等間距旋轉(zhuǎn),先獲得一個五邊形的坐標(biāo),使用多邊形填充的方式,得到一個填充的五邊形。然后通過同樣的方式,獲取一個十邊形以及二十邊形的坐標(biāo)。然后按照一定規(guī)律連接這些坐標(biāo)點(diǎn)。

以上只是我個人的思路,當(dāng)然有更好的思路可以進(jìn)行計算和繪制,例如足球是個球體,可以使用 EasyX 繪圖庫,通過計算每一個多邊形角點(diǎn)在三維空間中的位置,就可以繪制出一個三維的足球。當(dāng)然這個就需要有一定的數(shù)學(xué)邏輯能力和計算機(jī)圖形學(xué)的知識了。 

截圖

源碼

 ///
// 程序名稱:繪制足球
// 編譯環(huán)境:Mictosoft Visual Studio 2013, EasyX_20200315(beta)
//
 
#include<graphics.h>
#include<math.h>
#include<conio.h>
#define PI acos(-1.0)
 
int main()
{
  initgraph(640, 480);
  setbkcolor(GREEN);
  setlinecolor(BLACK);
  cleardevice();
  setlinestyle(PS_SOLID, 4);
  setfillcolor(WHITE);
  fillcircle(320, 240, 150);    // 繪制一個球形狀
 
  setlinestyle(PS_SOLID, 2);
  POINT pts[5];
  POINT Fpts[5];
  POINT Zpts[5];
  // 計算五邊形的五個頂點(diǎn)坐標(biāo)
  double a = PI / 2;
  for (int i = 0; i < 5; i++)
  {
    pts[i].x = int(320 + cos(a) * 60);
    pts[i].y = int(240 - sin(a) * 60);
 
    Zpts[i].x = int(320 + cos(a) * 100);
    Zpts[i].y = int(240 - sin(a) * 100);
 
    Fpts[i].x = int(320 + cos(a) * 110);
    Fpts[i].y = int(240 - sin(a) * 110);
    a += PI * 2 / 5;
  }
  setlinecolor(BLACK);
  setfillcolor(BLACK);
  solidpolygon(pts, 5);
  for (int i = 0; i < 5; i++)
  {
    line(pts[i].x, pts[i].y, Zpts[i].x, Zpts[i].y);
  }
 
  POINT Spts[10];
  POINT Wpts[20];
  a = PI / 2 + PI / 20;
  for (int i = 0; i < 20; i++)
  {
    Wpts[i].x = int(320 + cos(a) * 150);
    Wpts[i].y = int(240 - sin(a) * 150);
    a += PI * 1 / 10;
  }
  a = PI / 2 + PI / 10;
  for (int i = 0; i < 10; i++)
  {
    Spts[i].x = int(320 + cos(a) * 128);
    Spts[i].y = int(240 - sin(a) * 128);
    a += PI * 1 / 5;
  }
  int P = 9;
  for (int i = 0; i < 5; i++)
  {
    line(Zpts[i].x, Zpts[i].y, Spts[P].x, Spts[P].y);
    P++;
    if (P == 10)
    {
      P = 0;
    }
    line(Zpts[i].x, Zpts[i].y, Spts[P].x, Spts[P].y);
    P++;
  }
  for (int i = 0; i < 9; i++)
  {
    line(Spts[i].x, Spts[i].y, Spts[i + 1].x, Spts[i + 1].y);
    i++;
  }
  int PS = 0;
  for (int i = 0; i < 20; i++)
  {
    if (i % 2 == 0)
    {
      if (PS % 2 == 0)
      {
        line(Wpts[i].x, Wpts[i].y, Spts[i / 2].x, Spts[i / 2].y);
      }
      else
      {
        line(Wpts[i + 1].x, Wpts[i + 1].y, Spts[i / 2].x, Spts[i / 2].y);
      }
      PS++;
    }
  }
  polygon(Wpts, 20);
  setlinestyle(PS_SOLID, 3);
  circle(320, 240, 150);
  setfillcolor(BLACK);
  for (int i = 0; i < 5; i++)
  {
    floodfill(Fpts[i].x, Fpts[i].y, BLACK);
  }
  _getch();
  return 0;
}

到此這篇關(guān)于C語言利用EasyX實現(xiàn)繪制足球圖案的文章就介紹到這了,更多相關(guān)C語言EasyX繪制足球內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言函數(shù)傳遞數(shù)組和傳遞地址的區(qū)別你知道嗎

    C語言函數(shù)傳遞數(shù)組和傳遞地址的區(qū)別你知道嗎

    這篇文章主要介紹了C語言中數(shù)組作為函數(shù)的參數(shù)以及返回值的使用簡單入門,這里以一維數(shù)組作為基本條件進(jìn)行例子講解,需要的朋友可以參考下
    2021-09-09
  • C語言代碼實現(xiàn)三子棋游戲

    C語言代碼實現(xiàn)三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語言代碼實現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C++ 自由存儲區(qū)是否等價于堆你知道嗎

    C++ 自由存儲區(qū)是否等價于堆你知道嗎

    自由存儲是C++中通過new與delete動態(tài)分配和釋放對象的抽象概念,而堆(heap)是C語言和操作系統(tǒng)的術(shù)語,是操作系統(tǒng)維護(hù)的一塊動態(tài)分配內(nèi)存
    2021-08-08
  • C++構(gòu)造函數(shù)+復(fù)制構(gòu)造函數(shù)+重載等號運(yùn)算符調(diào)用

    C++構(gòu)造函數(shù)+復(fù)制構(gòu)造函數(shù)+重載等號運(yùn)算符調(diào)用

    這篇文章主要介紹了C++構(gòu)造函數(shù)+復(fù)制構(gòu)造函數(shù)+重載等號運(yùn)算符調(diào)用,文章敘述詳細(xì),具有一定的的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • C++實現(xiàn)T型插補(bǔ)詳解

    C++實現(xiàn)T型插補(bǔ)詳解

    這篇文章主要介紹了C++實現(xiàn)T型插補(bǔ),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • C++詳解Primer文本查詢程序的實現(xiàn)

    C++詳解Primer文本查詢程序的實現(xiàn)

    這個程序還是比較復(fù)雜的,把這句話作為文章的開頭可以看出它的真實性.....這篇文章主要介紹了文本查詢程序的實現(xiàn),下面我們一起來看看
    2022-06-06
  • C++ 反射機(jī)制詳解及實例代碼

    C++ 反射機(jī)制詳解及實例代碼

    這篇文章主要介紹了C++ 反射機(jī)制詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • c++基礎(chǔ)語法:構(gòu)造函數(shù)與析構(gòu)函數(shù)

    c++基礎(chǔ)語法:構(gòu)造函數(shù)與析構(gòu)函數(shù)

    構(gòu)造函數(shù)用來構(gòu)造一個對象,主要完成一些初始化工作,如果類中不提供構(gòu)造函數(shù),編譯器會默認(rèn)的提供一個默認(rèn)構(gòu)造函數(shù)(參數(shù)為空的構(gòu)造函數(shù)就是默認(rèn)構(gòu)造函數(shù)) ;析構(gòu)函數(shù)是隱式調(diào)用的,delete對象時候會自動調(diào)用完成對象的清理工作
    2013-09-09
  • C++中的字符串編碼處理方法

    C++中的字符串編碼處理方法

    這篇文章主要介紹了C++中的字符串編碼處理,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • c++之time_t和struct tm及時間戳的正確使用方式

    c++之time_t和struct tm及時間戳的正確使用方式

    C++中處理時間的常用數(shù)據(jù)類型有time_t和struct tm,time_t通常用來表示時間戳,即從1970年1月1日至今的秒數(shù),struct tm是一個結(jié)構(gòu)體,用來存儲年、月、日、時、分、秒等信息,時間戳可以通過gmtime()轉(zhuǎn)換為struct tm類型,反之亦然
    2024-10-10

最新評論