标签: coordinate-transformation

如何在SVG中设置变换原点

我需要使用javascript调整SVG文档中的某些元素并调整其大小.问题是,默认情况下,它始终在(0, 0)左上方的原点周围应用变换.

如何重新定义此变换锚点?

我尝试使用该transform-origin属性,但它不会影响任何东西.

我就这样做了:

svg.getDocumentById('someId').setAttribute('transform-origin', '75 240');
Run Code Online (Sandbox Code Playgroud)

虽然我可以在Firefox中看到属性设置正确,但它似乎没有将关键点设置为我指定的点.我尝试之类的东西center bottom,并50% 100%有和没有括号.到目前为止没有任何工作.

有人可以帮忙吗?

svg coordinate-transformation

90
推荐指数
5
解决办法
8万
查看次数

搅拌机:绕着球体走动

为了理解blender python游戏脚本,我目前尝试使用此链接中的FPSController结构构建一个可以围绕球体行走的场景.对于重力和FPSController方向,我尝试构造一个python控制器,目前看起来像这样:

def main():
    print("Started")

    controller = bge.logic.getCurrentController()
    me = controller.owner

    distance, loc, glob = me.getVectTo((0,0,0))

    grav = controller.actuators['Gravity']

    strength = me['Gravity']
    force = strength*(distance*distance)*glob

    grav.force = force

    try:
        rot = Vector((0,0,-1)).rotation_difference(glob).to_matrix()
    except Exception as E:
        print(E)
        rot = (0,0,0)

    rotZ = me.orientation
    me.orientation = rot*rotZ

    controller.activate(grav)

main()
Run Code Online (Sandbox Code Playgroud)

大致工作,直到任何角度超过180度,然后看起来不连续.我假设这来自rotate_difference是不连续的 - 关于数学类型和实用程序的blender文档没有说什么,我还没有想到四元数表示还没有看到连续映射是否可行 - 我想有更优雅的方式实现局部Z方向是连续的鼠标依赖,而局部X和Y方向依赖于某些给定的向量,但如何?

python blender coordinate-transformation

57
推荐指数
1
解决办法
3120
查看次数

将经度/纬度转换为X/Y坐标

我使用Google Maps API创建了一张地图,突出了所有明尼苏达州的县.基本上,我使用一组经度/纬度坐标创建了县多边形.这是生成的地图的屏幕截图: -

在此输入图像描述

用户要求之一是能够将类似的地图作为图像,以便它们可以将其嵌入到PowerPoint /主题幻灯片中.我找不到任何有用的Google Maps API,它允许我按原样保存我的自定义地图(如果你知道一种方式,请告诉我),所以我想我应该用Java中的Graphics2D绘制它.

在阅读了将经度/纬度转换为X/Y坐标的公式后,我最终得到以下代码: -

private static final int    EARTH_RADIUS    = 6371;
private static final double FOCAL_LENGTH    = 500;

...

BufferedImage bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();

