예제 #1
0
//----------------------------------------------------------
void ofxVectorGraphics::curve(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4){
	if(bDraw){
		ofDrawCurve(x1, y1, x2, y2, x3, y3, x4, y4);
	}
	if(bRecord){
	
		//we treat the catmull rom curve as a bezier 
		//by finding the approrpriate control points 
		//to make the same curve
													
		//x1 y1 = p1
		//x2 y2 = p2
		//x3 y3 = p3
		//x4 y4 = p4
		
		//control point at p2 is parallel 
		//to the line defined by p3 - p1
		
		//control point at p3 is parallel
		//to the line defined by p4 - p2
	
		ofPoint3 p1(x1, y1);
		ofPoint3 p2(x2, y2);
		ofPoint3 p3(x3, y3);
		ofPoint3 p4(x4, y4);
		
		//SUPER WEIRD MAGIC CONSTANT = 1/6 (this works 100% can someone explain it?)
		ofPoint3 cp1 = p2 + ( p3 - p1 ) * (1.0/6);
		ofPoint3 cp2 = p3 + ( p2 - p4 ) * (1.0/6);						
				
		creeps.startPath(x2, y2);
		creeps.addCurve( cp1.x, cp1.y, cp2.x, cp2.y, x3, y3);
		
		if(bFill){
			creeps.addLine(x2, y2);	
			creeps.endPath(CreEPS::FILL);
		}else{
			creeps.endPath(CreEPS::STROKE);
		}
	}
}	
예제 #2
0
//--------------------------------------------------------------
void ofApp::draw(){
    
    ofBackground(107,96,136);
    ofSetColor(255);
    
    ofSetLineWidth(1);
    
    //Hair (in retrospect I would have done it with a shape)
    ofDrawTriangle(50,270,
                   110,180,
                   90,340);
    ofDrawTriangle(110,180,
                   125,95,
                   175,100);
    ofDrawTriangle(175,100,
                   390,25,
                   450,75);
    ofDrawTriangle(450,75,
                   550,85,
                   565,220);
    ofDrawTriangle(565,220,
                   600,275,
                   575,275);
    ofDrawTriangle(600,275,
                   665,302,
                   620,325);
    ofDrawTriangle(620,325,
                   655,375,
                   600,350);
    ofDrawTriangle(600,350,
                   625,410,
                   580,395);
    ofDrawTriangle(580,395,
                   600,475,
                   565,445);
    ofDrawTriangle(565,445,
                   575,475,
                   525,455);
    ofDrawTriangle(525,455,
                   530,485,
                   505,465);
    ofDrawTriangle(505,465,
                   475,525,
                   475,445);
    ofDrawTriangle(475,445,
                   435,485,
                   450,400);
    ofDrawTriangle(450,400,
                   425,445,
                   437,417);
    ofDrawTriangle(437,417,
                   410,325,
                   420,325);
    ofDrawTriangle(410,325,//Start of bangs
                   420,405,
                   325,335);
    ofDrawTriangle(325,335,
                   360,415,
                   260,360);
    ofDrawTriangle(260,360,
                   295,427,
                   228,380);
    ofDrawTriangle(228,380,
                   225,430,
                   215,375);
    ofDrawTriangle(215,375,
                   140,330,
                   145,330);
    ofDrawTriangle(90,340,//END OF BANGS
                   90,485,
                   110,440);
    ofDrawTriangle(110,440,
                   160,535,
                   150,465);
    ofDrawTriangle(150,465,
                   178,510,
                   168,455);
    ofDrawTriangle(168,455,
                   175,585,
                   250,525);
    ofDrawTriangle(250,525,
                   250,610,
                   290,560);
    
    //hair coloring
    ofBeginShape();
    ofVertex(90,340);
    ofVertex(140,330);
    ofVertex(145,330);
    ofVertex(215,375);
    ofVertex(228,380);
    ofVertex(260,360);
    ofVertex(325,335);
    ofVertex(410,325);
    ofVertex(420,325);
    ofVertex(437,417);
    ofVertex(450,400);
    ofVertex(475,445);
    ofVertex(505,465);
    ofVertex(525,455);
    ofVertex(565,445);
    ofVertex(580,395);
    ofVertex(600,350);
    ofVertex(620,325);
    ofVertex(600,275);
    ofVertex(565,220);
    ofVertex(450,75);
    ofVertex(175,100);
    ofVertex(110,180);
    ofVertex(50,270);
    
    ofEndShape();
    
    ofBeginShape();
    ofVertex(90,340);
    ofVertex(110,440);
    ofVertex(150,465);
    ofVertex(168,455);
    ofVertex(250,525);
    ofVertex(290,560);
    ofVertex(350,250);
    ofEndShape();
    
    
    //face
    ofSetColor(255,254,227);
    ofBeginShape();
    ofVertex(140,330);
    ofVertex(145,365);
    ofVertex(151,375);
    ofVertex(151,385);
    ofVertex(178,425);
    ofVertex(187,450);
    ofVertex(210,485);
    ofVertex(310,565); //TIP OF CHIN
    ofVertex(327,555);
    ofVertex(425,445);
    ofVertex(437,417);
    ofVertex(410,325);
    ofVertex(420,405);
    ofVertex(325,335);
    ofVertex(360,415);
    ofVertex(260,360);
    ofVertex(295,427);
    ofVertex(228,380);
    ofVertex(225,430);
    ofVertex(215,375);
    ofVertex(140,330);
    
    ofEndShape();
    
    
    //Face lines
    ofSetColor(0);
    ofNoFill();
    ofSetLineWidth(2);
    
    ofBeginShape();
    ofVertex(140,330);
    ofVertex(145,365);
    ofVertex(151,375);
    ofVertex(151,385);
    ofVertex(178,425);
    ofVertex(187,450);
    ofVertex(210,485);
    ofVertex(310,565); //TIP OF CHIN
    ofVertex(327,555);
    ofVertex(425,445);
    ofVertex(437,417);
    ofVertex(410,325);
    ofVertex(420,405);
    ofVertex(325,335);
    ofVertex(360,415);
    ofVertex(260,360);
    ofVertex(295,427);
    ofVertex(228,380);
    ofVertex(225,430);
    ofVertex(215,375);
    ofVertex(140,330);
    
    ofEndShape();
    ofFill();
    
    //Eyelashes
    ofDrawTriangle(151,385,
                   142,395,
                   190,385);
    
    
    
    //Eye
    ofSetCurveResolution(50);
    ofSetColor(174,73,77);
    ofBeginShape();
    ofCurveVertex(155,385);
    ofCurveVertex(155,385);
    ofCurveVertex(155,390);
    ofCurveVertex(173,415);
    ofCurveVertex(175,405);
    ofCurveVertex(173,392);
    ofCurveVertex(168,390);
    ofCurveVertex(168,390);
    ofEndShape();
    
    
    
    //Eye lines
    ofSetColor(0);
    ofNoFill();
    ofSetLineWidth(2);
    ofBeginShape();
    ofCurveVertex(155,385);
    ofCurveVertex(155,385);
    ofCurveVertex(155,390);
    ofCurveVertex(173,415);
    ofCurveVertex(175,405);
    ofCurveVertex(173,392);
    ofCurveVertex(168,390);
    ofCurveVertex(168,390);
    ofEndShape();
    
    ofFill();
    
    
    //Pupil
    ofBeginShape();
    ofCurveVertex(159,385);
    ofCurveVertex(159,385);
    ofCurveVertex(158,390);
    ofCurveVertex(168,405);
    ofCurveVertex(170,395);
    ofCurveVertex(170,395);
    ofEndShape();
    
    //Eyelashes
    ofSetColor(0);
    ofDrawTriangle(151,385,
                   142,395,
                   210,380);
    
    //Eyebrow
    ofDrawTriangle(143,360,
                   185,355,
                   180,352);
    
    //Detail Eye Lines
    ofSetLineWidth(1);
    ofNoFill();
    ofDrawCurve(140,400,
                151,375,
                200,372,
                225,377);
    ofFill();
    
    //Nose
    ofNoFill();
    ofSetLineWidth(2);
    ofDrawCurve(185,325,
                210,375,
                185,450,
                135,425);
    ofDrawCurve(150,445,
                185,450,
                215,465,
                225,450);
    ofFill();
    
    //Smile
    ofDrawCurve(225,475,
                260,505,
                275,500,
                300,475);
    ofNoFill();
    ofDrawCurve(300,475,
                285,496,
                330,465,
                400,410);
    ofFill();
                   
    
    

}