class PaperDoll { static final int HEAD=0; static final int NECK=1; static final int LEFT_SHOULDER=2; static final int LEFT_ELBOW=3; static final int LEFT_HAND=4; static final int RIGHT_SHOULDER=5; static final int RIGHT_ELBOW=6; static final int RIGHT_HAND=7; static final int LEFT_HIP=8; static final int LEFT_KNEE=9; static final int LEFT_FOOT=10; static final int RIGHT_HIP=11; static final int RIGHT_KNEE=12; static final int RIGHT_FOOT=13; static final int numSegments = 2; static final int numLimbs=4; float[][] x = new float[numLimbs][numSegments]; float[][] y = new float[numLimbs][numSegments]; //float[][] = new PVector[numLimbs][numSegments]; float[][] angle = new float[numLimbs][numSegments]; float[][] len = new float[numLimbs][numSegments]; float segLength = 100; float targetX, targetY; PImage bodyTextures[] = new PImage[11]; PaperDoll() { } void constrainCoords(float sx[], float sy[]) { // left shoulder // x[0][1]=screenCoords[LEFT_SHOULDER].x; // x[1][1]=screenCoords[RIGHT_SHOULDER].x; // x[2][1]=screenCoords[LEFT_HIP].x; // x[3][1]=screenCoords[RIGHT_HIP].x; // // x[0][1]=screenCoords[LEFT_SHOULDER]; // x[1][1]=screenCoords[RIGHT_SHOULDER]; // x[2][1]=screenCoords[LEFT_HIP]; // x[3][1]=screenCoords[RIGHT_HIP]; x[0][1]=sx[LEFT_SHOULDER]; y[0][1]=sy[LEFT_SHOULDER]; x[1][1]=sx[RIGHT_SHOULDER]; y[1][1]=sy[RIGHT_SHOULDER]; x[2][1]=sx[LEFT_HIP]; y[2][1]=sy[LEFT_HIP]; x[3][1]=sx[RIGHT_HIP]; y[3][1]=sy[RIGHT_HIP]; reachSegment(0, 0, sx[LEFT_HAND], sy[LEFT_HAND]); reachSegment(0, 1, targetX, targetY); reachSegment(1, 0, sx[RIGHT_HAND], sy[RIGHT_HAND]); reachSegment(1, 1, targetX, targetY); reachSegment(2, 0, sx[LEFT_FOOT], sy[LEFT_FOOT]); reachSegment(2, 1, targetX, targetY); reachSegment(3, 0, sx[RIGHT_FOOT], sy[RIGHT_FOOT]); reachSegment(3, 1, targetX, targetY); for (int j=0; j=1; i--) positionSegment(j, i, i-1); } void reachSegment(int l, int i, float xin, float yin) { float dx = xin - x[l][i]; float dy = yin - y[l][i]; angle[l][i] = atan2(dy, dx); targetX = xin - cos(angle[l][i]) * len[l][i];//segLength; targetY = yin - sin(angle[l][i]) * len[l][i];//segLength; } void positionSegment(int l, int a, int b) { x[l][b] = x[l][a] + cos(angle[l][a]) * len[l][a];//segLength; y[l][b] = y[l][a] + sin(angle[l][a]) * len[l][a];//segLength; } void drawDoll() { for (int j=0; j