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.mzph.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在配置反代的后端…

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.实现登录验证的引出 传统…

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 一、完整报错二、错误原因三、解决方法…

微服务: Nacos部署安装与properties配置

Nacos 是阿里巴巴开源的一款用于动态服务发现、配置管理和服务管理的基础设施。Nacos 这个名称源自于 “Dynamic Naming and Configuration Service”。它主要是用于解决微服务架构中服务发现和配置管理的问题。 Nacos 单机模式的部署安装 1. 安装(Windows环境) Nacos是Java…

从入门到深入,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以上的端口&#…

【bazel】快速下载教程

bazel下载链接&#xff1a; https://github.com/bazelbuild/bazel/releases?page11 直接在github上下载&#xff0c;会因为网络不稳定&#xff0c;而频繁下载错误 这里提供一个超级快速的方法&#xff01;&#xff01;&#xff01; 用迅雷下载&#xff01; 1.从github上复…

【力扣 - 每日一题】3115. 质数的最大距离(一次遍历、头尾遍历、空间换时间、埃式筛、欧拉筛、打表)Golang实现

原题链接 题目描述 给你一个整数数组 nums。 返回两个&#xff08;不一定不同的&#xff09;质数在 nums 中 下标 的 最大距离。 示例 1&#xff1a; 输入&#xff1a; nums [4,2,9,5,3] 输出&#xff1a; 3 解释&#xff1a; nums[1]、nums[3] 和 nums[4] 是质数。因此答…

算法系列--分治排序|再谈快速排序|快速排序的优化|快速选择算法

前言:本文就前期学习快速排序算法的一些疑惑点进行详细解答,并且给出基础快速排序算法的优化版本 一.再谈快速排序 快速排序算法的核心是分治思想,分治策略分为以下三步: 分解:将原问题分解为若干相似,规模较小的子问题解决:如果子问题规模较小,直接解决;否则递归解决子问题合…

策略模式的应用

前言 系统有一个需求就是采购员审批注册供应商的信息时&#xff0c;会生成一个供应商的账号&#xff0c;此时需要发送供应商的账号信息&#xff08;账号、密码&#xff09;到注册填写的邮箱中&#xff0c;通知供应商账号信息&#xff0c;当时很快就写好了一个工具类&#xff0…

Python 学习中什么是字典,如何操作字典?

什么是字典 字典&#xff08;Dictionary&#xff09;是Python中的一种内置数据结构&#xff0c;用于存储键值对&#xff08;key-value pair&#xff09;。字典的特点是通过键来快速查找值&#xff0c;键必须是唯一的&#xff0c;而值可以是任何数据类型。字典在其他编程语言中…

vue实现搜索文章关键字,滑到指定位置并且高亮

1、输入搜索条件&#xff0c;点击搜索按钮 2、滑到定位到指定的搜索条件。 <template><div><div class"search_form"><el-inputv-model"searchVal"placeholder"请输入关键字查询"clearablesize"small"style&quo…