当前位置: 首页 > 知识库问答 >
问题:

处理-屏幕到世界坐标函数?

袁弘化
2023-03-14

我正在进行一个处理项目,需要能够确定鼠标是否在圆内。因此,我需要获得圆的位置和鼠标的位置。但是,圆的位置已使用矩阵函数进行了修改,如平移缩放。例如:

float circle_x;
float circle_y;
float circle_radius;

void setup() {
    circle_x = 10.0;
    circle_y = 17.0;
    circle_radius = 15.0;
}

void draw() {
    pushMatrix();

    /* ... arbitrary number of calls to modify the matrix ... */
    translate(THING, THING);
    scale(THING);
    translate(THING);
    /* ... */

    /* draw the circle */
    ellipse(circle_x, circle_y, circle_radius, circle_radius);

    /* now I want to detect whether or not my mouse is inside of the 
       circle.  In order to do that, I need to modify the coordinates
       of the mouse in the same fashion as circle_x and circle_y.  I'm
       hoping to do something like this: */
    float world_x = screenToWorld_X(mouseX);
    float world_y = screenToWorld_Y(mouseY);

    /* ... check if [world_x, world_y] is inside the circle ... */


    popMatrix();

}

在处理中有什么方法可以做到这一点吗?我在看留档,但似乎找不到任何功能。如果没有,我如何实现我的目标?

谢谢。

共有1个答案

闻人冷勋
2023-03-14

查看参考资料的坐标部分。

具体来说,您正在寻找modelX()modelY()函数。或者你也可以使用screenX()screenY()函数将世界坐标转换成屏幕坐标。

 类似资料:
  • 本文向大家介绍Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系,包括了Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系的使用技巧和注意事项,需要的朋友参考一下  cocos2d-x的坐标系很重要,想要学好该引擎,深入理解它的坐标体系很重要。注释写的很清楚了,对照上运行结果一块来看代码吧!

  • 通过前两节课的学习,想必你已经对Threejs的层级模型有了一定认识,那么本节课就在层级模型概念的基础上,继续给家讲解两个新的概念,即本地坐标系和世界坐标系。 如果你对本地坐标系和世界坐标系已经有了一定概念,那么可以直接访问模型的位置属性.position获得模型在本地坐标系或者说模型坐标系下的三维坐标,通过模型的.getWorldPosition()方法获得该模型在世界坐标下的三维坐标。 .ge

  • 问题内容: 我正在努力实现这种转变。给定锚定姿势在arcore中,如何在屏幕中获取其相应的2D坐标? 问题答案: 最终,经过几天的调查并从不同的资源中获取了信息,我才能够使它工作。以下是一个代码片段(基于arcore示例Java应用),用于将World坐标(Arcore中的位姿)转换为2D屏幕坐标: 首先,我们需要计算要从世界->屏幕转换的矩阵: } 一旦有了这个矩阵,就可以将点从3D世界投影到2

  • 我试图根据用户输入的坐标捕捉区域截图。基本上,用户在屏幕上点击得到x,y坐标,然后在其他地方点击另一对x,y坐标,然后将其放入一个矩形中,并使用机器人库创建屏幕截图。 我有的问题是,我得到了随机截图,这不是用户输入的坐标,我怎么能考虑包括0的坐标,因为矩形值必须超过1。 以下是我迄今为止的代码:

  • 对于我的游戏,我需要在两个坐标系之间转换函数。这主要是一道数学题,但我需要的是C代码,以及一些解释如何解决我的问题。 屏幕坐标: a)左上角是0,0 b)无负值 c) 右=x(x值越大,右侧点越多) d) 底部=y 笛卡尔二维坐标: a) 中点为(0,0) b)减去值确实存在 c)右=x d)底部-=y(y越少,底部越点) 我需要一种简单的方法从一个系统转换到另一个系统,反之亦然。要做到这一点,(

  • 我正在使用pyBullet,它是bullet3物理引擎的python包装器,我需要从虚拟相机创建点云。 这个引擎使用基本的OpenGL渲染器,我可以从OpenGL深度缓冲区中获得值 现在我有了具有深度值的Width*Height数组。我怎么能从中得到世界坐标?我试图保存。ply点云和点(width,height,depthBuffer(width,height)),但这并不能创建看起来像场景中对象