fps游戲中如何將矩陣轉換為二維屏幕上的矩形坐標

fps游戲中如何將矩陣轉換為二維屏幕上的矩形坐標

matrix[4][4]: 4x4 矩陣,通常用于3D變換(如模型視圖投影矩陣)。

float* location: 一個指向位置坐標的指針,表示要轉換的3D位置。

int Window_w, int Window_h: 窗口的寬度和高度。

int& x, int& y, int& w, int& h: 引用參數,用于存儲計算得到的矩形的左上角位置和寬高。

bool GameStart::to_RectMatrix(float matrix[4][4], float* location, int Window_w, int Window_h, int& x, int& y, int& w, int& h) {float Target = matrix[2][0] * location[0] + matrix[2][1] * location[1] + matrix[2][2] * location[2] + matrix[2][3];if (Target < 0.01f) {x = y = w = h = 0;return false;}Target = 1.0f / Target;float to_w = Window_w + (matrix[0][0] * location[0] + matrix[0][1] * location[1] + matrix[0][2] * location[2] + matrix[0][3]) * Target * Window_w;float to_h = Window_h - (matrix[1][0] * location[0] + matrix[1][1] * location[1] + matrix[1][2] * (location[2] + 75.0f) + matrix[1][3]) * Target * Window_h;float to_h1 = Window_h - (matrix[1][0] * location[0] + matrix[1][1] * location[1] + matrix[1][2] * (location[2] - 5.0f) + matrix[1][3]) * Target * Window_h;x = (int)(to_w - (to_h1 - to_h) / 4.0f);y = (int)(to_h);w = (int)((to_h1 - to_h) / 2.0f);h = (int)(to_h1 - to_h);return true;
}

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

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

相關文章

工廠模式詳情

一.介紹工廠模式的用途與特點 工廠方法模式是一種創建型設計模式&#xff0c; 其在父類中提供一個創建對象的方法&#xff0c; 允許子類決定實例化對象的類型。定義工廠方法模式(Fatory Method Pattern)是指定義一個創建對象的接口&#xff0c;但讓實現這個接口的類來決定實例…

Python導出Jira列表

import requests import urllib3 urllib3.disable_warnings() from jira import JIRA import pandas as pd def login_jira(username,password):jira JIRA("https://jira.cn/",basic_auth(username,password))#projectsjira.project(id13)# jqlproject"云鏈-…

基于強化學習的控制率參數自主尋優

1.介紹 針對控制建模與設計場景中控制參數難以確定的普遍問題&#xff0c;提出了一種基于強化學習的控制律參數自主優化解決方案。該方案以客戶設計的控制律模型為基礎&#xff0c;根據自定義的控制性能指標&#xff0c;自主搜索并確定最優的、可狀態依賴的控制參數組合。 可…

unity打包的WebGL部署到IIS問題

部署之后會出錯&#xff0c;我遇到的有以下幾種&#xff1b; 進度條卡住不動 明明已經部署到了IIS上&#xff0c;為什么瀏覽網頁的時候還是過不去或者直接報錯。 進度條卡住不動的問題其實就是wasm和data的錯誤。 此時在瀏覽器上按F12進入開發者模式查看錯誤&#xff08;下圖…

前端知識點雜記

本文章用于記錄前端學習中遇到的瑣碎問題及解決方法&#xff0c;歡迎大家一起學習補充~ 前端如何獲取UUID發送至后端&#xff1f; 1. 命令行下載uuid庫 npm install uuid 2. 工程導入uuid庫 import { v4 as uuidv4 } from "uuid"; 3. 使用方法生成uuid實例 co…

付費工具邏輯

1.付費推廣目的&#xff1a; 傳播信息心理暗示&#xff1b;擴大銷售&#xff0c;指導消費&#xff1b;樹立形象&#xff0c;塑道品牌&#xff1b; 2.付費和免費廣告&#xff1a; 付費主要為了增加曝光&#xff1b;免費廣告一般比付費廣告轉化率高&#xff1b; 3.平臺廣告交…

《Kubernetes部署篇:基于麒麟V10+ARM64架構部署harbor v2.4.0鏡像倉庫》

總結&#xff1a;整理不易&#xff0c;如果對你有幫助&#xff0c;可否點贊關注一下&#xff1f; 更多詳細內容請參考&#xff1a;企業級K8s集群運維實戰 一、環境信息 K8S版本 操作系統 CPU架構 服務版本 1.26.15 Kylin Linux Advanced Server V10 ARM64 harbor v2.4.0 二、部…

chrome谷歌瀏覽器開啟Gemini Nano模型

前提 確保您的操作系統語言設置為英語(美國) 可能還需要將 Chrome 瀏覽器的語言更改為英語(美國)。 下載dev或Canary版本Chrome Chrome Canary Chrome Dev 注意:確認您的版本高于 127.0.6512.0。 其中一個Chrome版本不行就切換另外一個版本 繞過性能檢查 Tab輸入: …

中國美業元宇宙-探索美容行業的未來

