更新mouseX和mouseY变量
问题描述:
我在对变量赋值mouseX和mouseY的操作后,更新鼠标位置时出现问题。更新mouseX和mouseY变量
def setup():
size(500,500)
def draw():
background(255,255,255)
noStroke()
fill (0,0,0)
a1 = mouseX
b1 = mouseY
print a1
a1 = a1*(4/500) - 2 #trans to [-2,2]
b1 = b1*(4/500) - 2
print a1
当我打印a1时,我打印的第一个值更新但第二个值不是。所以如果我将鼠标移动到(250,250),我会得到250作为第一个输出,-2作为我的第二个值。我对python不太熟悉,因为我从来没有真正学过它,我正在寻找方法,但找不到一个。请帮忙。谢谢
答
我对Python一无所知,但是在正常的Processing(基本上只是Java)中,int
值不能包含小数位。如果您尝试在int
值中存储小数点,则会截断小数部分,将截取截断。
下面是一些例子:
int x = 3/2; // 1.5 is truncated so x is just 1
int y = 1/2; // 0.5 is truncated so y is just 0
现在,让我们的代码分成多个步骤。这可能是这样的:
int multiplier = 4/500;
a1 = a1 * multiplier;
a1 = a1 - 2;
希望你可以看到4/500
被截断所以它只是0
。然后当你乘以a
时,你得到0
。然后你减去2
,所以最终结果是-2
。
你应该养成将代码拆分成多个步骤的习惯,以便你更容易地使用debug代码。
现在,要解决此问题,您需要使用float
变量,该变量允许小数位。由于您使用的文字(4
和500
都是文字),你可以做这样的事情:
a1 = a1 * (4.0/500.0) - 2
下面这段代码利用4.0
和500.0
,所以结果是0.008
与包括小数部分。然后,其余的计算将按照您预期的方式进行。
取决于加工类型是如何工作的,你或许也能做到这一点:
A1 = A1 * 4 /:500 - 2
如果a1
已经是一个float
值,那么这将工作,因为首先计算a1 * 4
,结果是float
,其余部分应该如何工作。但是这只有在a1
已经是float
时才有效。
你也应该试着用google搜索“python int division”来获得大量的结果。
在Python 2.x中,'4/500'等于零 - 因为它是作为整数运算执行的。也许将至少一个操作数转换为浮点数以获得浮点除法 - “4/500.0”。 – jasonharper
在表达式中使用float类型:例如,float(4)/ 500 – bilbo