为什么 translate() 必须在 p5 的 draw() 中?
Why must translate() be in draw() in p5?
使用 p5 库移植到 python。默认情况下,坐标系从左上角开始为 0,0,如 HTML canvas。我正在尝试使用 translate()
将其转换为以 0,0 为中心的笛卡尔平面,然后在 0,0
处画一个圆圈以确认它位于中心。
它有效,但只有当我在 def draw()
中有 translate()
而不是 def setup()
这个有效:
from p5 import *
def setup():
size(900, 900)
def draw():
translate(width/2, height/2)
circle(0, 0, 50) # draws circle at center
run()
这不起作用:
from p5 import *
def setup():
size(900, 900)
translate(width/2, height/2)
def draw():
circle(0, 0, 50) # draws circle at top left
run()
我已经确认使用 print()
语句 run()
在调用 draw()
之前调用 setup()
,因此翻译应该在 circle()
之前发生已执行。
如果 setup()
是 运行,为什么我必须将 translate()
放在 draw()
而不是 setup()
中?翻译是否在每次 draw()
执行时重置?
这实际上记录在案 here 最后一段(强调我的):
It is important to note that the drawing coordinate system will be reset at the beginning of each draw()
call. If any transformations are performed within draw()
(ex: scale
, rotate
, translate
), their effects will be undone at the beginning of draw()
, so transformations will not accumulate over time.
所以它不是严格的 Python 特定的,p5.js
本身是特定的,setup
中的 translate
没有效果。
使用 p5 库移植到 python。默认情况下,坐标系从左上角开始为 0,0,如 HTML canvas。我正在尝试使用 translate()
将其转换为以 0,0 为中心的笛卡尔平面,然后在 0,0
处画一个圆圈以确认它位于中心。
它有效,但只有当我在 def draw()
中有 translate()
而不是 def setup()
这个有效:
from p5 import *
def setup():
size(900, 900)
def draw():
translate(width/2, height/2)
circle(0, 0, 50) # draws circle at center
run()
这不起作用:
from p5 import *
def setup():
size(900, 900)
translate(width/2, height/2)
def draw():
circle(0, 0, 50) # draws circle at top left
run()
我已经确认使用 print()
语句 run()
在调用 draw()
之前调用 setup()
,因此翻译应该在 circle()
之前发生已执行。
如果 setup()
是 运行,为什么我必须将 translate()
放在 draw()
而不是 setup()
中?翻译是否在每次 draw()
执行时重置?
这实际上记录在案 here 最后一段(强调我的):
It is important to note that the drawing coordinate system will be reset at the beginning of each
draw()
call. If any transformations are performed withindraw()
(ex:scale
,rotate
,translate
), their effects will be undone at the beginning ofdraw()
, so transformations will not accumulate over time.
所以它不是严格的 Python 特定的,p5.js
本身是特定的,setup
中的 translate
没有效果。