• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Python繪制標(biāo)準(zhǔn)國旗

      2021-08-25 09:30:13王德貴
      電腦報 2021年26期
      關(guān)鍵詞:銳角五角星五星

      王德貴

      我們曾經(jīng)用Python繪制了黨旗,也用Scratch繪制過國旗。不過在Python中繪制標(biāo)準(zhǔn)國旗并不簡單,我們采用的方法在數(shù)學(xué)上稱為解析法。

      一、準(zhǔn)備工作

      1.國旗標(biāo)準(zhǔn)圖案及分析

      把整個國旗換成直角坐標(biāo)系,中心坐標(biāo)為(0,0)。每個小格邊長20,則國旗左上角坐標(biāo)為(-300,200),國旗長600、高400。五星所在的區(qū)域為第二象限,橫坐標(biāo)為負,縱坐標(biāo)為正。

      大五星是正立放置的,而4顆小五星則是頂點中心軸線正對著大五星的中心,即是大五星中心、小五星中心和小五星頂點在一條直線上,而且上下1、4兩顆和右側(cè)2、3兩顆是關(guān)于第五個橫格對稱的。

      2.五星的坐標(biāo)及相關(guān)參數(shù)

      設(shè)定坐標(biāo)的標(biāo)度為每個小格20,大五星的中心坐標(biāo)為(-200,100),半徑60,頂點坐標(biāo)為(-200,160)。

      小五星的半徑為20。4個小五星中心坐標(biāo)分別為(-100,160)、(-60,120)、(-60,60)、(-100,20)。

      大五星頂點中心正上方,橫向長度為0,縱向為3。小五星對應(yīng)大五星中心相對橫縱長度(x,y)分別為(5,3)、(7,1)、(7,-2)、(5,-4)。負值表示在相對中心的下方。

      3.三角函數(shù)及反三角函數(shù)

      小五星的頂點要正對著大五星的中心,所以需要知道小五星頂點中心軸的方向角。具體算法從略,我在源代碼中做了簡單的注釋。

      二、程序設(shè)計

      1.導(dǎo)入Turtle庫和Math庫

      Turtle是小海龜繪圖庫,Math是數(shù)學(xué)庫,我們要用到里面的三角函數(shù)和反三角函數(shù),以及圓周率pi值。from導(dǎo)入方法能使程序簡化一點,詳細作用請參考其他資料。

      2.國旗外圍框

      3.大五星

      大五星的起始點,我們能最準(zhǔn)確得到的,就是上面的頂點,坐標(biāo)為(-300,200),其他頂點均不是整數(shù)。這個頂點要畫五角星,需要向斜下方開始畫,我們使用絕對角度setheading()設(shè)置小海龜?shù)姆较颉?p>

      大五星的直徑為120,頂角為360,綠色直角三角形中,斜邊是直徑,上側(cè)銳角為180(藍色箭頭所指),所以移動的步數(shù)為直角三角形中180角的鄰邊,即120*cos(18*pi/180),這里注意18度角要轉(zhuǎn)換為弧度制,所以要乘以π,除以180。Turtle運動方向為圖中白色箭頭方向。

      4.四個小五星

      (1)1號小五星中心相對大五星中心,橫x=5格,縱y=3格,那么這個銳角的正切值tanA=y/x=3/5,數(shù)學(xué)上這個銳角的大小為arctan3/5,右轉(zhuǎn)18度角,才是白色線用箭頭所指方向。

      在Python中有兩個反正切函數(shù),atan(x)和atan2(y,x),它倆的區(qū)別在于,第一個函數(shù)只需要一個參數(shù),比如atan(3/5),而第二個函數(shù)需要兩個參數(shù)atan2(3,5)。那么它們的區(qū)別在哪里呢?就是正切函數(shù)的定義域問題,90度時,正切值沒有意義,即atan(3/0)沒有意義,不能返回90度角度值,而atan2(3,0)能返回90度值。因而我們使用第二個函數(shù)求解。

      由于海龜起始角度很難計算,因而使用絕對角度setheading(),這樣就能準(zhǔn)確地計算海龜?shù)姆较颉?/p>

      (2)其他2、3、4號五星和1號五星類似,就是起始位置和相對大五星中心和橫縱長度不同,因而程序就具有重復(fù)性,我們可以將重復(fù)性的代碼封裝起來,每次畫五星調(diào)用它就可以了,這就是自定義函數(shù)。

      5.自定義函數(shù)

      畫小五星需要五角星的中心坐標(biāo)、外接圓半徑和所畫五角星相對大五星中心的橫縱長度。因而封裝的函數(shù),需要這5個參數(shù)。

      三、整體測試

      1.更新程序并測試

      通過大五星和1號小五星調(diào)用自定義函數(shù)進行反復(fù)測試。

      2.完成全部代碼

      測試成功后補全其他小五星參數(shù)。設(shè)置速度,可以利用(speed())函數(shù),速度值從 1 到 10,畫線和海龜轉(zhuǎn)向的動畫效果逐級加快。

      3.總結(jié)

      本以為很簡單的程序,沒想到涉及了不少三角函數(shù)的相關(guān)知識,在Turtle坐標(biāo)的定義和高中數(shù)學(xué)是完全一致的。這更有助于學(xué)生的學(xué)習(xí)。

      猜你喜歡
      銳角五角星五星
      La preservación del tejido de seda tradicional
      建德五星
      中國自行車(2022年6期)2022-10-29 02:05:38
      拼五角星
      巧擺五角星
      守護那抹“五星紅”
      銳角尋親記
      “好玩”的五角星
      銳角三角形有幾個銳角
      一群人的狂歡
      五星花
      讀寫算(上)(2016年3期)2016-11-07 07:19:23
      湘西| 柳江县| 盐源县| 马尔康县| 泊头市| 公安县| 鲜城| 白水县| 宿迁市| 靖安县| 阳城县| 天津市| 蓝山县| 大悟县| 交城县| 合作市| 邯郸县| 定远县| 宜城市| 门头沟区| 西藏| 逊克县| 隆化县| 且末县| 竹溪县| 府谷县| 屏东县| 辉南县| 丽江市| 包头市| 湟中县| 灌阳县| 白沙| 湘西| 安图县| 永年县| 团风县| 恩平市| 汽车| 南城县| 苏尼特左旗|