最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言利用EasyX實現繪制足球圖案

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

思路

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

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

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

截圖

源碼

 ///
// 程序名稱:繪制足球
// 編譯環(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];
  // 計算五邊形的五個頂點坐標
  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;
}

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

相關文章

  • C語言數據結構與算法之圖的遍歷(一)

    C語言數據結構與算法之圖的遍歷(一)

    這篇文章主要是介紹了利用深度優(yōu)先算法實現圖的遍歷,文中利用圖文詳細的介紹了實現步驟,對我們學習數據結構與算法有一定的幫助,需要的朋友可以參考一下
    2021-12-12
  • 深入了解C語言中的動態(tài)內存分配

    深入了解C語言中的動態(tài)內存分配

    這篇文章主要為大家詳細介紹了C語言中的動態(tài)內存分配,文中的示例代碼講解詳細,對我們學習C語言有一定的幫助,需要的可以參考一下
    2022-06-06
  • 純C語言:折半查找源碼分享

    純C語言:折半查找源碼分享

    這篇文章主要介紹了純C語言:折半查找源碼,有需要的朋友可以參考一下
    2014-01-01
  • 帶頭結點單鏈表與不帶頭結點單鏈表的區(qū)別

    帶頭結點單鏈表與不帶頭結點單鏈表的區(qū)別

    這篇文章主要介紹了帶頭結點單鏈表與不帶頭結點單鏈表的區(qū)別,需要的朋友可以參考下
    2023-07-07
  • 詳解C++編程中對二進制文件的讀寫操作

    詳解C++編程中對二進制文件的讀寫操作

    這篇文章主要介紹了C++編程中對二進制文件的讀寫操作,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • 用C語言實現三子棋

    用C語言實現三子棋

    這篇文章主要為大家詳細介紹了用C語言實現三子棋,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++中perror和fprintf區(qū)別解析

    C++中perror和fprintf區(qū)別解析

    本文主要對比了C語言中的兩個函數perror和fprintf的區(qū)別,perror主要用于輸出與系統錯誤相關的消息,根據全局變量errno的值生成錯誤信息,而fprintf則用于格式化輸出任意類型的信息到指定的文件流
    2024-10-10
  • c語言?指針零基礎講解

    c語言?指針零基礎講解

    指針是指向另一個變量的變量。意思是一個指針保存的是另一個變量的內存地址。換句話說,指針保存的并不是普通意義上的數值,而是另一個變量的地址值。一個指針保存了另一個變量的地址值,就說這個指針“指向”了那個變量
    2022-02-02
  • C++中指針的詳解及其作用介紹

    C++中指針的詳解及其作用介紹

    這篇文章主要介紹了C++中指針的詳解及其作用介紹,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Qt之簡單的異步操作實現方法

    Qt之簡單的異步操作實現方法

    這篇文章主要介紹了Qt之簡單的異步操作實現方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

沙雅县| 佛坪县| 涟源市| 教育| 高清| 司法| 土默特右旗| 界首市| 江安县| 盐源县| 江川县| 曲水县| 台北县| 华坪县| 当阳市| 巴林左旗| 朔州市| 梁河县| 平顶山市| 伊川县| 安阳市| 柳林县| 思茅市| 固始县| 阜城县| 佛学| 金乡县| 呼玛县| 武邑县| 绥芬河市| 娱乐| 高清| 义乌市| 吴川市| 甘南县| 库尔勒市| 稷山县| 英吉沙县| 嘉禾县| 冷水江市| 南和县|