在ActionScript 3(和IIRC 2)中,显示对象上的x和y属性始终存储为0.05的倍数.
所以像是一样obj.x = 66.6666的东西obj.x = 66.65
大多数时候,这没关系.但有时我最终会得到速度很慢的物体,例如每秒1个像素.1/60(fps)=每帧0.017像素.obj.x += 0.017将永远不会真正改变x值,因为它被四舍五入到最接近的0.05.
这迫使我覆盖DisplayObject的x和y属性,以便它们不会被舍入.
我可以理解舍入坐标到最接近的渲染积分值.使用更高级的渲染器,我甚至可以理解舍入到二进制可表示的一些分数(例如0.25).但0.05不能用二进制表示.
那么为什么Flash的创造者决定四舍五入到最接近的.05?这对我来说似乎是一个任意数字.
在编程问题之前,我认为我需要给出一些我正在做的事情的背景知识,以便于理解我的问题:
我在向受试者主体显示一些图案的同时记录眼球运动.通过实验,我后来展示了这些模式的一些对称变换.

我得到的是固定坐标和持续时间列表:
{{fix1X,fix1Y,fix1Dn},{fix2X,fix2Y,fix2Dn} ... {fixNX,fixNY,fixNDn}}
地点:
- fix1X是第一次固定的X坐标.
- fix1Y是第一次固定的Y坐标.
- fix1D是固定的持续时间(以毫秒为单位)
请考虑 :
FrameWidth = 31.36;
scrHeightCM = 30;
scrWidthCM = 40;
FrameXYs = {{4.32, 3.23}, {35.68, 26.75}}; (* {{Xmin,Ymin},{Xmax,Ymax}} *)
Run Code Online (Sandbox Code Playgroud)
以下是1个显示器的固定(屏幕上3s刺激演示期间的主题固定)
fix ={{20.14, 15.22, 774.}, {20.26, 15.37, 518.}, {25.65, 16.22, 200.},
{28.15, 11.06, 176.}, {25.25, 13.38, 154.}, {24.78, 15.74, 161.},
{24.23, 16.58, 121.}, {20.06, 13.22, 124.}, {24.91, 15.8, 273.},
{24.32, 12.83, 119.}, {20.06, 12.14, 366.}, {25.64, 18.22, 236.},
{24.37, 19.2, 177.}, {21.02, 16.4, 217.}, …Run Code Online (Sandbox Code Playgroud) 我怎么能转换这个:
26.72773551940918
Run Code Online (Sandbox Code Playgroud)
进入这样的事情:
22°12'42"N
Run Code Online (Sandbox Code Playgroud)
这里的诀窍是坐标实际上是Latitude和Longitude,我只需要正确格式化它们.
我有一个包含按钮的父小部件。当按钮被按下时,我想在父小部件的正下方打开一个无边框(即没有 Windows 装饰按钮)窗口,与它的左侧对齐。我很困惑,设置窗口位置的唯一方法(似乎)正在使用,.geometry()但更糟糕的是,我似乎无法获得父小部件的绝对坐标 - 我需要.geometry(),只有从父小部件的偏移量父母。到目前为止,我的代码是:
# This is the child which appears when the button is pressed.
class ChildPopUpWindow(Frame):
def __init__(self, parentWgdt):
win = Toplevel(parentWgdt)
geom = str(parentWgdt.winfo_x()) + '+' + str(parentWgdt.winfo_y() + parentWgdt.winfo_height())
win.overrideredirect(1) # No win decoration.
win.bd = 10
win.relief = GROOVE
win.geometry( geom )
Frame.__init__(self, win)
# etc. etc.
# ... and this is the handler for the button being pressed.
def onDropDown(self):
popUp = ChildPopUpWindow(self)
Run Code Online (Sandbox Code Playgroud)
这确实会弹出一个窗口,但相对于桌面,而不是父小部件。据我所知,它似乎也没有考虑边框的厚度和浮雕。任何人都可以提供一种可以做到这一点的方法吗?是.geometry()要走的路还是有更好的方法?
我有一个XML文件中的经度和纬度列表.我可以将lat和lon打印为字符串,但是当我将字符串转换为double时,我得到0.
这是我的代码:
NSString *latstring = [[NSString alloc] initWithString:theList.lat] ;
NSString *lonstring = [[NSString alloc] initWithString:theList.lon];
NSLog(@"latstring: %@, lonstring: %@", latstring, lonstring);
double latdouble = [latstring doubleValue];
double londouble = [lonstring doubleValue];
NSLog(@"latdouble: %g, londouble: %g", latdouble, londouble);
Run Code Online (Sandbox Code Playgroud)
当我记录'latstring'和'lonstring'时,我得到了正确的坐标,但是当我记录'latdouble'和'londouble'时,我得到0.
我需要lat和lon值为double,因此我可以在mapview中使用它们,因为它不允许我使用字符串作为坐标.
对此可能有一个非常简单的解释,但我对objective-c相当新,似乎无法找到解决方案.
任何帮助深表感谢.
为了管理内容可编辑UIWebView中的自动滚动,我需要获得正确的插入符Y垂直坐标.
我使用javascript确定了两种方法.
第一个使用getClientRects javascript函数:
CGRect caretRect = [self.webView stringByEvaluatingJavaScriptFromString: @"
var sel = document.getSelection();
var range = sel.getRangeAt(0).cloneRange();
range.collapse(true);
var r =range.getClientRects()[0];
return '{{'+r.left+','+r.top+'},{'+r.width+','+r.height+'}}';"];
int caretY = caretRect.origin.y;
Run Code Online (Sandbox Code Playgroud)
这样,插入符号一直闪烁,一个问题得到正确的垂直位置,有一个问题:当用户键入返回键时,下一行为空,在键入字符键之前,caretY等于零.这样的方法就无法使用了.
第二个插入一个tmp span,然后将其删除:
int caretY = [[self.webView stringByEvaluatingJavaScriptFromString: @"
var sel = window.getSelection();
sel.collapseToStart();
var range = sel.getRangeAt(0);
var span = document.createElement(\"span\");
range.insertNode(span);
var topPosition = span.offsetTop;
span.parentNode.removeChild(span);
topPosition;"] intValue];
Run Code Online (Sandbox Code Playgroud)
这在任何情况下都给出了正确的照顾.但插入符号停止闪烁,这在屏幕上看起来非常无益.
有没有人知道可以做出以下的任何方法(或这些方法的改编):
- get the correct caret Y in any situation
- keep the caret blinking in any situation
Run Code Online (Sandbox Code Playgroud)
谢谢
我来这里是因为我正在尝试使用 Leafletjs API 创建 GTA V 地图。事实上,我的瓷砖已经准备好了。但目的是通过使用 GTA V 游戏内坐标在地图上放置标记。为了实现它,我需要将坐标转换为 LatLong,但经过多次研究,我找不到解决方案。
我想通过输入经度和纬度从服务器获取地图图块。由于地图图块像网格一样排列,我需要将经度和纬度转换为 x 和 y 位置。
算法解释如下:http : //wiki.openstreetmap.org/wiki/Slippy_map_tilenames#ECMAScript_.28JavaScript.2FActionScript.2C_etc..29
我正确地实现了这个算法,但不幸的是,这些不是 tileservers 的正确坐标。正如你在这里看到的http://tools.geofabrik.de/map/#12/52.5106/13.3989&type=Geofabrik_Standard&grid=1 柏林的正确瓦片坐标是 (2200, 1343) 缩放级别 12,而算法给了我 (2645 , 1894)。
算法中的错误或我对这种转换如何工作的误解在哪里?
我在数据库中有很多(x, y, value)三元组数据。
我希望能够通过设置数组value的坐标(x,y)来从这些数据动态创建一个 2D numpy数组。
例如,如果我有:
(0,0,8)
(0,1,5)
(0,2,3)
(1,0,4)
(1,1,0)
(1,2,0)
(2,0,1)
(2,1,2)
(2,2,5)
Run Code Online (Sandbox Code Playgroud)
结果数组应该是:
Array([[8,5,3],[4,0,0],[1,2,5]])
Run Code Online (Sandbox Code Playgroud)
我是 numpy 的新手,numpy 中有什么方法可以这样做吗?如果没有,你会建议什么方法来做到这一点?
我正在尝试获取屏幕位置QMainWindow和print位置 (x,y) 值。我已经尝试了这两个self.pos()和self.mapToGlobal(self.pos())这两个 return 0。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.resize(400, 200)
# PRINTS 0 0
print(self.pos().x(), self.pos().y())
# PRINTS 0 0
print(self.mapToGlobal(self.pos()).x(), self.mapToGlobal(self.pos()).y())
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
我正在使用 Python 3.7 和 PyQt 5.11,我该如何实现?
coordinates ×10
python ×3
javascript ×2
arrays ×1
caret ×1
count ×1
dictionary ×1
double ×1
flash ×1
ios ×1
leaflet ×1
matrix ×1
numpy ×1
objective-c ×1
php ×1
position ×1
precision ×1
pyqt ×1
python-3.x ×1
qmainwindow ×1
rendering ×1
string ×1
tile ×1
tkinter ×1
transform ×1
uiwebview ×1
window ×1