Exemple #1
0
	void BaseSpline::addPoint(vec2& point )
	{
		m_controlPoints.push_back(point);

		updatePoint();
		m_controlPointsC = m_controlPoints.size();
	}
bool DirtyListVisit::update(Feature* F)
{
    if (DeletePass) return false;
    if (!F->isDirty()) return false;
    if (F->isDeleted()) return false;

    if (Future.willBeErased(F) || Future.willBeAdded(F))
        return EraseFromHistory;
    if (!Future.updateNow(F))
        return EraseFromHistory;
    if (Node* Pt = dynamic_cast<Node*>(F))
    {
        if (Pt->isInteresting()) {
            if (!(Pt->hasOSMId()) && notYetAdded(Pt))
                return addPoint(Pt);
            else
                return updatePoint(Pt);
        } else
            return EraseFromHistory;
    }
    else if (Way* R = dynamic_cast<Way*>(F)) {
        for (int i=0; i<R->size(); ++i)
            if (!(R->get(i)->hasOSMId()) && notYetAdded(R->get(i)))
                add(R->get(i));
        return updateRoad(R);
    } else if (Relation* Rel = dynamic_cast<Relation*>(F)) {
        for (int i=0; i<Rel->size(); ++i)
            if (!(Rel->get(i)->hasOSMId()) && notYetAdded(Rel->get(i)))
                add(Rel->get(i));
        return updateRelation(Rel);
    }
    return EraseFromHistory;
}
Exemple #3
0
void boundaryArea::again()
{
	for ( list<boundaryCurve>::iterator it( divisions ); it; ++it ) {
		it->again();
	}
	updatePoint();
	touch( -1 );
}
Exemple #4
0
void CVVKeyPoint::updateImageSet(const QRectF &, const qreal &zoom)
{
	imagePointInScene_=image_->mapImagePointToParent(
				QPointF{ pt.x, pt.y });

	bool isInVisibleArea=imagePointisVisible();
	setVisible(show_ && isInVisibleArea);
	emit updatePoint(isInVisibleArea);
	zoom_ = zoom;
	prepareGeometryChange();
	// update();
}
Exemple #5
0
void DrawBoxes()
{
	for (int i =0 ;i<NUM_OF_BOXES;i++)
		for (int j = 0;j<6;j++)
		{
			glPushMatrix();
				glColor3d(boxesData[i*dataLength],boxesData[i*dataLength+1],boxesData[i*dataLength+2]);			
				glTranslated(boxesData[i*dataLength+3],boxesData[i*dataLength+4],boxesData[i*dataLength+5]);
				DrawCraneCube();
			glPopMatrix();
			boxes[i] = updatePoint(boxesData[i*dataLength+3],boxesData[i*dataLength+4],boxesData[i*dataLength+5]);
		}
}
Exemple #6
0
//public
void IdleAnimation::update(float dt)
{
    m_lines.erase(std::remove_if(m_lines.begin(), m_lines.end(), 
        [](const std::unique_ptr<LineSection>& line)
    {
        return line->dead(); 
    }), m_lines.end());
    
    for (auto& l : m_lines)
    {
        l->update(dt);
    }

    updatePoint(m_start, dt);
    updatePoint(m_end, dt);

    static sf::Clock timer;
    if (timer.getElapsedTime().asSeconds() > spawnFrequency)
    {
        timer.restart();
        m_lines.emplace_back(std::make_unique<LineSection>(m_start.position, m_end.position));
    }
}
Exemple #7
0
// add to project properties->configuration ->linker->input
//->additional dependences-> opengl32.lib;glu32.lib;glut.lib;
void init()
{
	int i, j;
	srand(time(0)); // set random values

	for (i = 0; i<GSIZE; i++)
		for (j = 0; j<GSIZE; j++)
			ground[i][j] = 0;

	hook = updatePoint(0, (stringLength - 2), 0);//(minMovePlarform + maxMovePlatform) / 2);
	hookInitialStartX = hook.x;
	hookInitialStartY = hook.y;
	hookInitialStartZ = hook.z;
	// set background color
	glClearColor(0.61, 0.5, 0.9, 0);
	glEnable(GL_DEPTH_TEST);
}
Exemple #8
0
 void PolygonCostCalculator::update( PointSet *pset )
 {
   if ( pset->type == GEOS_POINT )
   {
     updatePoint( pset );
   }
   else
   {
     double rx, ry;
     if ( pset->getDist( px, py, &rx, &ry ) < updateLinePoly( pset ) )
     {
       PointSet *point = new PointSet( ry, ry );
       update( point );
       delete point;
     }
   }
 }
