最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

MC 非作弊情況下依靠C語言輔助建造圓形

2022-07-13 10:20 作者:Colomax  | 我要投稿

????????聲明:本人只是一個中考完的初中生。本文介紹的方法應(yīng)該與其他人的方法類似。如有不同方法,歡迎學(xué)術(shù)討論。C語言是初二自學(xué)的,現(xiàn)在忘得差不多了。有錯請糾正。請勿居高臨下地指指點(diǎn)點(diǎn)。

????????我們知道,MC中的坐標(biāo)是以方塊為單位的整數(shù)坐標(biāo)(玩家位移時的坐標(biāo)會有小數(shù)存在,本文忽略不計)。那么,如何在整數(shù)坐標(biāo)中近似地畫出一個連續(xù)不離散的圓?

????????可以將MC的坐標(biāo)看作平面直角坐標(biāo)系,每一個方塊就是坐標(biāo)系上的點(diǎn)。那么,只需要算出圓上所有整數(shù)點(diǎn)的坐標(biāo)就能夠在MC中畫出一個圓。

????????圓的隱函數(shù)可以寫作x%5E2%2By%5E2-r%5E2%3D0%20(有錯請糾正),如果圓心坐標(biāo)知道,設(shè)為(a,b),那么此圓可寫作%EF%BC%88x-a)%5E2%2B(y-b)%5E2-r%5E2%3D0%20.這種方程我們初中并沒有學(xué)過如何解,但是我們可以從中得出,圓可以分成無數(shù)個以圓心為一頂點(diǎn),平行于x軸的線段、平行于y軸的線段為直角邊的直角三角形。據(jù)此,只需要解這個三角形,即可算出來圓上任意點(diǎn)的坐標(biāo)。三角函數(shù)的進(jìn)階計算我們初中還沒有學(xué),于是我使用電腦輔助計算。以下開始施法

????????先上一張圖(幾何畫板不會用)

????????以MC中的x,z為坐標(biāo)軸,任意坐標(biāo)為原點(diǎn)建立如圖的平面直角坐標(biāo)系。之后任意畫一個圓,圓心坐標(biāo)為(x,z)。可以看出,圓上坐標(biāo)表達(dá)方式有四種,那么把圓再分成四個象限。第一象限內(nèi)點(diǎn)坐標(biāo)(x%2Br*%5Csin%20%5Calpha%20%2Cz%2Br%5Cast%20%5Ccos%20%5Calpha%20

第二象限內(nèi)點(diǎn)坐標(biāo)(x-r*%5Csin%20%5Calpha%20%2Cz%2Br%5Cast%20%5Ccos%20%5Calpha%20

第三象限內(nèi)點(diǎn)坐標(biāo)(x-r*%5Csin%20%5Calpha%20%2Cz-r%5Cast%20%5Ccos%20%5Calpha%20

第四象限內(nèi)點(diǎn)坐標(biāo)(x%2Br*%5Csin%20%5Calpha%20%2Cz-r%5Cast%20%5Ccos%20%5Calpha%20

????????由于我用到三角函數(shù),那么角度是必須的。我的思路是,從%5Calpha%20=0開始,不斷迭代一定的角度,算出來r*sin%20%5Calpha%EF%BC%8Cr*%5Ccos%20%5Calpha%20的數(shù)值,之后進(jìn)行四舍五入取整。這里用四舍五入取整并沒有經(jīng)過嚴(yán)謹(jǐn)?shù)淖C明,可能有其他取整方式,歡迎討論(大概率我聽不懂)。

????????有了這些數(shù)據(jù),就可以開始寫程序了。我此處用的是C語言,編譯器為CFree。每次迭代的角度度數(shù)為1度。對于半徑較小的圓來說,這種精度足夠了。但是對于半徑大的圓,就不夠精確了。后續(xù)再講。

????????有點(diǎn)長,里面涉及到的一些算法我有時間再寫專欄解釋(挖坑.jpg)。運(yùn)行結(jié)果如下:

程序運(yùn)行
只是一部分的結(jié)果

????????此程序的精度取決于每次迭代的角度增量。在C語言中,計算三角函數(shù)首先要包含一個<math.h>頭文件,里面提供了三角函數(shù)的計算。需要注意的是,必須先把角度轉(zhuǎn)換成弧度才能帶入計算?;《鹊木葘τ谧罱K結(jié)果有一定影響,但是沒有多大影響,可直接忽略。最主要的影響還是角度。

????????當(dāng)r足夠大的時候,%5Csin%5Calpha%20%EF%BC%8C%20%5Ccos%20%5Calpha%20的角度變化量如果是1度,那么其坐標(biāo)增量將會大于1,具體表現(xiàn)為離散不連續(xù)的坐標(biāo)。如下:

????????

????????本次計算的圓的半徑為1500,角度變化量為1度??梢钥闯觯愠鰜淼淖鴺?biāo),無論是x還是z軸,都是不連續(xù)的。這里以第一象限內(nèi)點(diǎn)的坐標(biāo)為例。如果要使坐標(biāo)連貫,那么相鄰的兩個點(diǎn)的x和z的增量要大于等于0,小于等于1.

0%5Cleq%20r*%5Csin%20(%5Calpha%2B%20x)%5Cleq%2010%5Cleq%20r*%5Ccos%20(%5Calpha%2B%20x)%5Cleq%201.(這里的x為角度變化量,也就是每次迭代的角度)。由于程序是從0度開始迭代,那么出現(xiàn)以下式子:

????????只需要解出上述不等式組即可算出角度變化量的取值范圍。(或許吧,反正我自己還沒有試過)?。等我之后學(xué)到三角函數(shù)再把這個程序改進(jìn)一下(挖坑.jpg)。我的同學(xué)用Lua語言也寫了一個程序,并且加入了圖形顯示。但是目前他的程序還存在一定問題,所以暫不介紹。

????????肯定會有更高級并且嚴(yán)謹(jǐn)?shù)姆椒▉碛嬎銏A上點(diǎn)的坐標(biāo),但是由于我知識水平有限,所以請嘴下留情

????????

MC 非作弊情況下依靠C語言輔助建造圓形的評論 (共 條)

分享到微博請遵守國家法律
双峰县| 玉环县| 翁牛特旗| 班戈县| 丰顺县| 全州县| 汉川市| 共和县| 浑源县| 枣强县| 银川市| 成武县| 天等县| 甘肃省| 南木林县| 大理市| 临猗县| 郴州市| 阆中市| 万州区| 济宁市| 汶川县| 无锡市| 汾阳市| 博爱县| 临汾市| 广昌县| 万荣县| 祁阳县| 密云县| 连州市| 集贤县| 永寿县| 郁南县| 古浪县| 社旗县| 松溪县| 东光县| 志丹县| 铜鼓县| 陵川县|