标签: coordinates

如何在Firefox中获取自己的光标坐标?

我正在设计一个网站,只是意识到如果我知道自己的光标坐标会对我有很大的帮助.

我主要使用Firefox来预览新页面.所以Firefox的附加组件会很棒.我检查了Firebug,但没有找到那里的功能.

有谁知道如何在Firefox中显示当前光标坐标?

html firefox firebug mouse-coordinates coordinates

11
推荐指数
1
解决办法
3万
查看次数

使用窗口/视口翻转QPainter y轴

我正在使用Qt 4.7 QPainter将一些多边形等绘制到一个小部件中.我希望改变坐标系,使得(0,0)位于我的小部件的中心,并且x/y轴以标准的"笛卡尔"方式运行(即,y增加"向上"并且减少"下").换句话说,如果你知道我的意思,我希望坐标是"数学" - 而不是"计算机图形".:-)

我正在尝试使用setViewport()和setWindow()而不是自己做数学,因为能够直接用我的坐标调用draw方法会很好.

这是我到目前为止所得到的:

// Setup coordinates
double screenWidth = width();
double screenHeight = height();

double windowWidth = 100.0;
double windowHeight = (screenHeight / screenWidth) * windowWidth;

painter.setViewport(0, 0, screenWidth, screenHeight);
painter.setWindow(-(windowWidth / 2.0), -(windowHeight / 2.0), windowWidth, windowHeight);

// Draw stuff
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::blue);
painter.drawRect(-10, -10, 20, 20);
Run Code Online (Sandbox Code Playgroud)

现在这个工作得很好,因为它在屏幕中间绘制了一个漂亮的蓝色方块.问题是,我不得不说左上角是(-10,-10).我希望能够制作它(-10,10),因为它就像笛卡尔坐标一样.

我试着搞乱setWindow/setViewport以获得这个"y轴翻转",但无济于事.这似乎是一个非常容易/基本的事情,但在搜索Qt文档和网络后,我无法弄明白!

谢谢,
克里斯

graphics qt qt4 coordinates qpainter

11
推荐指数
2
解决办法
9464
查看次数

将小数点坐标转换为度,分,秒,方向

到目前为止,我有以下内容,但是如果没有一堆凌乱的if语句,就无法找到一个整齐的方法来获取方向字母.有任何想法吗?理想情况下,我想使用类别扩展CLLocation类来执行此操作.

