Raylib 坐標系

draftx 符號調整為正數

發現采樣坐標系原點0,0 在左上角,正方向 右,下

繪制坐標系 原點0,0 在左下角,正方向 右,上

拖拽可得

?

?


#include <raylib.h>
// 重整原因:解決新函數放大縮小之下,raylib 的網格采樣部分,選擇數組的一部分刷新倒緩沖區里
// 從直接建立緩沖區,到先在數組里進行移動,然后再設置檢查緩沖區int main() {int **map;map = new int*[250];for (int i = 0; i < 250; i++) {map[i] = new int[250];}for (int i = 0; i < 250; i++) {for (int j = 0; j < 250; j++) {
//			測試數據,漸變 25改105 柔和map[i][j] = (j + i) % 105;}}//	初始化窗口InitWindow(1750, 1050, "test for location");
//	設置GPU可以操作的畫布,一定要再初始化窗口之后才行,實際上是OpenGL的上下文,或者說默認環境設置RenderTexture2D mesh = LoadRenderTexture(750 + 30 * 2, 750 + 30 * 2);
//	設置幀率SetTargetFPS(160);
//		設置默認繪制到meshBeginTextureMode(mesh);for (int i = 0; i < 25; i++) {for (int j = 0; j < 25; j++) {
//				繪制矩形,原點(0,0)在左下角,現在是從左下角一行一行往上繪制if (i == 0 || j == 0 || i == 24 || j == 24) {DrawRectangle(j * 30, i * 30, 30, 30, {0, 255, 255, 255});} else  {DrawRectangle(j * 30, i * 30, 30, 30, {map[i][j] * 5 % 255, map[i][j] * 5 % 255, 255, 255});}}}
//		取消繪制的GPU畫布EndTextureMode();
//		設置默認繪制到桌面BeginDrawing();
//		黑色覆蓋全部屏幕ClearBackground(BLACK);DrawTexturePro(mesh.texture, {0, 0, 750, 750}, {0, 0, 750, 750}, {0, 0}, 0, WHITE);
//		結束繪制的桌面EndDrawing();int mousex;int mousey;mousex = 0;mousey = 0;float camerasize;camerasize = 1;
//	拖拽int draftflag;int draftx;int drafty;int gamex;int gamey;
//	記錄長按時,鼠標按下去的位置,減出長按拖拽距離int oldx;int oldy;draftflag = 0;draftx = 0;drafty = 0;gamex = 0;gamey = 0;//	記錄bkmeshmap 網格,用于出界刷新int bkmeshmapi;int bkmeshmapj;int bkmeshmapmaxi;int bkmeshmapmaxj;bkmeshmapi = 0;bkmeshmapi = 0;bkmeshmapmaxi = 25 + 2;bkmeshmapmaxj = 25 + 2;//	拖拽邊界int limitright;int limitleft;int limittop;int limitbottom;//	坐標系變化,現在是在底部進行,左下角是0,0原點limitright = 25 * 30 + 30 * 2;limitleft = 0;limittop = 25 * 30 + 30 * 2;limitbottom = 0;//	這里開始主循環while (!WindowShouldClose()) {
//		注意是pressed 不是 Downif (IsMouseButtonPressed(MOUSE_BUTTON_RIGHT)) {draftflag = 1;oldx = GetMouseX();oldy = GetMouseY();}if (draftflag == 1) {mousex = GetMouseX();mousey = GetMouseY();draftx = gamex - (mousex - oldx) / camerasize;drafty = gamey - (mousey - oldy) / camerasize;}if (IsMouseButtonUp(MOUSE_BUTTON_RIGHT)) {draftflag = 0;oldx = 0;oldy = 0;gamex = draftx;gamey = drafty;}if (draftx < limitleft && draftx > 30) {bkmeshmapj - 1;limitleft -= 30;} else if (draftx > limitright + bkmeshmapi * 30 && draftx < 250 * 30 - 750 - 30) {bkmeshmapj + 1;limitright += 30;}if (drafty < limitbottom && drafty > 30) {bkmeshmapj - 1;limittop -= 30;} else if (draftx > limittop && drafty < 250 * 30 - 750 - 30) {bkmeshmapj + 1;limitbottom += 30;}//		設置默認繪制到meshBeginTextureMode(mesh);for (int i = 0; i < 25 + 2; i++) {for (int j = 0; j < 25 + 2; j++) {
//				繪制矩形,原點(0,0)在左下角,現在是從左下角一行一行往上繪制if (map[i][j] == 266) {DrawRectangle(j * 30, i * 30, 30, 30, {255, 0, 255, 255});} else {DrawRectangle(j * 30, i * 30, 30, 30, {map[i + bkmeshmapi][j + bkmeshmapj] * 5 % 255, map[i + bkmeshmapi][j + bkmeshmapj] * 5 % 255, 255, 255});}DrawRectangle(0, 0, 50, 50, {154, 154, 154, 255});
//				繪制坐標系是左下角0,0)y正方向向上}}
//		取消繪制的GPU畫布EndTextureMode();
//		設置默認繪制到桌面BeginDrawing();
//		黑色覆蓋全部屏幕ClearBackground(BLACK);
//		采樣坐標系是左上角0,0,y軸正方向向下DrawTexturePro(mesh.texture, {draftx - bkmeshmapi * 30, drafty - bkmeshmapj * 30, 750 / camerasize, 750 / camerasize}, {0, 0, 750, 750}, {0, 0}, 0, WHITE);DrawText(TextFormat("mouseV1 %.0f,%.0f", GetMousePosition().x, GetMousePosition().y), 35, 12, 30, BLUE);DrawText(TextFormat("mouseV2 %.0f,%.0f", GetMousePosition().x, 750 - GetMousePosition().y), 35, 62, 30, BLUE);DrawText(TextFormat("draftxyV2 %d,%d", draftx, drafty), 35, 152, 30, RED);DrawText(TextFormat("camerasize %f", camerasize), 35, 192, 30, BLACK);
//		結束繪制的桌面EndDrawing();}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40921.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40921.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

