Quantcast
Channel: beginners - openFrameworks
Viewing all articles
Browse latest Browse all 4929

Need help trouble shooting

$
0
0

@sevdavis wrote:

So i’m working on a program in which the user interacts with the face of a bear, The user drags the mouse to 1 of 3 objects. upon doing so the user is able to move the object on when clicked to the face of the bear, if these objects touch the bear’s face, the bear will display an emotion. one object makes the bear get teary eyed, one makes the bear angry, another makes the bear happy.

my issue right now is within the angry emotion. The “isAngry” boolean is set true when 2 different collision parameters are met. while in “isAngry” ive written code that when the pepper object is touching the bears face, its eyebrows go from relaxed to diagonal and its face becomes red. however, using the ofRotate function it draws the eyebrows at a different position, even though the position for where to draw eyebrows is well defined can i get some help trouble shooting this. I’ll post the codes so anyone with expert experience can help me find a solution to the issue.

ofApp.h values.

#pragma once

#include “ofMain.h”

class ofApp : public ofBaseApp{

public:
	void setup();
	void update();
	void draw();

	void keyPressed(int key);
	void keyReleased(int key);
	void mouseMoved(int x, int y );
	void mouseDragged(int x, int y, int button);
	void mousePressed(int x, int y, int button);
	void mouseReleased(int x, int y, int button);
	void mouseEntered(int x, int y);
	void mouseExited(int x, int y);
	void windowResized(int w, int h);
	void dragEvent(ofDragInfo dragInfo);
	void gotMessage(ofMessage msg);
	
	//Bear head use vec2f for position
	ofVec2f bearHead;
	float bearHeadSize;

	//Bear tummy use vec2f for position
	ofVec2f tummy;
	float tummysize;

	ofVec2f innerTummy;
	float innerTummySize;

	//Bear arms use vec2f for position
	ofVec2f leftArm;
	ofVec2f rightArm;
	float  armSizeW;
	float armSizeH;
	

	//Bear eyes use vect2f for position
	ofVec2f bearEye;
	float bearEyeSize;
	ofVec2f bearEye2;

	//bear ear use vec2f for position
	ofVec2f bearEar;
	ofVec2f bearEar2;
	float   EarSize;

	//bear ear use vec2f for position
	ofVec2f innerEar;
	ofVec2f innerEar2;
	float   innerEarSize;

	//Bear eyebrows use vect2f for position

	ofVec2f bearEyebrow;
	ofVec2f bearEyebrow2;
	float bearEyebrowSizeW;
	float bearEyebrowSizeH;

	//mouse position
	ofVec2f handPos;
	float handSize;

	//honeycomb position
	ofVec2f honeyCombPos;
	float honeycombSize;


	//pepper position
	ofVec2f pepperPos;
	float pepperSize;
	bool pepperHeld;


	//orange position
	ofVec2f orangePos;
	float orangeSize;
	bool orangeHeld;



	// set emotion booleans to false

	bool isHappy;
	bool isAngry;
	bool isSad;

};

*ofApp.cpp values and code
#include “ofApp.h”

//--------------------------------------------------------------
void ofApp::setup(){

//set up mouse position
handPos.set(0, 0);
handSize = 20;

//set up honeycomb position
honeyCombPos.set(500, 750);
honeycombSize = 50;

//set up pepper position
pepperPos.set(200, 750);
pepperSize = 50;

//set up orange position
orangePos.set(800, 750);
orangeSize = 50;


/*set bear's head values 
1) bear's head position
2) size of bear's head
*/
bearHead.set(450, 300);
bearHeadSize = 150;

/*set bear's ears values, bear's left and right ear position
and size of bears ear*/
bearEar.set(330, 160);
bearEar2.set(560, 160);
EarSize = 70;

innerEar.set(330, 160);
innerEar2.set(560, 160);
innerEarSize = 35;




/* set bear's eyebrows values
1) bear's left eyebrow position and size
2) bear's right eyebrow position and size
*/

bearEyebrow.set(340, 230);
bearEyebrow2.set(500, 230);
bearEyebrowSizeW = 60;
bearEyebrowSizeH = 10;

/* Set bear's eyes values
1) left eye's values position
left eyes size
2) right eyes's position,
right eyes' size
*/

bearEye.set(370, 270);
bearEye2.set(530, 270);
bearEyeSize = 30;




//set background color
ofSetBackgroundColor(0, 0, 0);

// set emotion booleans to false

 isHappy = false;
 isAngry = false;
 isSad = false;

 orangeHeld = false;
 pepperHeld = false;

}

