Esempio n. 1
0
		//this is only really for forces made manually, not by the forces that are made by other objects(including friction and normal forces)
		void Force::tick(std::vector<Object *> &objects) { //check for objects to act upon
			for(Object *obj : objects) {
				vec2* corners = obj->getVertices(); //i know for now that this array has a size of 4

				//for(int i = 0; i < 4; i++)
					//std::cout << corners[i] << std::endl;

				//check each side for collisions with this line
				vec2 intersect1 = lineIntersect(corners[0], corners[1]); //top side
				vec2 intersect2 = lineIntersect(corners[1], corners[2]); //right side
				vec2 intersect3 = lineIntersect(corners[2], corners[3]); //bottom side
				vec2 intersect4 = lineIntersect(corners[3], corners[0]); //left side
				
				//now check to see if each intersection is actually on the 
				if(pointOnSegment(intersect1, corners[0], corners[1])) {
					std::cout << "1" << std::endl;
					obj->forceApplied(this, intersect1);
				}

				if(pointOnSegment(intersect2, corners[1], corners[2])) {
					std::cout << "1" << std::endl;
					obj->forceApplied(this, intersect2);
				}

				if(pointOnSegment(intersect3, corners[2], corners[3])) {
					std::cout << "1" << std::endl;
					obj->forceApplied(this, intersect3);
				}

				if(pointOnSegment(intersect4, corners[3], corners[4])) {
					std::cout << "1" << std::endl;
					obj->forceApplied(this, intersect4);
				}

				toDelete = true;

				//maybe a for-loop here?
				//check if the intersects are in-bounds - should I have a method that does this?
				//a different method may need to be used - b/c how would i know which point is before the other?

				/*if(intersect1.x > corners[0].x && intersect1.x < corners[1].x)
					if(intersect1.y < corners[0].y && intersect1.y > corners[1].y)
						std::cout << "1 is inbounds" << std::endl;
				if(intersect2.x > corners[1].x && intersect2.x < corners[2].x)
					if(intersect2.y > corners[1].y && intersect2.y < corners[2].y)
						std::cout << "2 is inbounds" << std::endl;
				if(intersect1.x > corners[2].x && intersect1.x < corners[3].x)
					if(intersect1.y > corners[2].y && intersect1.y < corners[3].y)
						std::cout << "3 is inbounds" << std::endl;
				if(intersect1.x > corners[3].x && intersect1.x < corners[0].x)
					if(intersect1.y > corners[3].y && intersect1.y < corners[0].y)
						std::cout << "4 is inbounds" << std::endl;
*/
				
			}
		}
Esempio n. 2
0
	bool Segment::containPoint(const cocos2d::Vec2& point) const
	{
		return pointOnSegment(point, start, end);
	}