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

如何停止三维坐标到二维坐标的转换,在另一侧创建“重影”坐标?

金飞翼
2023-03-14

我目前正在将对象的3D坐标转换为2D坐标,然后在它们上绘制2D文本(目前,对象名称):

public static int[] getScreenCoords(double x, double y, double z) {
    FloatBuffer screenCoords = BufferUtils.createFloatBuffer(4);
    IntBuffer viewport = BufferUtils.createIntBuffer(16);
    FloatBuffer modelView = BufferUtils.createFloatBuffer(16);
    FloatBuffer projection = BufferUtils.createFloatBuffer(16);
    GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, modelView);
    GL11.glGetFloat(GL11.GL_PROJECTION_MATRIX, projection);
    GL11.glGetInteger(GL11.GL_VIEWPORT, viewport);
    boolean result = GLU.gluProject((float) (x), (float) y, (float) (z), modelView, projection, viewport, screenCoords);
    if (result) {
        return new int[] { (int) screenCoords.get(0), (int) screenCoords.get(1)};
    }
    return null;
}

这工作正常。名称成功放置在对象上方。

我怎样才能解决这个问题?是否有某种方法可以检测到我是否正在远离它们而不渲染它们?

共有1个答案

沈自珍
2023-03-14

检查屏幕z值的符号screenCoords。获取(2)(看/前方向为负z方向):

...
boolean result = GLU.gluProject((float) (x), (float) y, (float) (z), modelView, projection, viewport, screenCoords);
if (result && screenCoords.get(2) < 0) {
    return new int[] { (int) screenCoords.get(0), (int) screenCoords.get(1)};
}
return null;
 类似资料:
  • 问题内容: 我从http://www.movable-type.co.uk/scripts/latlong.html实现了“轴承”公式。但这似乎非常不准确- 我怀疑我的实现中存在一些错误。您能帮我找到它吗?我的代码如下: 问题答案: 您将括号放在错误的位置。 您正在将度数添加到以弧度为单位的值,这将不起作用。将为您完成从弧度到度的转换, 然后 在获得度值后进行归一化。 你有: 但是您需要: 也请记

  • 功能介绍 坐标转换(Convert)是从一种坐标系统变换到另一种坐标系统的过程,可以通过建立两个坐标系统之间一一对应的关系来实现,是各种比例尺地图测量和编绘中建立地图数学基础必不可少的步骤。坐标转换服务实现了四维高德坐标、百度坐标、搜狗等坐标之间相互转换的功能。 注:该服务不支持将偏移GPS坐标(如:百度坐标、高德坐标等)转换为未偏移GPS坐标。 适用场景 按需实现现有坐标系到需求坐标系之间的转换

  • 实现四维高德坐标、百度坐标、搜狗等坐标之间的转换。注意:不支持将偏移GPS坐标(如:百度坐标、高德坐标等)转换为未偏移GPS坐标。 使用服务前需要先申请 key。 资源服务地址:https://www.supermapol.com/iserver/services/coordconvert/rest/coordinate/convert 资源接口参数说明 坐标转换服务服务支持GET和HEAD请求,

  • 我是否也需要一个相机向上向量,这代表什么? 我在用GLM。

  • 所以我想在10x10坐标系中转换不同支点之间的三个点 想象我想要什么: 这是我的第一个坐标系 翻译成: 现在,这些点必须保持在不同系统之间的同一点上,因此只有这些点的坐标应该更改。首先,我想我应该把之前的原点添加到转换后的坐标中,这对A和B是有效的,但C是不同的,也许我使用了一个错误的公式或其他东西 请你帮帮我

  • 问题内容: 我有一个来自3轴加速度计(XYZ)的300万个数据点的数组,我想向该数组添加3列,其中包含等效的球坐标(r,theta,phi)。以下代码有效,但似乎太慢了。我该如何做得更好? 问题答案: 这类似于Justin Peel的答案,但是使用just并利用其内置的矢量化功能: 请注意,正如注释中所建议,我已经从您的原始功能 更改了仰角的定义 。在使用进行测试的机器上,时间从76秒缩短到3.3