for (Coordinate coordinate : coordinates) {
    double latitude = Double.valueOf(coordinate.getLatitude());
    double longitude = Double.valueOf(coordinate.getLongitude());

    latitude = latitude * Math.PI / 180;
    longitude = longitude * Math.PI / 180;

    double x = EARTH_RADIUS * Math.sin(latitude) * Math.cos(longitude);
    double y = EARTH_RADIUS * Math.sin(latitude) * Math.sin(longitude); …
Run Code Online (Sandbox Code Playgroud)

java google-maps latitude-longitude cartesian coordinate-transformation

38
推荐指数
3
解决办法
5万
查看次数

如何使笔画宽度不受当前转换矩阵的影响

在SVG(和Canvas,Quartz,Postscript,...)中,变换矩阵影响路径坐标和线宽.有没有办法进行调整,以便线宽不受影响?也就是说,在下面的例子中,X和Y的比例是不同的,这使得正方形成为一个矩形,这是正常的,但它也使得两边的线条更宽.

  <g transform="rotate(30) scale(5,1) ">
      <rect x="10" y="10" width="20" height="20" 
            stroke="blue" fill="none" stroke-width="2"/>
  </g>
Run Code Online (Sandbox Code Playgroud)

矩形宽度缩放笔

我可以看到这在许多情况下都很有用,但有没有办法选择退出呢?我想我想要一个单独的笔TM或者能够将笔设置为CTM转换为圆形的椭圆,但我没有看到类似的东西.

缺乏这一点,我想我不得告诉SVG关于我的CTM而是自己转换坐标,这意味着将基元转换rect成它们的path等价物.

svg postscript coordinate-transformation

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

如何从旋转/平移/比例值计算SVG变换矩阵?

我有以下细节:

<g transform="translate(20, 50) scale(1, 1) rotate(-30 10 25)">
Run Code Online (Sandbox Code Playgroud)

需要将以上行更改为:

<g transform="matrix(?,?,?,?,?,?)">
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我实现这个目标吗?

svg coordinate-transformation

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

从设备的坐标系加速到绝对坐标系

从我的Android设备,我可以读取一系列线性加速度值(在设备的坐标系中)和一组绝对方向值(在地球坐标系中).我需要的是获得后一个坐标系中的线性加速度值.系统.

我该怎么转换它们?

在Ali回复评论后编辑:

好吧,所以如果我理解正确的话,当我测量线性加速度时,手机的位置完全没关系,因为读数是在地球坐标系中给出的.对?

但我刚做了一个测试,我把手机放在不同的位置,并在不同的轴上加速.有3对图片 - 第一部分显示我如何放置设备(对不起我的Paint"掌握技能"),第二部分显示线性acc提供的数据读数.传感器:

  1. 装置放在左侧

第一个位置 初读

  1. 设备躺在背上

第二个位置 二读

  1. 设备站立

在此输入图像描述 在此输入图像描述

现在 - 为什么在第三种情况下,加速沿Z轴(而不是Y)发生,因为设备位置无关紧要?

android vector accelerometer coordinate-systems coordinate-transformation

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

Android OpenGL ES 2.0屏幕坐标为世界坐标

我正在构建一个使用OpenGL ES 2.0的Android应用程序,而且我遇到了问题.我正在尝试将屏幕坐标(用户触摸的位置)转换为世界坐标.我尝试过阅读和玩弄GLU.gluUnProject,但我做错了或者只是不明白.

这是我的尝试......

public void getWorldFromScreen(float x, float y) {
    int viewport[] = { 0, 0, width , height};

    float startY = ((float) (height) - y);
    float[] near = { 0.0f, 0.0f, 0.0f, 0.0f };
    float[] far = { 0.0f, 0.0f, 0.0f, 0.0f };

    float[] mv = new float[16];
    Matrix.multiplyMM(mv, 0, mViewMatrix, 0, mModelMatrix, 0);

    GLU.gluUnProject(x, startY, 0, mv, 0, mProjectionMatrix, 0, viewport, 0, near, 0);
    GLU.gluUnProject(x, startY, 1, mv, 0, mProjectionMatrix, 0, viewport, 0, far, 0);

    float nearX …
Run Code Online (Sandbox Code Playgroud)

android coordinate-transformation opengl-es-2.0

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

从经度/纬度确定UTM区域(转换)

我正在编写一个程序,它需要一些纬度/经度,并且我将它们内部转换为UTM,以便以米为单位进行一些计算.

纬度/长度点的范围非常小 - 约200米x 200米.它们几乎总是可以依赖于单个UTM区域(除非你不幸并且跨越区域的边界).

但是,纬度/长度所在的区域不受限制.有一天,这个项目可能会针对澳大利亚的人们运行(哦,甚至一个州还有多少个区域,以及这已经导致我多少痛苦......),以及墨西哥人民的另一天.

我的问题是 - 有没有办法确定特定长/纬度所在的区域,以便它可以被送入转换库(我目前使用proj4和R包rgdal).

我的语言是R,但答案不一定是 - 也许只是一个简单的计算,或者我可以将系统调用嵌入到projexectuable中.

干杯.

r utm latitude-longitude coordinate-transformation

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

Mac OS X:在NSView坐标和全局屏幕坐标之间转换

我的多显示器设置中存在以下情况:

OSX协调转换

在这个例子中,我想将窗口精确定位在用黄色箭头描绘的坐标处.然而,我所拥有的是NSView的坐标,它是NSWindow的contentView的子视图,跨越整个(较大的,较高的)辅助监视器.

以下是定义全局坐标空间的方式:

  • {0,0}是笔记本电脑屏幕左上角的坐标.(绿色)
  • {-296,-1080}是我第二个屏幕左上角的坐标(黑色)
  • {0,800}是左下角的坐标(此处没有箭头)

因此,y从绿色箭头向下增加,从绿色箭头向上减少.

问题:

如何将黄色箭头({100,100},NSScreen内的NSWindow内部的NSView)描绘的点转换为该全局坐标系.(注意:在NSView中,坐标系左下角有{0,0},向上增加.)

我相信正确的答案是{-196,-980},但是在任何屏幕上为任何窗口获取此转换的代码是什么?

我已经在这个问题上花了太多时间,所以非常感谢任何帮助.

(不确定是否相关,但底部屏幕有视网膜分辨率显示.)

macos core-graphics coordinate-systems coordinate-transformation

17
推荐指数
2
解决办法
8803
查看次数

OpenCV,OpenGL和Android Sensor之间的参考坐标系更改

我正在使用OpenCV,AndroidOpenGL进行增强现实项目.据我所知,OpenGL中的coordintate系统是

在此输入图像描述

OpenCV坐标系是:

在此输入图像描述

将这些设备与Android传感器组合时,如何进行坐标系转换和[R | t]矩阵转换?是否有一个很好的教程或文档解释了所有这些令人讨厌的东西?

opencv opengl-es rotation coordinate-transformation android-sensors

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