Exemple #9
0
bool Reconstruction::refinePoint(const track &t,point3d &p) {
  
  int32_t num_frames = t.pixels.size();
  J         = new FLOAT[6*num_frames];
  p_observe = new FLOAT[2*num_frames];
  p_predict = new FLOAT[2*num_frames];
 
  int32_t iter=0;
  Reconstruction::result result = UPDATED;
  while (result==UPDATED) {     
    result = updatePoint(t,p,1,1e-5);
    if (iter++ > 20 || result==CONVERGED)
      break;
  }
  
  delete J;
  delete p_observe;
  delete p_predict;
  
  if (result==CONVERGED)
    return true;
  else
    return false;
}
Exemple #10
0
bool Editor::run(IrrlichtDevice* irr_device){
	// Irrlicht Device
	device=irr_device;
	driver = device->getVideoDriver();
	smgr = device->getSceneManager();
	guienv = device->getGUIEnvironment();
	coli=smgr->getSceneCollisionManager();
	device->setEventReceiver(this);

	// Editor Settings
	data=new ed_data();
	data->snapping = true;
	data->limiting = true;
	data->type = TOOL_NODEB;
	data->menu = NULL;

	// Load editor
	Load_Scene();
	Load_UI();

	// Create project
	project = new Project();
	project->nodes[0] = new Node(device,data);
	MoveTarget(project->nodes[0]->getPosition());

	// Set up window	
	device->setWindowCaption(convert((project->mod + stringc(" - The NodeBox Editor")).c_str()));
	device->setResizable(true);

	// Step data
	unsigned int counter=0;
	dimension2d<irr::u32> last_render_size = driver->getCurrentRenderTargetSize();

	while (device->run()){
		counter++;
		driver->beginScene(true, true, irr::video::SColor(255,100,101,140));
	
		int ResX = driver->getScreenSize().Width;
		int ResY = driver->getScreenSize().Height;

		if (isSplitScreen==true)
		{
			// Draw Camera 0
			if (camera[0]){
				smgr->setActiveCamera(camera[0]);
				driver->setViewPort(rect<s32>(0,0,ResX/2,ResY/2));
				smgr->drawAll();
			}

			// Draw Camera 1
			if (camera[1]){
				smgr->setActiveCamera(camera[1]);
				driver->setViewPort(rect<s32>(ResX/2,0,ResX,ResY/2));
				smgr->drawAll();
				
				updatePoint(0,5);
			}

			// Draw Camera 2
			if (camera[2]){
				smgr->setActiveCamera(camera[2]);
				driver->setViewPort(rect<s32>(0,ResY/2,ResX/2,ResY));
				smgr->drawAll();

				updatePoint(5,10);
			}

			// Draw Camera 3
			if (camera[3]){
				smgr->setActiveCamera(camera[3]);
				driver->setViewPort(rect<s32>(ResX/2,ResY/2,ResX,ResY));				
				smgr->drawAll();

				updatePoint(10,15);
			}

			// Draw GUI
			driver->setViewPort(rect<s32>(0,0,ResX,ResY));
			driver->draw2DLine(vector2d<irr::s32>(0,ResY/2),vector2d<irr::s32>(ResX,ResY/2),SColor(175,255,255,255));
			driver->draw2DLine(vector2d<irr::s32>(0,ResY/2-1),vector2d<irr::s32>(ResX,ResY/2-1),SColor(175,255,255,255));
			driver->draw2DLine(vector2d<irr::s32>(ResX/2,0),vector2d<irr::s32>(ResX/2,ResY),SColor(175,255,255,255));
			driver->draw2DLine(vector2d<irr::s32>(ResX/2+1,0),vector2d<irr::s32>(ResX/2+1,ResY),SColor(175,255,255,255));
		}else if (camera[currentWindow]){
			smgr->setActiveCamera(camera[currentWindow]);
			driver->setViewPort(rect<s32>(0,0,ResX,ResY));			
			smgr->drawAll();
			updatePoint(0,15);
		}

		guienv->drawAll();
		driver->endScene();

		
		if ( driver->getCurrentRenderTargetSize() != last_render_size){
			printf("Adjusting FOV to new screen size...\n");
			last_render_size = driver->getCurrentRenderTargetSize();
			camera[0]->setAspectRatio((float)driver->getScreenSize().Width/(float)driver->getScreenSize().Height);

			// reset matrix
			matrix4 projMat;
			irr::f32 orth_w = (float)driver->getScreenSize().Width / (float)driver->getScreenSize().Height;
			orth_w = 3 * orth_w;
			projMat.buildProjectionMatrixOrthoLH(orth_w,3,1,100);

			for (int i=1;i<4;i++){
				if (camera[i]){
					camera[i]->remove();
					camera[i]=NULL;
				}
			}

			// Remake cameras
			camera[1]=smgr->addCameraSceneNode(target,vector3df(0,2,-0.01),vector3df(0,0,0));
			camera[1]->setProjectionMatrix(projMat,true);
			camera[2]=smgr->addCameraSceneNode(target,vector3df(0,0,-5),vector3df(0,0,0));
			camera[2]->setProjectionMatrix(projMat,true);
			camera[3]=smgr->addCameraSceneNode(target,vector3df(-5,0,0),vector3df(0,0,0));
			camera[3]->setProjectionMatrix(projMat,true);	
		}

		if (counter>500){	
			counter=0;
			if (project->GetCurNode())
				project->GetCurNode()->update();	
		}

	}

	return true;
}
Exemple #11
0
	void SegmentShape::setSecondPoint(const Vector2f& p)
	{
		updatePoint(p, 1);
	}