-(NSString *)nicePosition{

double latitude = [self.latitude doubleValue];
double longitude = [self.longitude doubleValue];

int latSeconds = (int)round(latitude * 3600);
int latDegrees = latSeconds / 3600;
latSeconds = abs(latSeconds % 3600);
int latMinutes = latSeconds / 60;
latSeconds %= 60;

int longSeconds = (int)round(longitude * 3600);
int longDegrees = longSeconds / 3600;
longSeconds = abs(longSeconds % 3600);
int longMinutes = longSeconds / 60;
longSeconds %= 60;

//TODO: Use N,E,S,W notation in lat/long

return [NSString stringWithFormat:@"%i° %i' %i\", %i° %i' %i\"", latDegrees, …
Run Code Online (Sandbox Code Playgroud)

objective-c coordinates degrees cllocation ios

11
推荐指数
2
解决办法
1万
查看次数

找到共线之间的重叠

给定两条共线线段AB和CD,如何找到它们是否重叠?如何找到重叠的起点和终点?

以下是我正在使用的方法.我首先确保A <B和C <D.

if(pa < pc){
  if(pc < pb){
    if(pd < pb){
      //  overlap exists; CD falls entirely within AB
    }
    else {
      //  overlap exists; CB is the overlapping segment
    }
  }
  else {
    //  no overlap exists; AB lies before CD
  }
}
else {
  if(pa < pd){
    if(pb < pd){
      //  overlap exists; AB lies entirely within CD
    }
    else {
      //  overlap exists; AD is the overlapping segment
    }
  }
  else {
    //  no overlap …
Run Code Online (Sandbox Code Playgroud)

algorithm geometry coordinates line-segment computational-geometry

11
推荐指数
1
解决办法
6199
查看次数

libgdx坐标系渲染和触摸输入之间的差异

我有一个呈现PNG图像的屏幕(BaseScreen实现了Screen界面).单击屏幕时,它会将角色移动到触摸位置(用于测试目的).

public class DrawingSpriteScreen extends BaseScreen {
    private Texture _sourceTexture = null;
    float x = 0, y = 0;

    @Override
    public void create() {
        _sourceTexture = new Texture(Gdx.files.internal("data/character.png"));
    }

    .
    .
}
Run Code Online (Sandbox Code Playgroud)

在渲染屏幕期间,如果用户触摸屏幕,我抓住触摸的坐标,然后使用这些来渲染角色图像.

@Override
public void render(float delta) {
    if (Gdx.input.justTouched()) {
        x = Gdx.input.getX();
        y = Gdx.input.getY();
    }

    super.getGame().batch.draw(_sourceTexture, x, y);
}
Run Code Online (Sandbox Code Playgroud)

问题是从左下角开始绘制图像的坐标(如LibGDX Wiki中所述),触摸输入的坐标从左上角开始.所以我遇到的问题是我点击右下角,它将图像移动到右上角.我的坐标可能是X 675 Y 13,触摸时它将靠近屏幕顶部.但是角色显示在底部,因为坐标从左下角开始.

为什么是这样的?为什么坐标系会反转?我使用错误的对象来确定这个吗?

java coordinates game-engine libgdx

11
推荐指数
2
解决办法
2万
查看次数

在Objective-C(OS X)中,Quartz Display Services使用的"全局显示"坐标空间与Cocoa的"屏幕"坐标空间相同吗?

我正在尝试为我的应用程序创建一个图像"放大镜",可以用来检查不同放大倍数的图像,我遇到了一些路障.我正在使用Quartz创建CGImageRef我的应用程序窗口所在的显示的选定部分的快照.问题是,所有不同OS X技术使用的命名法让我非常困惑.

我正在使用的功能是CGDisplayCreateImageForRect(CGDirectDisplayID display, CGRect rect).文档说明CGRect rect参数是"在显示空间中指定的矩形,用于复制到图像中的显示部分".问题是,我在控制台中获得的输出并不是我所期望的.我已经尝试了很多不同的转换,转换,协调翻转等等,我现在已经100%困惑了.

所以,我想我的问题归结为:屏幕空间==设备空间==显示空间,以及如何正确转换他或她的视图框架(恰好是自定义无边框窗口)坐标(左下角) )匹配显示器的坐标(左上角原点)?

如果有人能指引我,或指出我正确的方向,我会永远感激.谢谢!

macos cocoa objective-c quartz-graphics coordinates

11
推荐指数
1
解决办法
1945
查看次数

如何格式化GPS经度和纬度?

在android(java)中,当你使用函数getlatitude()等获得当前纬度和经度时,你得到十进制格式的坐标:

纬度:24.3454523经度:10.123450

我想把它变成度数和小数分钟看起来像这样:

纬度:40°42'51"N经度:74°00'21"W

formatting gps android coordinates

11
推荐指数
4
解决办法
3万
查看次数

这个算法将坐标映射到称为的数字是什么?

我正在编写一个用于可视化晶体的程序.作为程序的一部分,我必须在晶格结构中生成所有不同的基本点.对于那些不熟悉晶体学的人,你可以在这里找到这些结构最常见的例子:https://en.wikipedia.org/wiki/Hermann%E2%80%93Mauguin_notation#Lattice_types

问题是我想跟踪所有这些要点.所以我给了他们一个号码.我正在尝试使用笔和纸,并找到了一个很好的算法,通过以二进制形式写出来将坐标(2D或3D)与数字(以及相反的方式)连接起来.

因此,如果您想要,例如,2D中的简单立方晶格,并且您想知道第14点的坐标,您可以将此二进制数写为001110.您将数字分为00 | 11 | 10,其中最多右边的部分代表(x,y)*1,中间部分代表(x,y)*2,左边的部分代表(x,y)*4(对于数字14来说没用,只是为了制作一切清除)等等.所以数字14映射到点(3,2).

一个简单的C++程序,用于生成前50个int的坐标:

int x, y;

for (int n = 0; n < 50; n++)
{
    x = 0;
    y = 0;

    bitset<16>  nset(n);

    for (int i = 0; i < 16/2; i++)
    {
        x+=(nset[2*i]*pow(2.,i));
        y+=(nset[2*i+1]*pow(2.,i));
    }

    cout  << n << "\t" << x << "\t" << y << endl;
}
Run Code Online (Sandbox Code Playgroud)

我通过为z值保留一个额外的列将此算法扩展为3D,并通过保留第一个或两个列的类型为x + 1/2,y + 1/2,z + 1 /来扩展其他格子类型2个属性,每种格子类型不同.

所以这是我的问题:这个算法是否已存在?它有名字吗?或者这只是二进制数学的一个明显应用?我读了一些关于hashmaps的东西,但这对我来说似乎更有效,至少如果你处理的是整数.

这是我在stackexchange的第一个问题,怀疑我必须在这里或在物理论坛上发布这个问题.或者也许在数学论坛上,因为这是一种R ^ 2-> R双射.如果这个问题不在正确的地方,请纠正我.

algorithm coordinates coordinate-systems coordinate

11
推荐指数
1
解决办法
920
查看次数

在numpy中生成n维坐标数组

假设我有一个函数f,它可以将坐标作为参数并返回一个整数(在这种情况下为f(x)).坐标可以是多维的,并且是列表的形式.我的目标是用两个坐标之间的所有值填充numpy数组.我试图列出所有可能的索引并将其用作矢量化函数的输入.

这是我的2维坐标代码:

import itertools
import numpy


def index_array(lower_corner, upper_corner):
     x_range = range(lower_corner[0], upper_corner[0])
     y_range = range(lower_corner[1], upper_corner[1])
     return numpy.array(list(itertools.product(x_range, y_range)))


print(index_array([2, -2], [5, 3]))
Run Code Online (Sandbox Code Playgroud)

这将返回索引列表,如预期:

[[ 2 -2]
 [ 2 -1]
 [ 2  0]
 [ 2  1]
 [ 2  2]
 [ 3 -2]
 [ 3 -1]
 [ 3  0]
 [ 3  1]
 [ 3  2]
 [ 4 -2]
 [ 4 -1]
 [ 4  0]
 [ 4  1]
 [ 4  2]]
Run Code Online (Sandbox Code Playgroud)

这是我对n维度的尝试:

import itertools
import numpy


def f(x):
    # dummy function …
Run Code Online (Sandbox Code Playgroud)

python iterator numpy coordinates multidimensional-array

11
推荐指数
1
解决办法
1251
查看次数

如何将球面坐标转换为equirectangular投影坐标?

简化的问题

如何将球面坐标(θ,φ)转换为等距矩形投影(也称为"地理投影")的位置(x,y )?

其中:

  • x是经度,水平位置,从-180到180度.
  • y是纬度,垂直位置,从-90到90度.
  • θ是θ,以度为单位的水平角度,从(0,0,0)到球体表面上的点的矢量.
  • φ是phi,垂直角度,从(0,0,0)到球面上的点的矢量.

下面你会找到原来的问题,当我不能很好地理解这个问题时,我认为它仍然有助于展示这个解决方案的实际应用.

上下文

编辑:原始问题标题是:如何以给定角度转换照片成为全景照片的一部分?

如果我想以任何给定角度拍摄照片,以便我可以将得到的(扭曲/变形的)图像放置在等距矩形投影,立方体贴图上的相应特定位置,任何人都可以帮助我采取哪些步骤或任何全景照片投影?

无论哪种投影最容易做到都足够好,因为有很多资源可用于如何在不同的投影之间进行转换.我只是不知道如何从实际照片到这样的投影.

可以安全地假设摄像机将停留在固定位置,并可以从那里向任何方向旋转.我认为需要这样做的数据可能是这样的:

  • 物理相机的水平角度[-180, +180](例如+ 140deg).
  • 物理相机的垂直角度[-90, +90](例如-30度).
  • 照片分辨率w x h(例如1280x720像素).
  • 照片的水平角度(例如70度).
  • 照片的垂直角度(例如40度).
  • 镜头校正a,b,c参数(见下文).

我有这些数据,我想第一步是进行镜头校正,以便所有应该笔直的线条实际上是直的.而这是可以做到用imagemagick桶形畸变的 A,B和C:,在其中您只需要填写三个参数.应用于图像以纠正此问题的转换非常简单.

我坚持下一步.要么我不完全理解它,要么搜索引擎没有帮助我,因为大多数结果都是关于在已经给定的投影之间进行转换,或者使用高级应用程序将照片智能地拼接在一起.这些结果并没有帮助我回答我的问题.

编辑:我想,也许一个数字将有助于更好地解释:)

问题是给定的照片红色不能在没有变换的情况下放入等角矩形投影中.下图说明了这个问题.

带有

所以,我有红色,我需要把它变成绿色.蓝色显示转换的差异,但这取决于水平/垂直角度.

camera projection image-processing coordinates coordinate-systems

11
推荐指数
1
解决办法
8301
查看次数