Processing 如何在变换后在画布上找到对象的绝对坐标?

Processing 如何在变换后在画布上找到对象的绝对坐标?,processing,p5.js,Processing,P5.js,我有一个递归函数,它将粒子绘制为画布上的树。每次调用它时,我都应用rotate()和translate(),调用函数并绘制粒子。我现在想随机地去附加一些粒子,让它们漂移,为此,我需要对象的绝对坐标,并将它们推到一个数组中。换句话说,我想退出所有转换,但保留画布上对象的位置 现在我有一个解决方案,包括提供旋转和位置作为函数的参数,并进行一些计算。以下是摘录: function particle(len, thickness, rotation = 0, location = {x: 0, y: 0

我有一个递归函数,它将粒子绘制为画布上的树。每次调用它时,我都应用
rotate()
translate()
,调用函数并绘制粒子。我现在想随机地去附加一些粒子,让它们漂移,为此,我需要对象的绝对坐标,并将它们推到一个数组中。换句话说,我想退出所有转换,但保留画布上对象的位置

现在我有一个解决方案,包括提供旋转和位置作为函数的参数,并进行一些计算。以下是摘录:

function particle(len, thickness, rotation = 0, location = {x: 0, y: 0}) {
    push();
    ...
    ...
    translate(0, -len);
    if (len > 3) { // <-- recursion base case
        for (var itr = -1; itr <= 1; itr += 2) {
            var rotation2 = itr * random(45);
            var len2 = len * random(0.5, 0.8);
            var x1 = len2 * cos(rotation2);
            var y1 = len2 * sin(rotation2);
            var x2 = x1 * cos(rotation) - y1 * sin(rotation);
            var y2 = x1 * sin(rotation) + y1 * cos(rotation);
            var location2 = {
                x: location.x + x2,
                y: location.y + y2
            };
            push();
            rotate(rotation2);
            particle(len2, thickness * 0.8, rotation + rotation2, location2);
            pop();
    } else {
        /** for some random chance, de-attach the particle and provide it, its absolute
            coordinates, which is the location provided as function argument */
    }
    pop();
}
函数粒子(len,厚度,旋转=0,位置={x:0,y:0}){
推();
...
...
平移(0,-len);
如果(len>3){//