//--------------------------------------------------------------
void ofApp::update(){

//mouse hand
handPos.x = ofGetMouseX();
handPos.y = ofGetMouseY();



//honeycomb to bear collision
float dist = ofDist(honeyCombPos.x, honeyCombPos.y, bearHead.x, bearHead.y);
if (dist < honeycombSize + bearHeadSize) {
	cout << "they touch!" << endl;
	isHappy = true;
}
else {
	isHappy = false;
}


//pepper to bear collision
float dist2 = ofDist(pepperPos.x, pepperPos.y, bearHead.x, bearHead.y);
if (dist2 < pepperSize + bearHeadSize) {
	isAngry = true;
}
else {
	isAngry = false;
}



//orange to bear collision
float dist3 = ofDist(orangePos.x, orangePos.y, bearHead.x, bearHead.y);
if (dist3 < orangeSize + bearHeadSize) {
	cout << "bear is sad!" << endl;
	isSad = true;
}
else {
	isSad = false;
}


//bear head
bearHead.x = 450;
bearHead.y = 300;

//bear's left ear
bearEar.x = 330;
bearEar.y = 160;
innerEar.x = 330;
innerEar.y = 160;

//bear's right ear
bearEar2.x = 560; 
bearEar2.y = 160;
innerEar2.x = 560;
innerEar2.y = 160;

//bear left eye
bearEye.x = 370;
bearEye.y = 270;

//bear right eye
bearEye2.x = 530;
bearEye2.y = 270;

// bear left eyebrow
bearEyebrow.x = 340;
bearEyebrow.y = 230;

// bear right eyebrow
bearEyebrow2.x = 500;
bearEyebrow2.y = 230;

}

//--------------------------------------------------------------
void ofApp::draw(){

//draw the mouse
ofSetColor(0, 0, 255);
ofDrawCircle(handPos.x, handPos.y, handSize);

//draw the emotion inducing foods
ofSetColor(255, 206, 7);
ofDrawCircle(honeyCombPos.x, honeyCombPos.y, honeycombSize);

ofSetColor(97, 10, 13);
ofDrawCircle(pepperPos.x, pepperPos.y, pepperSize);

ofSetColor(235, 158, 26);
ofDrawCircle(orangePos.x, orangePos.y, orangeSize);


//draw the bear's head

//Set color of bear's head
ofSetColor(71, 47, 6);
ofDrawCircle(bearHead.x, bearHead.y, bearHeadSize);
if (isSad == true) {
	ofSetColor(0, 0, 132);
	ofDrawCircle(bearHead.x, bearHead.y, bearHeadSize);
}

//Set color of bear's ears
ofSetColor(71, 48, 6);
ofDrawCircle(bearEar.x, bearEar.y, EarSize);
ofDrawCircle(bearEar2.x, bearEar2.y, EarSize);

//set color of inner bear's ears
ofSetColor(101, 67, 33);
ofDrawCircle(innerEar.x, innerEar.y, innerEarSize);
ofDrawCircle(innerEar2.x, innerEar2.y, innerEarSize);

//draw bears eyes. set its color
ofSetColor(0, 0, 0);
ofDrawCircle(bearEye.x, bearEye.y, bearEyeSize);
if (isSad == true) {
	float centerX = bearEye.x - 25;
	float centerY = bearEye.y + 20;

	float center1X = bearEye.x;
	float center1Y = bearEye.y;

	float xPupil = center1X;
	float yPupil = center1Y;

	float swarmDist = 25;
	float swarmSpeed = 0.3f;
	float size = .05 + ofNoise(ofGetElapsedTimef(), 3) * 2;
	ofSetColor(0, 0, 0);
	ofDrawCircle(bearEye.x, bearEye.y, bearEyeSize);
	for (int i = 0; i < 4; i++) {
		float noiseX = ofNoise(i, ofGetElapsedTimef()*swarmSpeed, 0);
		float noiseY = ofNoise(i, ofGetElapsedTimef()*swarmSpeed, 100);
		float xPos = centerX - swarmDist / 2 + noiseX * swarmDist;
		float yPos = centerY - swarmDist / 2 + noiseY * swarmDist;

		ofSetColor(255, 255, 255);
		ofDrawCircle(xPos, yPos, 5);

		

		ofPushMatrix();
		//

		ofTranslate(xPupil, yPupil);
		ofScale(size, size);
		ofDrawCircle(0, 0, 10);
		//
		ofPopMatrix();

	}
}

ofDrawCircle(bearEye2.x, bearEye2.y, bearEyeSize);
if (isSad == true) {
	float centerXX = bearEye2.x - 25;
	float centerYY = bearEye2.y + 20;

	float center1XX = bearEye2.x;
	float center1YY = bearEye2.y;

	float xPupil1 = center1XX;
	float yPupil1 = center1YY;

	float swarmDist = 25;
	float swarmSpeed = 0.3f;
	float size = .05 + ofNoise(ofGetElapsedTimef(), 3) * 2;
	ofSetColor(0, 0, 0);
	ofDrawCircle(bearEye2.x, bearEye2.y, bearEyeSize);
	for (int i = 0; i < 4; i++) {
		float noiseX = ofNoise(i, ofGetElapsedTimef()*swarmSpeed, 0);
		float noiseY = ofNoise(i, ofGetElapsedTimef()*swarmSpeed, 100);
		float xPos1 = centerXX - swarmDist / 2 + noiseX * swarmDist;
		float yPos1 = centerYY - swarmDist / 2 + noiseY * swarmDist;

		ofSetColor(255, 255, 255);
		ofDrawCircle(xPos1, yPos1, 5);



		ofPushMatrix();
		//

		ofTranslate(xPupil1, yPupil1);
		ofScale(size, size);
		ofDrawCircle(0, 0, 10);
		//
		ofPopMatrix();

	}
}

//draw angry parameters

if (isAngry == true) {

	// right eye and pupil
	

	ofSetColor(255, 0, 0);
	ofDrawCircle(bearHead.x, bearHead.y, bearHeadSize);


	// draw bear eyes

	
	ofSetColor(0, 0, 0);
	ofDrawCircle(bearEye.x, bearEye.y, bearEyeSize);
	ofDrawCircle(bearEye2.x, bearEye2.y, bearEyeSize);

    

}




// bears eyebrows, set color
ofSetColor(101, 67, 33);
ofDrawRectangle(bearEyebrow.x, bearEyebrow.y, bearEyebrowSizeW, bearEyebrowSizeH);
ofDrawRectangle(bearEyebrow2.x, bearEyebrow2.y, bearEyebrowSizeW, bearEyebrowSizeH);

if (isAngry == true) {



   // draw bear's eyebrows on an angle
	ofSetColor(101, 67, 33);		
	ofRotateZ(45);
	ofDrawRectangle(bearEyebrow.x, bearEyebrow.y, bearEyebrowSizeW, bearEyebrowSizeH);


}

/*When eyebrows are drawn its it doesn’t draw in the location specified in the bearEyebrow ofVec2f… and this occurs for both eyebrows within the isAngry boolean */

if (isAngry == true) {
	ofSetColor(101, 67, 33);		
	ofRotateZ(135);
	ofDrawRectangle(bearEyebrow2.x, bearEyebrow2.y, bearEyebrowSizeW, bearEyebrowSizeH);
}

}