Exemple #12
0
	void SegmentShape::setFirstPoint(const Vector2f& p)
	{
		updatePoint(p, 0);
	}
//----------------------------------------------------
void ofxCvCoordWarpingGui::_mouseDragged(ofMouseEventArgs &e){
	if (bCameraView) updatePoint(e.x, e.y, x, y, width*scale.x, height*scale.y);
}
bool cEditor::run(IrrlichtDevice* irr_device){
	// Get Pointers
	device=irr_device;
	driver = device->getVideoDriver();
	smgr = device->getSceneManager();
	guienv = device->getGUIEnvironment();
	
	data=new ed_data();
	data->snapping = true;
	data->limiting = true;

	coli=smgr->getSceneCollisionManager();
	device->setWindowCaption(L"The NodeBox Generator");
	device->setResizable(true);

	// Calculate Projection Matrix
	matrix4 projMat;
	irr::f32 orth_w = (float)driver->getScreenSize().Width / (float)driver->getScreenSize().Height;
	orth_w = 3 * orth_w;
	projMat.buildProjectionMatrixOrthoLH(orth_w,3,1,100);
	
	// Add rotational camera
	pivot=smgr->addEmptySceneNode(0,199);
	pivot->setPosition(vector3df(0,0,0));
	camera[0]=smgr->addCameraSceneNode(pivot,vector3df(0,0,-2),vector3df(0,0,0));
	smgr->setActiveCamera(camera[0]);
	pivot->setRotation(vector3df(25,-45,0));

	// Add Topdown camera
	camera[1]=smgr->addCameraSceneNode(NULL,vector3df(0,2,-0.01),vector3df(0,0,0));
	camera[1]->setProjectionMatrix(projMat,true);
	
	// Add front camera
	camera[2]=smgr->addCameraSceneNode(NULL,vector3df(0,0,-5),vector3df(0,0,0));
	camera[2]->setProjectionMatrix(projMat,true);

	// Add side camera
	camera[3]=smgr->addCameraSceneNode(NULL,vector3df(-5,0,0),vector3df(0,0,0));
	camera[3]->setProjectionMatrix(projMat,true);	

	// Add Light
	ILightSceneNode* light=smgr->addLightSceneNode(0,vector3df(25,50,0));
	light->setLightType(ELT_POINT);
	light->setRadius(2000);

	// Add Plane
	IMeshSceneNode* plane = smgr->addCubeSceneNode(1,0,-1,vector3df(0.5,-5.5,0.5),vector3df(0,0,0),vector3df(10,10,10));
	plane->setMaterialTexture(0, driver->getTexture("texture_terrain.png"));
	plane->setMaterialFlag(video::EMF_BILINEAR_FILTER, false);
	plane->getMaterial(0).getTextureMatrix(0).setTextureScale(10,10);

	// Add sky box
	scene::IMeshSceneNode* skybox=smgr->addCubeSceneNode(50);
	skybox->setMaterialTexture(0, driver->getTexture("sky.jpg"));
	skybox->setMaterialFlag(video::EMF_BILINEAR_FILTER, false);
	skybox->setMaterialFlag(video::EMF_LIGHTING,false);
	smgr->getMeshManipulator()->flipSurfaces(skybox->getMesh());
	plane_tri=smgr->createOctreeTriangleSelector(skybox->getMesh(),skybox);

	//Setup Current Manager
	nodes[0]=new cNode(device,data);
	curId=0;

	loadUI();

	unsigned int counter=0;

	while (device->run()){
		counter++;
		driver->beginScene(true, true, irr::video::SColor(255,100,101,140));
	
		int ResX = driver->getScreenSize().Width;
		int ResY = driver->getScreenSize().Height;

		if (isSplitScreen==true)
		{
			// Draw Camera 0
			if (camera[0]){
				smgr->setActiveCamera(camera[0]);
				driver->setViewPort(rect<s32>(0,0,ResX/2,ResY/2));
				smgr->drawAll();
			}

			// Draw Camera 1
			if (camera[1]){
				smgr->setActiveCamera(camera[1]);
				driver->setViewPort(rect<s32>(ResX/2,0,ResX,ResY/2));
				smgr->drawAll();
				
				updatePoint(0,4);
			}

			// Draw Camera 2
			if (camera[2]){
				smgr->setActiveCamera(camera[2]);
				driver->setViewPort(rect<s32>(0,ResY/2,ResX/2,ResY));
				smgr->drawAll();

				updatePoint(4,8);
			}

			// Draw Camera 3
			if (camera[3]){
				smgr->setActiveCamera(camera[3]);
				driver->setViewPort(rect<s32>(ResX/2,ResY/2,ResX,ResY));				
				smgr->drawAll();

				updatePoint(8,12);
			}
		}else if (camera[currentWindow]){
			smgr->setActiveCamera(camera[currentWindow]);
			driver->setViewPort(rect<s32>(0,0,ResX,ResY));			
			smgr->drawAll();
		}
  
		driver->setViewPort(rect<s32>(0,0,ResX,ResY));
		guienv->drawAll();
		driver->endScene();

		if (counter>500){	
			counter=0;
			if (nodes[curId])
				nodes[curId]->update();	
		}

	}

	return true;
}
Exemple #15
0
std::size_t TextureReader::update( const Eigen::Vector3d& offset )
{
    return updatePoint( offset ) ? 1 : 0;
}
Exemple #16
0
bool guiQuad::updatePoint(float x, float y, float offsetX, float offsetY, float width, float height, bool noDistorsion){
	
	if(!noDistorsion) {
		updatePoint(x, y, offsetX, offsetY, width, height);
	} else {
		
		getScaledQuadPoints(width, height);
		
		//nothing to update
		if(selected == -1) return false;
		
		if(width == 0 || height == 0){
			//dangerous so we ignore :)
			return false;
		}  
		
		if( x < offsetX ) 			x = offsetX;
		if( x > offsetX + width ) 	x = offsetX + width;
		if( y < offsetY ) 			y = offsetY;
		if( y > offsetY + height) 	y = offsetY + height;
		
		//lets get it in range x(0 - width) y(0 - height)
		float px = x - offsetX;
		float py = y - offsetY;
		
		if (!diag_v){
			py = diag_a*px + diag_b;
			if (py < 0) { py = 0; px = ((py - diag_b)/diag_a); }
			else if (py > height) { py = height; px = ((py - diag_b)/diag_a); }
		} else {
			px = selX;
			if (px < 0) { px = 0; py = diag_b; }
			else if (px > width) { px = width; py = diag_a * width + diag_b; }
		}
		
		cout << "px = " << px << endl;
		cout << "py = " << py << endl;
		
		if (selected == 0) {
			if (sideA_v == -1) {
				sideA_b = py - (sideA_m * px);
				cout << "sideA_b = " << sideA_b << endl;
				if (sideB_v == -1) {
					float temp_x;
					if (sideB_m < 0 || sideB_m > 1) {
						temp_x= (((sideA_m * temp_x) + sideA_b - sideB_b) / sideB_m) / width;
					} else {
						temp_x= (((sideB_m * temp_x) + sideB_b - sideA_b) / sideA_m) / width;
					}
					srcZeroToOne[1].x = temp_x;
					srcZeroToOne[1].y = ((sideA_m * (srcZeroToOne[1].x * width)) + sideA_b)/height;
				} else {
					srcZeroToOne[1].y = ((sideA_m * (srcZeroToOne[1].x * width)) + sideA_b) / height;
				}
			} else {
				srcZeroToOne[1].x = px/width;
				srcZeroToOne[1].y = ((sideB_m * px) + sideB_b) / height;
			}
			
			if (sideD_v == -1) {
				sideD_b = py - (sideD_m * px);
				cout << "sideD_b = " << sideD_b << endl;
				if (sideC_v == -1) {
					float temp_x;
					if (sideC_m < 0 || sideC_m > 1) {
						temp_x = (((sideD_m * temp_x) + sideD_b - sideC_b) / sideC_m) / width;
					} else {
						temp_x = (((sideC_m * temp_x) + sideC_b - sideD_b) / sideD_m) / width;
					}
					srcZeroToOne[3].x = temp_x;
					cout << "3x = " << temp_x * width << endl;
					srcZeroToOne[3].y = ((sideD_m * (srcZeroToOne[3].x * width)) + sideD_b)/height;
					cout << "3y = " << srcZeroToOne[3].y * height << endl;
				} else {
					srcZeroToOne[3].y = ((sideD_m * (srcZeroToOne[3].x * width)) + sideD_b) / height;
				}
			} else {
				srcZeroToOne[3].x = px/width;
				srcZeroToOne[3].y = ((sideC_m * px) + sideC_b) / height;
				
			}
			
			if (srcZeroToOne[1].x < 0) { srcZeroToOne[1].x = 0; }
			else if (srcZeroToOne[1].x > 1) { srcZeroToOne[1].x = 1; }
			if (srcZeroToOne[1].y < 0) { srcZeroToOne[1].y = 0; }
			else if (srcZeroToOne[1].y > 1) { srcZeroToOne[1].y = 1; }
			
			if (srcZeroToOne[3].x < 0) { srcZeroToOne[3].x = 0; }
			else if (srcZeroToOne[3].x > 1) { srcZeroToOne[3].x = 1; }
			if (srcZeroToOne[3].y < 0) { srcZeroToOne[3].y = 0; }
			else if (srcZeroToOne[3].y > 1) { srcZeroToOne[3].y = 1; }
			
		}
			
		
		//now get in 0-1 range
		px /= width;;
		py /= height;
		
		srcZeroToOne[selected].x 	= px;
		srcZeroToOne[selected].y 	= py;
		
		anchorPoint.x = (least(srcZeroToOne[1].x, srcZeroToOne[2].x) + greatest(srcZeroToOne[0].x, srcZeroToOne[3].x))/2;
		anchorPoint.y = (least(srcZeroToOne[2].y, srcZeroToOne[3].y) + greatest(srcZeroToOne[0].y, srcZeroToOne[1].y))/2;		
	
	}
	
	return true;
}
Exemple #17
0
void ModelReader::update( const Eigen::Vector3d& offset )
{
    updatePoint( offset );
}
Exemple #18
0
/****************************************************************
 * Main
 ****************************************************************/