當需要對多個表進行聯合更新操作時,怎樣確保數據的一致性?

文章目錄 一、問題分析二、解決方案三、示例代碼&#xff08;以 MySQL 為例&#xff09;四、加鎖機制示例五、測試和驗證六、總結 在數據庫管理中&#xff0c;經常會遇到需要對多個表進行聯合更新的情況。這種操作帶來了一定的復雜性&#xff0c;因為要確保在整個更新過程中數據…

為什么需要服務器?服務器可以做些什么

目錄 一、服務器和電腦的區別二、什么是SSH三、什么是免密碼登錄四、服務器如何實現SSH免密碼登錄 一、服務器和電腦的區別 服務器和電腦是兩種不同類型的計算機系統&#xff0c;它們在設計、功能和用途上存在明顯的區別。首先&#xff0c;從硬件配置上看&#xff0c;服務器通…

vb.netcad二開自學筆記3:啟動與銷毀

Imports Autodesk.AutoCAD.ApplicationServicesImports Autodesk.AutoCAD.EditorInputImports Autodesk.AutoCAD.RuntimePublic Class WellcomCADImplements IExtensionApplicationPublic Sub Initialize() Implements IExtensionApplication.InitializeMsgBox("net程序已…

JDK都出到20多了,你還不會使用JDK8的Stream流寫代碼嗎?

目錄 前言 Stream流 是什么&#xff1f; 為什么要用Steam流 常見stream流使用案例 映射 map() & 集合 collect() 單字段映射 多字段映射 映射為其他的對象 映射為 Map 去重 distinct() 過濾 filter() Stream流的其他方法 使用Stream流的弊端 前言 當你某天看…

基于深度學習LightWeight的人體姿態檢測跌倒系統源碼

一. LightWeight概述 light weight openpose是openpose的簡化版本&#xff0c;使用了openpose的大體流程。 Light weight openpose和openpose的區別是&#xff1a; a 前者使用的是Mobilenet V1&#xff08;到conv5_5&#xff09;&#xff0c;后者使用的是Vgg19&#xff08;前10…

公務員考試、事業編考試、教師資格證、面試、K12資料、電子書

點擊上方△騰陽 關注 作者 l 騰陽 轉載請聯系授權 你好&#xff0c;我是騰陽。 在這個自媒體的海洋里&#xff0c;我曾是一只迷失方向的小鳥&#xff0c;多次嘗試飛翔卻總是跌跌撞撞。 但每一次跌倒&#xff0c;都讓我更堅定地相信&#xff0c;只要不放棄&#xff0c;總…

【Unity2D 2022:Particle System】添加命中粒子特效

一、創建粒子特效游戲物體 二、修改粒子系統屬性 1. 基礎屬性 &#xff08;1&#xff09;修改發射粒子持續時間&#xff08;Duration&#xff09;為1s &#xff08;2&#xff09;取消勾選循環&#xff08;Looping&#xff09; &#xff08;2&#xff09;修改粒子存在時間&…

2024全網最全面及最新且最為詳細的網絡安全技巧五 之 SSRF 漏洞EXP技巧,典例分析以及 如何修復 (上冊)———— 作者:LJS

五——SSRF漏洞 EXP技巧&#xff0c;典例分析以及 如何修復 目錄 五——SSRF EXP技巧&#xff0c;典例分析以及 如何修復 5.1Apache mod_proxy SSRF&#xff08;CVE-2021-40438&#xff09;的一點分析和延伸 0x01 Apache Module綜述 0x02 漏洞原理分析 Apache在配置反代的后端…

Vue的學習之生命周期

一、生命周期 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>Vue的學習</title><script src"vue.js" type"text/javascript" charset"utf-8"></script></head>&l…

C#如何從中級進階到高級開發

從中級C#開發進階到高級開發&#xff0c;需要深入理解和掌握更復雜的技術和架構&#xff0c;同時培養解決問題的能力和創新思維。以下是一些關鍵的技能和步驟&#xff0c;可以幫助你從中級向高級開發邁進&#xff1a; 1. 深入理解C#語言特性 泛型&#xff1a;熟練使用泛型提高…

Java實現登錄驗證 -- JWT令牌實現

目錄 1.實現登錄驗證的引出原因 2.JWT令牌2.1 使用JWT令牌時2.2 令牌的組成 3. JWT令牌&#xff08;token&#xff09;生成和校驗3.1 引入JWT令牌的依賴3.2 使用Jar包中提供的API來實現JWT令牌的生成和校驗3.3 使用JWT令牌驗證登錄3.4 令牌的優缺點 1.實現登錄驗證的引出 傳統…

強化Linux系統安全性:從基礎命令到高級管理

強化Linux系統安全性&#xff1a;從基礎命令到高級管理 引言 在網絡安全領域&#xff0c;Linux系統因其穩定性和安全性而廣受歡迎。作為一名網絡安全專家&#xff0c;我將分享如何通過Linux基礎命令和高級管理技巧來加強系統的安全性。本文將基于《學神 IT 教育》提供的Linux…

Debezium報錯處理系列之第110篇: ERROR Error during binlog processing.Access denied

Debezium報錯處理系列之第110篇:ERROR Error during binlog processing. Last offset stored = null, binlog reader near position = /4 Access denied; you need at least one of the REPLICATION SLAVE privilege for this operation 一、完整報錯二、錯誤原因三、解決方法…

python 切入點(EntryPoints)使用

文章目錄 EntryPoints 介紹EntryPoints案例EntryPoints 介紹 官網參考 EntryPoints 是發布的python 項目的一種機制,可以提供對自身項目的切入點,供其他項目代碼使用。在python環境中可以通過importlib.metadata.entry_points 函數發現所有的切入點插件,并在代碼中加載、調…

08_排序

基本概念與分類 假設含有n個記錄的序列為 { r 1 , r 2 , . . . , r n } \{r_1,r_2,...,r_n\} {r1?,r2?,...,rn?}&#xff0c;其相應的關鍵字分別為 { k 1 , k 2 , . . . , k n } \{k_1,k_2,...,k_n\} {k1?,k2?,...,kn?}&#xff0c;需確定1&#xff0c;2&#xff0c;…&…

微服務: Nacos部署安裝與properties配置

Nacos 是阿里巴巴開源的一款用于動態服務發現、配置管理和服務管理的基礎設施。Nacos 這個名稱源自于 “Dynamic Naming and Configuration Service”。它主要是用于解決微服務架構中服務發現和配置管理的問題。 Nacos 單機模式的部署安裝 1. 安裝(Windows環境) Nacos是Java…

Java線程基礎知識總結

基礎概念 Java 線程是并發編程的基礎&#xff0c;涉及到線程的創建、管理、同步以及通信。理解和掌握線程的使用對于編寫高效和響應快速的應用程序至關重要。 1. 線程基礎 線程是程序中的執行流。每個Java程序至少有一個線程 — 主線程&#xff08;main&#xff09;。通過使…

從入門到深入,Docker新手學習教程

編譯整理&#xff5c;TesterHome社區 作者&#xff5c;Ishaan Gupta 以下為作者觀點&#xff1a; Docker 徹底改變了我們開發、交付和運行應用程序的方式。它使開發人員能夠將應用程序打包到容器中 - 標準化的可執行組件&#xff0c;將應用程序源代碼與在任何環境中運行該代碼…

InspireFace-商用級的跨平臺開源人臉分析SDK

InspireFace-商用級的跨平臺開源人臉分析SDK InspireFaceSDK是由insightface開發的?款?臉識別軟件開發?具包&#xff08;SDK&#xff09;。它提供了?系列功能&#xff0c;可以滿?各種應?場景下的?臉識別需求&#xff0c;包括但不限于閘機、?臉?禁、?臉驗證等。 該S…

ubuntu22 sshd設置

專欄總目錄 一、安裝sshd服務 sudo apt updatesudo apt install -y openssh-server 二、配置sshd 使用文本編輯器打開/etc/ssh/sshd_config sudo vi /etc/ssh/sshd_config &#xff08;一&#xff09;配置sshd服務的偵聽端口 建議將ssh的偵聽端口改為7000以上的端口&#…