本文整理汇总了Java中processing.core.PShape.beginShape方法的典型用法代码示例。如果您正苦于以下问题:Java PShape.beginShape方法的具体用法?Java PShape.beginShape怎么用?Java PShape.beginShape使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类processing.core.PShape
的用法示例。
在下文中一共展示了PShape.beginShape方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: createGridXY
import processing.core.PShape; //导入方法依赖的package包/类
public PShape createGridXY(int lines, float s){
PShape shp_gridxy = createShape();
shp_gridxy.beginShape(LINES);
shp_gridxy.stroke(0);
shp_gridxy.strokeWeight(1f);
float d = lines*s;
for(int i = 0; i <= lines; i++){
shp_gridxy.vertex(-d,-i*s,0); shp_gridxy.vertex(d,-i*s,0);
shp_gridxy.vertex(-d,+i*s,0); shp_gridxy.vertex(d,+i*s,0);
shp_gridxy.vertex(-i*s,-d,0); shp_gridxy.vertex(-i*s,d,0);
shp_gridxy.vertex(+i*s,-d,0); shp_gridxy.vertex(+i*s,d,0);
}
shp_gridxy.endShape();
return shp_gridxy;
}
示例2: displayGridXY
import processing.core.PShape; //导入方法依赖的package包/类
private void displayGridXY(PShape pg, float[][] normals, int iz, PGraphics2D tex){
pg.beginShape(PConstants.TRIANGLE_STRIP);
pg.textureMode(PConstants.NORMAL);
pg.texture(tex);
pg.fill(material_color);
int ix, iy;
for(iy = 0; iy < nodes_y-1; iy++){
for(ix = 0; ix < nodes_x; ix++){
vertex(pg, getNode3D(ix, iy+0, iz), normals[(iy+0)*nodes_x+ix], ix * tx_inv, (iy+0) * ty_inv);
vertex(pg, getNode3D(ix, iy+1, iz), normals[(iy+1)*nodes_x+ix], ix * tx_inv, (iy+1) * ty_inv);
}
ix -= 1; vertex(pg, getNode3D(ix, iy+1, iz), normals[(iy+1)*nodes_x+ix], 0, 0);
ix = 0; vertex(pg, getNode3D(ix, iy+1, iz), normals[(iy+1)*nodes_x+ix], 0, 0);
}
pg.endShape();
}
示例3: displayGridYZ
import processing.core.PShape; //导入方法依赖的package包/类
private void displayGridYZ(PShape pg, float[][] normals, int ix, PGraphics2D tex){
pg.beginShape(PConstants.TRIANGLE_STRIP);
pg.textureMode(PConstants.NORMAL);
pg.texture(tex);
pg.fill(material_color);
int iz, iy;
for(iz = 0; iz < nodes_z-1; iz++){
for(iy = 0; iy < nodes_y; iy++){
vertex(pg, getNode3D(ix, iy, iz+0), normals[(iz+0)*nodes_y+iy], iy * ty_inv, (iz+0) * tz_inv);
vertex(pg, getNode3D(ix, iy, iz+1), normals[(iz+1)*nodes_y+iy], iy * ty_inv, (iz+1) * tz_inv);
}
iy -= 1; vertex(pg, getNode3D(ix, iy, iz+1), normals[(iz+1)*nodes_y+iy], 0, 0);
iy = 0; vertex(pg, getNode3D(ix, iy, iz+1), normals[(iz+1)*nodes_y+iy], 0, 0);
}
pg.endShape();
}
示例4: displayGridXZ
import processing.core.PShape; //导入方法依赖的package包/类
private void displayGridXZ(PShape pg, float[][] normals, int iy, PGraphics2D tex){
pg.beginShape(PConstants.TRIANGLE_STRIP);
pg.textureMode(PConstants.NORMAL);
pg.texture(tex);
pg.fill(material_color);
int iz, ix;
for(iz = 0; iz < nodes_z-1; iz++){
for(ix = 0; ix < nodes_x; ix++){
vertex(pg, getNode3D(ix, iy, iz+0), normals[(iz+0)*nodes_x+ix], ix * tx_inv, (iz+0) * tz_inv);
vertex(pg, getNode3D(ix, iy, iz+1), normals[(iz+1)*nodes_x+ix], ix * tx_inv, (iz+1) * tz_inv);
}
ix -= 1; vertex(pg, getNode3D(ix, iy, iz+1), normals[(iz+1)*nodes_x+ix], 0, 0);
ix = 0; vertex(pg, getNode3D(ix, iy, iz+1), normals[(iz+1)*nodes_x+ix], 0, 0);
}
pg.endShape();
}
示例5: updateShapesCount
import processing.core.PShape; //导入方法依赖的package包/类
protected void updateShapesCount(){
if(particle_num == 0){
return;
}
// synchronize buffer size
int shp_count = shp_particles.getChildCount();
if(shp_count != particle_num){
// remove shapes, in case group is bigger than actual number
for(int i = shp_count - 1; i >= particle_num; i--){
shp_particles.removeChild(i);
}
// add shapes, in case group is smaller then actual number
for(int i = shp_count; i < particle_num; i++){
PShape shp_particle = papplet.createShape();
shp_particle.beginShape(PConstants.QUADS);
shp_particle.noFill();
shp_particle.noStroke();
shp_particle.textureMode(PConstants.NORMAL); // TODO: report issue
shp_particle.texture(param.tex_sprite); // TODO: report issue
shp_particle.vertex(-1, -1, 0, 0);
shp_particle.vertex(+1, -1, 1, 0);
shp_particle.vertex(+1, +1, 1, 1);
shp_particle.vertex(-1, +1, 0, 1);
shp_particle.endShape();
shp_particles.addChild(shp_particle);
}
}
}
示例6: calculateMesh
import processing.core.PShape; //导入方法依赖的package包/类
/**
* Calculates the mesh formed by the section points
*
* @param p the parent Processing applet
* @param color the mesh color
* @return the section mesh
*/
public PShape calculateMesh(PApplet p, int color) {
PShape mesh = p.createShape();
mesh.beginShape();
mesh.noStroke();
mesh.fill(color);
for (Vec3D point : points) {
mesh.vertex(point.x, point.y, point.z);
}
mesh.endShape(PApplet.CLOSE);
return mesh;
}
示例7: createShape
import processing.core.PShape; //导入方法依赖的package包/类
private PShape createShape(PGraphics pg){
PShape shp = pg.createShape();
shp.beginShape(PConstants.TRIANGLES);
foldingmodel.display(shp, this);
shp.endShape();
return shp;
}
示例8: createParticleShape
import processing.core.PShape; //导入方法依赖的package包/类
public PShape createParticleShape(DwParticle2D particle, PImage pimg_sprite){
final float rad = 2;
PShape shp_sprite = papplet.createShape();
shp_sprite.beginShape(PConstants.QUADS);
shp_sprite.noStroke();
shp_sprite.noFill();
shp_sprite.tint(255,10,10);
if(particle.idx == IDX_MOUSE_PARTICLE){
shp_sprite.tint(200,100,100);
} else {
float r = 0 + papplet.random(-30, 30);
float g = 100;
float b = 100;
shp_sprite.tint(r,g,b);
}
shp_sprite.textureMode(PConstants.NORMAL);
shp_sprite.texture(pimg_sprite);
shp_sprite.normal(0, 0, 1);
shp_sprite.vertex(-rad, -rad, 0, 0);
shp_sprite.vertex(+rad, -rad, 1, 0);
shp_sprite.vertex(+rad, +rad, 1, 1);
shp_sprite.vertex(-rad, +rad, 0, 1);
shp_sprite.endShape();
return shp_sprite;
}
示例9: createShape
import processing.core.PShape; //导入方法依赖的package包/类
private PShape createShape(PGraphics pg){
int faces_count = mesh.ifs.getFacesCount();
int[][] faces = mesh.ifs.getFaces();
float[] n = new float[3]; // normal buffer
PShape shp = pg.createShape();
shp.beginShape(PConstants.TRIANGLES);
shp.noStroke();
shp.fill(material_color);
for(int i = 0; i < faces_count; i++){
int v0 = faces[i][0];
int v1 = faces[i][1];
int v2 = faces[i][2];
DwParticle3D p0 = particles[v0]; if(p0.all_springs_deactivated) continue;
DwParticle3D p1 = particles[v1]; if(p1.all_springs_deactivated) continue;
DwParticle3D p2 = particles[v2]; if(p2.all_springs_deactivated) continue;
if(FLAT_SHADING){
n[0] = n[1] = n[2] = 0;
DwParticle3D.crossAccum(p0, p1, p2, n);
shp.normal(n[0], n[1], n[2]);
shp.vertex(p0.cx, p0.cy, p0.cz);
shp.vertex(p1.cx, p1.cy, p1.cz);
shp.vertex(p2.cx, p2.cy, p2.cz);
} else {
n = normals[v0]; shp.normal(n[0], n[1], n[2]); shp.vertex(p0.cx, p0.cy, p0.cz);
n = normals[v1]; shp.normal(n[0], n[1], n[2]); shp.vertex(p1.cx, p1.cy, p1.cz);
n = normals[v2]; shp.normal(n[0], n[1], n[2]); shp.vertex(p2.cx, p2.cy, p2.cz);
}
}
shp.endShape();
return shp;
}
示例10: createShape
import processing.core.PShape; //导入方法依赖的package包/类
private PShape createShape(PGraphics pg) {
PShape shp = pg.createShape();
shp.beginShape();
shp.fill(material_color);
shp.noStroke();
for(int i = 0; i < num_nodes; i++){
DwParticle2D pa = particles[i];
if(pa.all_springs_deactivated) continue;
shp.vertex(pa.cx, pa.cy);
}
shp.endShape();
return shp;
}
示例11: createPolyhedronShapeNormals
import processing.core.PShape; //导入方法依赖的package包/类
static public void createPolyhedronShapeNormals(PShape shape, DwIndexedFaceSetAble ifs, float scale, float normal_len){
shape.beginShape(PConstants.LINES);
shape.stroke(0);
int [][] faces = ifs.getFaces();
float[][] verts = ifs.getVerts();
for(int[] face : faces){
float nx = 0, ny = 0, nz = 0;
int num_verts = face.length;
// compute face normal
for(int i = 0; i < num_verts; i++){
int vi = face[i];
nx += verts[vi][0];
ny += verts[vi][1];
nz += verts[vi][2];
}
nx /= num_verts;
ny /= num_verts;
nz /= num_verts;
float ax = nx*scale;
float ay = ny*scale;
float az = nz*scale;
float bx = ax + nx*normal_len;
float by = ay + ny*normal_len;
float bz = az + nz*normal_len;
shape.vertex(ax, ay, az);
shape.vertex(bx, by, bz);
}
shape.endShape();
}
示例12: createParticleShape
import processing.core.PShape; //导入方法依赖的package包/类
public PShape createParticleShape(DwParticle2D particle, PImage sprite_img){
final float rad = particle.rad;
PShape shp_particle = papplet.createShape(PShape.GROUP);
if( PARTICLE_SHAPE_IDX >= 0 && PARTICLE_SHAPE_IDX < 4){
PShape sprite = papplet.createShape(PShape.GEOMETRY);
sprite.beginShape(PConstants.QUAD);
sprite.noStroke();
sprite.noFill();
sprite.textureMode(PConstants.NORMAL);
sprite.texture(sprite_img);
sprite.normal(0, 0, 1);
sprite.vertex(-rad, -rad, 0, 0);
sprite.vertex(+rad, -rad, 1, 0);
sprite.vertex(+rad, +rad, 1, 1);
sprite.vertex(-rad, +rad, 0, 1);
sprite.endShape();
shp_particle.addChild(sprite);
}
else if( PARTICLE_SHAPE_IDX == 4){
float threshold1 = 1; // radius shortening for arc segments
float threshold2 = 140; // arc between segments
double arc1 = Math.acos(Math.max((rad-threshold1), 0) / rad);
double arc2 = (180 - threshold2) * Math.PI / 180;
double arc = Math.min(arc1, arc2);
int num_vtx = (int)Math.ceil(2*Math.PI/arc);
// System.out.println(num_vtx);
PShape circle = papplet.createShape(PShape.GEOMETRY);
circle.beginShape();
circle.noStroke();
circle.fill(200,100);
for(int i = 0; i < num_vtx; i++){
float vx = (float) Math.cos(i * 2*Math.PI/num_vtx) * rad;
float vy = (float) Math.sin(i * 2*Math.PI/num_vtx) * rad;
circle.vertex(vx, vy);
}
circle.endShape(PConstants.CLOSE);
PShape line = papplet.createShape(PShape.GEOMETRY);
line.beginShape(PConstants.LINES);
line.stroke(0, 100);
line.strokeWeight(1);
line.vertex(0, 0);
line.vertex(-(rad-1), 0);
line.endShape();
// PShape circle = papplet.createShape(PConstants.ELLIPSE, 0, 0, rad*2, rad*2);
// circle.setStroke(false);
// circle.setFill(papplet.color(200,100));
//
// PShape line = papplet.createShape(PConstants.LINE, 0, 0, -(rad-1), 0);
// line.setStroke(papplet.color(0,200));
// line.setStrokeWeight(1);
shp_particle.addChild(circle);
shp_particle.addChild(line);
}
return shp_particle;
}
示例13: displayAABB
import processing.core.PShape; //导入方法依赖的package包/类
public void displayAABB(float[] aabb){
if(shp_aabb == null){
float xmin = aabb[0], xmax = aabb[3];
float ymin = aabb[1], ymax = aabb[4];
float zmin = aabb[2], zmax = aabb[5];
shp_aabb = createShape(GROUP);
PShape plane_zmin = createShape();
plane_zmin.beginShape(QUAD);
plane_zmin.stroke(0);
plane_zmin.strokeWeight(1);
plane_zmin.fill(192);
plane_zmin.normal(0, 0, 1); plane_zmin.vertex(xmin, ymin, zmin);
plane_zmin.normal(0, 0, 1); plane_zmin.vertex(xmax, ymin, zmin);
plane_zmin.normal(0, 0, 1); plane_zmin.vertex(xmax, ymax, zmin);
plane_zmin.normal(0, 0, 1); plane_zmin.vertex(xmin, ymax, zmin);
plane_zmin.endShape(CLOSE);
shp_aabb.addChild(plane_zmin);
PShape plane_zmax = createShape();
plane_zmax.beginShape(QUAD);
plane_zmax.noFill();
plane_zmax.stroke(0);
plane_zmax.strokeWeight(1);
plane_zmax.vertex(xmin, ymin, zmax);
plane_zmax.vertex(xmax, ymin, zmax);
plane_zmax.vertex(xmax, ymax, zmax);
plane_zmax.vertex(xmin, ymax, zmax);
plane_zmax.endShape(CLOSE);
shp_aabb.addChild(plane_zmax);
PShape vert_lines = createShape();
vert_lines.beginShape(LINES);
vert_lines.stroke(0);
vert_lines.strokeWeight(1);
vert_lines.vertex(xmin, ymin, zmin); vert_lines.vertex(xmin, ymin, zmax);
vert_lines.vertex(xmax, ymin, zmin); vert_lines.vertex(xmax, ymin, zmax);
vert_lines.vertex(xmax, ymax, zmin); vert_lines.vertex(xmax, ymax, zmax);
vert_lines.vertex(xmin, ymax, zmin); vert_lines.vertex(xmin, ymax, zmax);
vert_lines.endShape();
shp_aabb.addChild(vert_lines);
PShape corners = createShape();
corners.beginShape(POINTS);
corners.stroke(0);
corners.strokeWeight(7);
corners.vertex(xmin, ymin, zmin); corners.vertex(xmin, ymin, zmax);
corners.vertex(xmax, ymin, zmin); corners.vertex(xmax, ymin, zmax);
corners.vertex(xmax, ymax, zmin); corners.vertex(xmax, ymax, zmax);
corners.vertex(xmin, ymax, zmin); corners.vertex(xmin, ymax, zmax);
corners.endShape();
shp_aabb.addChild(corners);
}
shape(shp_aabb);
}
示例14: displayAABB
import processing.core.PShape; //导入方法依赖的package包/类
public void displayAABB(float[] aabb){
if(shp_aabb == null){
float xmin = aabb[0], xmax = aabb[3];
float ymin = aabb[1], ymax = aabb[4];
float zmin = aabb[2], zmax = aabb[5];
shp_aabb = createShape(GROUP);
PShape plane_zmin = createShape();
plane_zmin.beginShape(QUAD);
plane_zmin.stroke(0);
plane_zmin.strokeWeight(1);
plane_zmin.fill(64);
plane_zmin.normal(0, 0, 1); plane_zmin.vertex(xmin, ymin, zmin);
plane_zmin.normal(0, 0, 1); plane_zmin.vertex(xmax, ymin, zmin);
plane_zmin.normal(0, 0, 1); plane_zmin.vertex(xmax, ymax, zmin);
plane_zmin.normal(0, 0, 1); plane_zmin.vertex(xmin, ymax, zmin);
plane_zmin.endShape(CLOSE);
shp_aabb.addChild(plane_zmin);
PShape plane_zmax = createShape();
plane_zmax.beginShape(QUAD);
plane_zmax.noFill();
plane_zmax.stroke(0);
plane_zmax.strokeWeight(1);
plane_zmax.vertex(xmin, ymin, zmax);
plane_zmax.vertex(xmax, ymin, zmax);
plane_zmax.vertex(xmax, ymax, zmax);
plane_zmax.vertex(xmin, ymax, zmax);
plane_zmax.endShape(CLOSE);
shp_aabb.addChild(plane_zmax);
PShape vert_lines = createShape();
vert_lines.beginShape(LINES);
vert_lines.stroke(0);
vert_lines.strokeWeight(1);
vert_lines.vertex(xmin, ymin, zmin); vert_lines.vertex(xmin, ymin, zmax);
vert_lines.vertex(xmax, ymin, zmin); vert_lines.vertex(xmax, ymin, zmax);
vert_lines.vertex(xmax, ymax, zmin); vert_lines.vertex(xmax, ymax, zmax);
vert_lines.vertex(xmin, ymax, zmin); vert_lines.vertex(xmin, ymax, zmax);
vert_lines.endShape();
shp_aabb.addChild(vert_lines);
PShape corners = createShape();
corners.beginShape(POINTS);
corners.stroke(0);
corners.strokeWeight(7);
corners.vertex(xmin, ymin, zmin); corners.vertex(xmin, ymin, zmax);
corners.vertex(xmax, ymin, zmin); corners.vertex(xmax, ymin, zmax);
corners.vertex(xmax, ymax, zmin); corners.vertex(xmax, ymax, zmax);
corners.vertex(xmin, ymax, zmin); corners.vertex(xmin, ymax, zmax);
corners.endShape();
shp_aabb.addChild(corners);
}
shape(shp_aabb);
}
示例15: createParticleShape
import processing.core.PShape; //导入方法依赖的package包/类
public PShape createParticleShape(DwParticle2D particle){
final float rad = particle.rad;
PShape shp_particle = papplet.createShape(PShape.GROUP);
// compute circle resolution, depending on the radius we reduce/increase
// the number of vertices we need to render
float threshold1 = 1; // radius shortening for arc segments
float threshold2 = 140; // arc between segments
double arc1 = Math.acos(Math.max((rad-threshold1), 0) / rad);
double arc2 = (180 - threshold2) * Math.PI / 180;
double arc = Math.min(arc1, arc2);
int num_vtx = (int)Math.ceil(2*Math.PI/arc);
// actual circle
PShape circle = papplet.createShape(PShape.GEOMETRY);
circle.beginShape();
circle.noStroke();
circle.fill(200,100);
for(int i = 0; i < num_vtx; i++){
float vx = (float) Math.cos(i * 2*Math.PI/num_vtx) * 1;
float vy = (float) Math.sin(i * 2*Math.PI/num_vtx) * 1;
circle.vertex(vx, vy);
}
circle.endShape(PConstants.CLOSE);
// line, to indicate the velocity-direction of the particle
PShape line = papplet.createShape(PShape.GEOMETRY);
line.beginShape(PConstants.LINES);
line.stroke(255, 100);
line.strokeWeight(1f/rad);
line.vertex(0, 0);
line.vertex(-1, 0);
line.endShape();
shp_particle.addChild(circle);
shp_particle.addChild(line);
return shp_particle;
}