當笛卡爾變成了極 座標的轉換與應用

2021-10-10 23:32:39 字數 2490 閱讀 3805

大家吼呀

在開始這篇文章之前,我們先來了解一下笛卡爾座標系與極座標系

首先是笛卡爾座標系,也就是我們常說的平面直角座標系,就是用我們常用的[x,y,z]來表示乙個點的位置,這個大家應該都接觸過,在這裡也不多解釋了。

然後是極座標系,這乙個大家在日常接觸到的頻率可能會少一些,極座標系就是用原點(極點),角度(θ)和長度(ρ)來確定乙個點位置的座標系,通常表示為p(ρ,θ),而在標準定義層面,極座標是由極點、極軸和極徑組成的座標系。我們可以把太陽系(俯檢視)比作乙個極座標系來讓大家更好的理解極座標三要素的概念,在太陽系中,如果我們想表示地球所在的位置,我們可以把太陽想象成極點,再已太陽為端點,畫一條經過地球的射線,也就是極軸,而地球和太陽連線所組成的線段就是極徑,極軸可以確定角度,極徑可以確定長度,地球與太陽的相對位置不就出來了?

呢麼,兩種座標係該如何轉化呢?當然要請出我們的三角函式來幫忙了!

x=ρcos(θ)

y=ρsin (θ)

再附上原理圖

眾所周知,在上圖三角形中右上角的點座標為x=對邊長度,y=臨邊長度

然後在即座標系中我們有的資料為斜邊長和角度(θ)

sin(θ)斜邊=對邊/斜邊斜邊=對邊

cos(θ)斜邊=臨邊/斜邊斜邊=臨邊

所以x=ρcos(θ);y=ρsin (θ)

不會真以為我是乙個只講枯燥的理論的人吧

接下來我們將會運用上面的理論,並把它用到遊戲中去

正片開始

首先我們來說一下基本思路

小鍵盤←↑→鍵操控小飛船

←→不是平移,是轉彎

小飛船速度為每幀0.3畫素(相當於每秒18畫素)

運用ege圖形庫

現在來梳理理論:

首先是上下左右鍵的讀取需要用到巨集定義

#define kd(vk_c) (getasynckeystate(vk_c)&0x8000?1:0)if(

kd(vk_left))if

(kd(vk_right))if

(kd(vk_up))if

(kd(vk_down)

)

//真實資料詳見winuser.h的190到350行

然後是移動**

if(左.按下)角度-0.5

if(右.按下)角度+0.5

這裡要注意,當你移動的時候,原點不是乙隻一樣的,是隨著你上一次移動的位置而改變的

if(上.按下) x+=cos(角度)*0.3;y+=sin(角度)*0.3

理論存在,實踐開始:

#include

#include

#include

#define kd(vk_c) (getasynckeystate(vk_c)&0x8000?1:0)

using

namespace std;

struct fo

p1;int

main()

p1.x=

100;

p1.y=

100;

showwindow

(kzt,0)

;for(;

is_run()

;delay_fps

(360))

if(kd(vk_right)

)line

(p1.x+

cos(p1.jiaodu)*-

5,p1.y+

sin(p1.jiaodu)*-

5,p1.x+

cos(p1.jiaodu)*5

,p1.y+

sin(p1.jiaodu)*5

);if(

kd(vk_up)

)outtextxy

(p1.x-

5,p1.y-40,

"↓這是飛船");

}setfont(20

,0,"黑體");

outtextxy

(260

,130

,"按q退出");

sleep(10

);while(1

)if(kd

('q'))

break

;closegraph()

;showwindow

(kzt,1)

;return0;

}

啊對就是這麼簡單

是不是躍躍欲試想要建立自己的有遊戲了呢?

竟然是小飛機,呢當然要加乙個發射子彈的功能了

再稍微加一點美工

加一點敵人

好了遊戲出來了!

空戰領域v3.0

網盤連線提取碼: nkln

飛船向滑鼠移動,按f發射子彈,按d開啟護盾(每一次開啟會減少護盾能量值,撿起地上的護盾可以增加能量值),愛心可以補血,對,就是這樣。

好了這一期就到這裡了,還不點贊支援一下?

笛卡爾 關於笛卡爾

陪孩子看書看到笛卡爾,突然想到了笛卡爾積以及cross join等等,無法忽視的數學之美。關於笛卡爾發明座標系還有這樣乙個故事 有一天,笛卡爾 1596 1650,法國哲學家 數學家 物理學家 生病臥床,但他頭腦一直沒有休息,在反覆思考乙個問題 幾何圖形是直觀的,而代數方程則比較抽象,能不能用幾何圖...

笛卡爾 笛卡爾 解析幾何之父

勒內 笛卡爾,1596年3月31日生於法國安德爾 羅亞爾省的圖賴訥拉海,1650年2月11日逝世於瑞典斯德哥爾摩,是法國著名的哲學家 數學家 物理學家。他是西方近代哲學奠基人之一。他對現代數學的發展做出了重要的貢獻,因將幾何座標體系公式化而被認為是解析幾何之父。他還是西方現代哲學思想的奠基人,是近代...

笛卡爾 變數

笛卡爾的主要數學成果集中在他的 幾何學 中。他提出必須把幾何與代數的優點結合起來,建立一種 真正的數學 笛卡爾的思想核心是 把幾何學的問題歸結成代數形式的問題,用代數學的方法進行計算 證明,從而達到最終解決幾何問題的目的。依照這種思想他創立了我們現在稱之為的 解析幾何學 1637年,笛卡爾發表了 幾...