java shape用法_Java PShape.scale方法代码示例

import processing.core.PShape; //导入方法依赖的package包/类

public void updateAnim(){

if(pg_src_small == null){

createScene();

}

int num_x = pg_src_small.width;

int num_y = pg_src_small.height;

DwFilter.get(context).gaussblur.apply(pg_src, pg_src, pg_src_tmp, 3);

pg_src_small.beginDraw();

pg_src_small.image(pg_src, 0, 0, num_x, num_y);

pg_src_small.endDraw();

opticalflow.update(pg_src);

DwFilter.get(context).copy.apply(opticalflow.frameCurr.velocity, tex_vel_small);

flow = tex_vel_small.getFloatTextureData(flow);

DwFilter.get(context).gaussblur.apply(pg_src_small, pg_src_small, pg_src_small_tmp, 3);

pg_src_small.loadPixels();

float scene_dimx = bounds[3] - bounds[0];

float scene_dimy = bounds[4] - bounds[1];

float scene_dimz = bounds[5] - bounds[2];

float bounds_off = 100;

float dimx = (scene_dimx - bounds_off*2) / num_x;

float dimy = (scene_dimy - bounds_off*2) / num_y;

float dim = min(dimx, dimy);

float tx = -dim * num_x * 0.5f;

float ty = -dim * num_y * 0.5f;

float tz = 10;

for(int y = 0; y < num_y; y++){

for(int x = 0; x < num_x; x++){

int idx = y * num_x + x;

int rgb = pg_src_small.pixels[idx];

int r = (rgb >> 16) & 0xFF;

int g = (rgb >> 8) & 0xFF;

int b = (rgb >> 0) & 0xFF;

int flow_idx = (num_y - y - 1) * num_x + x;

float flows = 3;

float flowx = flow[flow_idx * 2 + 0] * +flows;

float flowy = flow[flow_idx * 2 + 1] * -flows;

float flow_mm = flowx*flowx + flowy*flowy;

float flow_m = (float) Math.pow(flow_mm, 0.5f);

float gray = (r + g + b) / (3f * 255f);

float px = x * dim;

float py = y * dim;

float pz = scene_dimz * gray * 0.25f + +flow_m;

pz = max(pz, 0);

PShape cube = shp_cubes[idx];

cube.resetMatrix();

cube.scale(dim);

cube.translate(tx+px, ty+py, tz+pz);

cube.setFill(rgb);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值