//--------------------------------------------------------------
void ofApp::keyPressed(int key){

}

//--------------------------------------------------------------
void ofApp::keyReleased(int key){

}

//--------------------------------------------------------------
void ofApp::mouseMoved(int x, int y ){

}

//--------------------------------------------------------------
void ofApp::mouseDragged(int x, int y, int button){
cout << "mouse move " << orangeHeld << endl;
if (orangeHeld == true) {
cout << “moving” << endl;
orangePos = handPos;
}

if (pepperHeld == true) {
	pepperPos = handPos;
}

}

//--------------------------------------------------------------
void ofApp::mousePressed(int x, int y, int button){
cout << “mouse position” << handPos.x << " " << handPos.y << endl;
float dist4 = ofDist(orangePos.x, orangePos.y, handPos.x, handPos.y);
if (dist4 < orangeSize + handSize) {
orangeHeld = true;
cout << “held now” << endl;
}
else {
orangeHeld = false;
}

float dist5 = ofDist(pepperPos.x, pepperPos.y, handPos.x, handPos.y);
if (dist5 < pepperSize + handSize) {
	pepperHeld = true;
	cout << "held now" << endl;
}
else {
	
	pepperHeld = false;
}

}

//--------------------------------------------------------------
void ofApp::mouseReleased(int x, int y, int button){
orangeHeld = false;
pepperHeld = false;
}

//--------------------------------------------------------------
void ofApp::mouseEntered(int x, int y){

}

//--------------------------------------------------------------
void ofApp::mouseExited(int x, int y){

}

//--------------------------------------------------------------
void ofApp::windowResized(int w, int h){

}

//--------------------------------------------------------------
void ofApp::gotMessage(ofMessage msg){

}

//--------------------------------------------------------------
void ofApp::dragEvent(ofDragInfo dragInfo){

}

Posts: 1

Participants: 1

Read full topic


Viewing all articles
Browse latest Browse all 4929

Trending Articles