int main(int argc, char **argv, char **envp)
{
	struct pollfd fdset[5];
	int nfds = 5;
	int gpio_in_1_fd, gpio_out_1_fd, gpio_in_2_fd, gpio_out_2_fd, gpio_in_3_fd, gpio_out_3_fd, gpio_in_4_fd, gpio_out_4_fd;
	int timeout, rc;
	char buf[MAX_BUF];
	int gpio_in_1, gpio_out_1, gpio_in_2, gpio_out_2, gpio_in_3, gpio_out_3, gpio_in_4, gpio_out_4;
	int len;

	// run with ./etch_gpio 50 115 51 49 20 48 7 112

	if (argc < 9) {
		printf("Usage: %s <gpio-in> <gpio-out>, ... , ... , ...\n\n");
		printf("Interrupt driven output of four buttons, put in pairs of in/out\n");
		exit(-1);
	}

	// Set the signal callback for Ctrl-C
	signal(SIGINT, signal_handler);

	gpio_in_1 = atoi(argv[1]);
	gpio_out_1 = atoi(argv[2]);
	gpio_export(gpio_in_1);
	gpio_export(gpio_out_1);
	gpio_set_dir(gpio_in_1, "in");
	gpio_set_dir(gpio_out_1, "out");
	gpio_set_edge(gpio_in_1, "falling");
	gpio_in_1_fd = gpio_fd_open(gpio_in_1, O_RDONLY);
	gpio_out_1_fd = gpio_fd_open(gpio_out_1, O_RDONLY);

	gpio_in_2 = atoi(argv[3]);
	gpio_out_2 = atoi(argv[4]);
	gpio_export(gpio_in_2);
	gpio_export(gpio_out_2);
	gpio_set_dir(gpio_in_2, "in");
	gpio_set_dir(gpio_out_2, "out");
	gpio_set_edge(gpio_in_2, "falling");
	gpio_in_2_fd = gpio_fd_open(gpio_in_2, O_RDONLY);
	gpio_out_2_fd = gpio_fd_open(gpio_out_2, O_RDONLY);

	gpio_in_3 = atoi(argv[5]);
	gpio_out_3 = atoi(argv[6]);
	gpio_export(gpio_in_3);
	gpio_export(gpio_out_3);
	gpio_set_dir(gpio_in_3, "in");
	gpio_set_dir(gpio_out_3, "out");
	gpio_set_edge(gpio_in_3, "falling");
	gpio_in_3_fd = gpio_fd_open(gpio_in_3, O_RDONLY);
	gpio_out_3_fd = gpio_fd_open(gpio_out_3, O_RDONLY);

	gpio_in_4 = atoi(argv[7]);
	gpio_out_4 = atoi(argv[8]);
	gpio_export(gpio_in_4);
	gpio_export(gpio_out_4);
	gpio_set_dir(gpio_in_4, "in");
	gpio_set_dir(gpio_out_4, "out");
	gpio_set_edge(gpio_in_4, "falling");
	gpio_in_4_fd = gpio_fd_open(gpio_in_4, O_RDONLY);
	gpio_out_4_fd = gpio_fd_open(gpio_out_4, O_RDONLY);

	timeout = POLL_TIMEOUT;

	int grid[N][N];
	int i, j;
	for (i = 0; i < N; ++i)
	{
		for (j = 0; j < N; ++j)
		{
			grid[i][j] = 0;
		}
	}
	
	point currentPoint = {.x = 0, .y = 0};
	int currentDirection = NONE;
	int isErasing = 0;
 
	while (keepgoing) {
		memset((void*)fdset, 0, sizeof(fdset));

		fdset[0].fd = STDIN_FILENO;
		fdset[0].events = POLLIN;
      
		fdset[1].fd = gpio_in_1_fd;
		fdset[1].events = POLLPRI;
		
		fdset[2].fd = gpio_in_2_fd;
		fdset[2].events = POLLPRI;

		fdset[3].fd = gpio_in_3_fd;
		fdset[3].events = POLLPRI;
		
		fdset[4].fd = gpio_in_4_fd;
		fdset[4].events = POLLPRI;

		rc = poll(fdset, nfds, timeout);      

		if (rc < 0) {
			printf("\npoll() failed!\n");
			return -1;
		}
            
		if (fdset[1].revents & POLLPRI) {
			lseek(fdset[1].fd, 0, SEEK_SET);
			len = read(fdset[1].fd, buf, MAX_BUF);
			unsigned int value;
			if (buf[0] == '0') {
				value = 0;
			} else if (buf[0] == '1') {
				value = 1;
			}
			gpio_set_value(gpio_out_1, value);
			currentDirection = UP;
		} else if (fdset[2].revents & POLLPRI) {
			lseek(fdset[2].fd, 0, SEEK_SET);
			len = read(fdset[2].fd, buf, MAX_BUF);
			unsigned int value;
			if (buf[0] == '0') {
				value = 0;
			} else if (buf[0] == '1') {
				value = 1;
			}
			gpio_set_value(gpio_out_2, value);
			currentDirection = DOWN;
		} else if (fdset[3].revents & POLLPRI) {
			lseek(fdset[3].fd, 0, SEEK_SET);
			len = read(fdset[3].fd, buf, MAX_BUF);
			unsigned int value;
			if (buf[0] == '0') {
				value = 0;
			} else if (buf[0] == '1') {
				value = 1;
			}
			gpio_set_value(gpio_out_3, value);
			currentDirection = RIGHT;
		} else if (fdset[4].revents & POLLPRI) {
			lseek(fdset[4].fd, 0, SEEK_SET);
			len = read(fdset[4].fd, buf, MAX_BUF);
			unsigned int value;
			if (buf[0] == '0') {
				value = 0;
			} else if (buf[0] == '1') {
				value = 1;
			}
			gpio_set_value(gpio_out_4, value);
			currentDirection = LEFT;
		} else {
			currentDirection = NONE;
		}

		if (fdset[0].revents & POLLIN) {
			(void)read(fdset[0].fd, buf, 1);
			//printf("\npoll() stdin read 0x%2.2X\n", (unsigned int) buf[0]);
			if (buf[0]=='e') {
				isErasing = !isErasing;
			}
		}

		// Evaluate
		currentPoint = updatePoint(currentDirection, currentPoint);
		#ifdef DEBUG
		printf("After Move: %d, %d\n", currentPoint.x, currentPoint.y);
		#endif
		updateBoardBasedOnCurrentPoint(grid, currentPoint, isErasing);

		// Print the N by N matrix
		printGrid(grid, isErasing);
	}

	gpio_fd_close(gpio_in_1_fd);
	gpio_fd_close(gpio_out_1_fd);
	gpio_fd_close(gpio_in_2_fd);
	gpio_fd_close(gpio_out_2_fd);
	gpio_fd_close(gpio_in_3_fd);
	gpio_fd_close(gpio_out_3_fd);
	gpio_fd_close(gpio_in_4_fd);
	gpio_fd_close(gpio_out_4_fd);
	return 0;
}