隨著科技的不斷進步和數字化轉型的深入&#xff0c;元宇宙作為一種全新的虛擬現實交互平臺&#xff0c;正逐漸成為推動多個行業革新的重要力量。在這種背景下&#xff0c;中國美業也在積極擁抱元宇宙&#xff0c;希望通過這一新興技術為傳統美容行業帶來創新與發展。 #### 中國…

結構體相關習題的補充

結構體相關習題的補充 題目1&#xff1a; 如有以下代碼&#xff1a; struct student {int num;char name[32];float score; }stu;則下面的敘述不正確的是&#xff1a;( ) A.struct 是結構體類型的關鍵字 B.struct student 是用戶定義的結構體類型 C.num, score 都是結構體…

正邦科技(day4)

燒錄 一、燒錄固件二、 通訊模塊升級1&#xff1a;USB的方式升級固件2&#xff1a;通過mqtt的方式升級固件3&#xff1a;切換環境 三、 燒錄WiFi1&#xff1a;短接2&#xff1a;燒錄腳本 設備注意事項&#xff1a; 第一種方式&#xff1a;通信模組和MCU都可以統一燒錄BoodLoade…

Oracle Hint /*+APPEND*/插入性能總結

oracle append用法 Oracle中的APPEND用法主要用于提高數據插入的效率。 基本用法&#xff1a;在使用了APPEND選項后&#xff0c;插入數據會直接加到表的最后面&#xff0c;而不會在表的空閑塊中插入數據。這種做法不需要尋找freelist中的free block&#xff0c;從而避免了在…

【計算機畢設】基于Spring Boot的課程作業管理系統 - 源碼免費(私信領取)

免費領取源碼 &#xff5c; 項目完整可運行 &#xff5c; v&#xff1a;chengn7890 誠招源碼校園代理&#xff01; 1. 研究目的 課程作業管理系統旨在為教師和學生提供一個便捷的平臺&#xff0c;用于發布、提交和評定課程作業。本系統旨在提高作業管理的效率&#xff0c;促進教…

Golang反射

文章目錄 基本介紹reflect包reflect.Typereflect.Valuereflect.Kind具體類型、空接口與reflect.Value的相互轉換 反射應用場景修改變量的值訪問結構體的字段信息調用變量所綁定的方法實現函數適配器創建任意類型的變量 基本介紹 基本介紹 在Go中&#xff0c;反射&#xff08;re…

錯誤 0x80070570:文件或目錄損壞且無法讀取/無法訪問[拒絕訪問]-解決方法

1.起因&#xff1a;在挪動&#xff35;盤文件時&#xff0c;出現無法移動的報錯提示&#xff1a; and無法訪問[拒絕訪問]: 2.原因&#xff3b;大多是胡亂拔出&#xff35;盤&#xff3d; &#xff3b;來自0x80070570 文件或目錄損壞且無法讀取 CHKDSK 修復方法-CSDN博客&#…

iOS AVFoundation 音視頻源碼分享

引言 在現代移動開發中&#xff0c;音視頻處理是一個不可忽視的重要領域。iOS 提供了強大的 AVFoundation 框架&#xff0c;使開發者能夠輕松實現音視頻錄制、播放、編輯等功能。無論是創建高效的視頻播放器&#xff0c;還是實現復雜的音頻處理&#xff0c;AVFoundation 都能提…

Leecode---買賣股票最大利潤問題

121—題目&#xff08;只能買賣一次&#xff09;&#xff1a; 給定一個數組 prices &#xff0c;它的第 i 個元素 prices[i] 表示一支給定股票第 i 天的價格。 你只能選擇 某一天 買入這只股票&#xff0c;并選擇在 未來的某一個不同的日子 賣出該股票。設計一個算法來計算你所…

python-pytorch編寫transformer模型實現問答0.5.00--訓練和預測

python-pytorch編寫transformer模型實現問答0.5.00--訓練和預測 背景代碼訓練預測效果背景 代碼寫不了這么長,接上一篇 https://blog.csdn.net/m0_60688978/article/details/139360270 代碼 # 定義解碼器類 n_layers = 6 # 設置 Decoder 的層數 class Decoder(nn.Module)…

【JavaEE進階】——帶你詳細了解Spring日志以及配置日志

目錄 &#x1f6a9;Spring日志的認識 &#x1f6a9;Spring日志的作用 &#x1f6a9;觀察日志 &#x1f6a9;使用日志 &#x1f388;在程序中得到日志對象 &#x1f388;使??志對象輸出要打印的內容 &#x1f6a9;日志框架的介紹 &#x1f388;門面模式(外觀模式&…

Unity實現簡單的第一人稱控制

先看效果 實現方式 1.首先創建一個腳本 2.編輯腳本內容 付上腳本代碼 private float RotationX 0;public float speed 2f;//移動速度// Use this for initializationvoid Start(){Cursor.lockState CursorLockMode.Locked;//鎖定鼠標到中心點Cursor.visible false;//隱藏鼠…