point updatePoint(int dir, point pt)
{
	point returnPoint;

	#ifdef DEBUG
	printf("Before Move: %d, %d\n", pt.x, pt.y);
	#endif

	switch (dir) {
		case UP:
			#ifdef DEBUG
			printf("Moving up\n");
			#endif
			if (pt.x > 0)
			{
				pt.x--;
			}
			// returnPoint = pt;
			// break;
			return pt;

		case DOWN:
			#ifdef DEBUG
			printf("Moving down\n");
			#endif

			if (pt.x < N-1)
			{
				pt.x++;
			}
			// returnPoint = pt;
			// break;
			return pt;

		case LEFT:
			#ifdef DEBUG
			printf("Moving left\n");
			#endif

			if (pt.y > 0)
			{
				pt.y--;
			}
			// returnPoint = pt;
			// break;
			return pt;

		case RIGHT:
			#ifdef DEBUG
			printf("Moving right\n");
			#endif

			if (pt.y < N-1)
			{
				pt.y++;
			}
			// returnPoint = pt;
			// break;
			return pt;

		case NONE:
			#ifdef DEBUG
			printf("Moving not at all\n");
			#endif

			// returnPoint = pt;
			// break;
			return pt;

		default:
			// Should never get here. Ever.
			// printf("This message should never appear\n");
			break;

		// return returnPoint;
	}
}
Exemple #19
0
void ShowAll()
{
	//double radious = 
	double rotate = ((rotate_control - 50) * 360 / 80);
	double c = sqrt(hookInitialStartX*hookInitialStartX + hookInitialStartZ*hookInitialStartZ);
	int delta = hookInitialStartY - ((stringLength - 2));

	//update rotate
	hook = updatePoint(c*sin(rotate*PI / 180), hookInitialStartY - delta, c*cos(rotate*PI / 180));

	glEnable(GL_DEPTH_TEST);
	// start of the transformations
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

	//DrawGround();
	DrawCraneGround();
	DrawBoxes();

	glPushMatrix();
	glTranslated(4, 1, 0);
	glRotated(rotate, 0, 1, 0);
	glTranslated(-4, -1, 0);
	DrawCrane();
	glPopMatrix();

	// pick box when press hold
	if (hold)
		if (BoxInfocus != -1)
		{
			boxesData[BoxInfocus*dataLength +3] = hook.x+4;
			boxesData[BoxInfocus*dataLength +4] = hook.y+12;
			boxesData[BoxInfocus*dataLength +5] = hook.z;
		}
		else
			BoxInfocus = hookIntersects();

	if (realese)
	{
		if (BoxInfocus != -1)
		{
			boxFalling = BoxInfocus;
			BoxInfocus = -1;
		}
		realese = false;
	}
	if(boxFalling != -1)
	{
		if (boxesData[boxFalling*dataLength +4] > 1 && !BoxIntersects())
				boxesData[boxFalling*dataLength +4] -= fallSpeed;
		else
			boxFalling = -1;
	}
	// draw red point
	glColor3d(0, 0, 1);
	glPointSize(5);
	glBegin(GL_POINTS);
	glVertex3d(hook.x + 4, hook.y + 12, hook.z);
	glEnd();

}
bool DirtyListVisit::add(Feature* F)
{
    if (DeletePass) return false;
    if (F->isDeleted()) return false;
    // TODO Needed to add children of updated imported features. Sure there is no advert cases?
    //if (!F->isDirty()) return false;

    // Allow "Force Upload" of OSM objects
    //if (F->hasOSMId()) return false;

    if (Future.willBeErased(F))
        return EraseFromHistory;
    for (int i=0; i<AlreadyAdded.size(); ++i)
        if (AlreadyAdded[i] == F)
            return EraseResponse[i];

    bool x;
    if (Node* Pt = CAST_NODE(F))
    {
        if (Pt->isInteresting())
        {
            if (F->hasOSMId())
                x = updatePoint(Pt);
            else
                x = addPoint(Pt);
            AlreadyAdded.push_back(F);
            EraseResponse.push_back(x);
            return x;
        }
        else
            return EraseFromHistory;
    }
    else if (Way* R = dynamic_cast<Way*>(F))
    {
        for (int i=0; i<R->size(); ++i)
            if (!R->getNode(i)->isVirtual())
                if (!(R->get(i)->hasOSMId()) && notYetAdded(R->get(i)))
                    add(R->get(i));
        if (F->hasOSMId())
            x = updateRoad(R);
        else
            x = addRoad(R);
        AlreadyAdded.push_back(F);
        EraseResponse.push_back(x);
        return x;
    }
    else if (Relation* Rel = dynamic_cast<Relation*>(F))
    {
        for (int i=0; i<Rel->size(); ++i)
            if (!(Rel->get(i)->hasOSMId()) && notYetAdded(Rel->get(i)))
                add(Rel->get(i));
        if (F->hasOSMId())
            x = updateRelation(Rel);
        else
            x = addRelation(Rel);
        AlreadyAdded.push_back(F);
        EraseResponse.push_back(x);
        return x;
    }
    return EraseFromHistory;
}
Exemple #21
0
void FightLayer::initCard(){
    
    auto fightBackground = Sprite::create("textures/IMG_Background/fight_background.png");
    auto cs = fightBackground->getContentSize();
    
    _bgSize = cs;
    _nFight = LayerColor::create(Color4B(255,0,0,0),cs.width,cs.height);
    _nFight->setAnchorPoint(Point(0.5,0));

    _animalNode = Node::create();
    
    auto p = VisibleRect::topRight()-Point(cs.width,cs.height);
    _nFight->setPosition(p.x/2,p.y/2);
    _animalNode->setPosition(Point(cs.width/2,cs.height/2)+Point(p.x/2,p.y/2));
    
    addChild(_nFight);
    addChild(_animalNode);
    
    auto node = Node::create();
    node->setPosition(cs.width/2,cs.height/2);
    node->addChild(fightBackground);
    _nFight->addChild(node);

    for(auto id=0;id<_myVec.size();id++){
        
        auto myCard = _myVec.at(id);
        auto scale = myCard->getScaleX();
        node->addChild(myCard);
        auto myAn = myCard->getAnimal()->getThisLayer();
        
        auto dcp = myCard->getPosition();
        auto dp = myAn->getPosition();
        auto np = dcp + Point(0, dp.y*scale);
        
        auto nd = Node::create();
        myAn->setScale(scale);
        myAn->setPosition(myAn->getPosition().x,0);
        nd->addChild(myAn);
        
        updatePoint(nd, np);
        _animalNode->addChild(nd);
    }
    
    for(auto ic = 0;ic<_monsterVec.size();ic++){
        
        auto msCard = _monsterVec.at(ic);
        auto cScale = msCard->getScaleX();
        node->addChild(msCard);
        auto msAn = msCard->getAnimal()->getThisLayer();
        
        auto cDcp = msCard->getPosition();
        auto cDp = msAn->getPosition();
        auto dNp = cDcp+Point(0,cDp.y*cScale);
        
        auto cNd = Node::create();
        msAn->setScale(cScale);
        msAn->setPosition(msAn->getPositionX(),0);
        cNd->addChild(msAn);
        
        updatePoint(cNd, dNp);
        _animalNode->addChild(cNd);
    }
}