示例#1
0
文件: hex.c 项目: 00001/plan9port
proj
hex(void)
{
	int i;
	double t;
	double root3;
	double c,d;
	struct place p;
	hcut[2] = PI;
	hcut[1] = hcut[2]/3;
	hcut[0] = -hcut[1];
	root3 = sqrt(3.);
	rootroot3 = sqrt(root3);
	t = 15 -8*root3;
	hkc = t*(1-sqrt(1-1/(t*t)));
	elco2(BIG,0.,hkc,1.,1.,&w2,&t);
	w2 *= 2;
	rootk = sqrt(hkc);
	latlon(90.,90.,&hem);
	latlon(90.,0.,&p);
	Xhex(&p,&c,&t);
	latlon(0.,0.,&p);
	Xhex(&p,&d,&t);
	for(i=0;i<3;i++) {
		ki[i] *= root3/2;
		cr[i] = c + (c-d)*kr[i];
		ci[i] = (c-d)*ki[i];
	}
	deg2rad(0.,&twist);
	return(Xhex);
}
示例#2
0
文件: tetra.c 项目: 99years/plan9
proj
tetra(void)
{
	register i;
	int j;
	register struct place *tp;
	register struct tproj *tpp;
	double t;
	root3 = sqrt(3.);
	rt3inv = 1/root3;
	two_rt3 = 2*root3;
	tkc = sqrt(.5-.25*root3);
	tk = sqrt(.5+.25*root3);
	tcon = 2*sqrt(root3);
	elco2(tcon/(root3-1),0.,tkc,1.,1.,&f0r,&f0i);
	elco2(1.e15,0.,tk,1.,1.,&fpir,&fpii);
	fpir *= 2;
	fpii *= 2;
	for(i=0;i<4;i++) {
		tx[i] *= f0r*root3;
		ty[i] *= f0r;
		tp = &tpole[i];
		t = tp->nlat.s = tpoleinit[i][0]/root3;
		tp->nlat.c = sqrt(1 - t*t);
		tp->nlat.l = atan2(tp->nlat.s,tp->nlat.c);
		deg2rad(tpoleinit[i][1],&tp->wlon);
		for(j=0;j<4;j++) {
			tpp = &tproj[i][j];
			latlon(tpp->tlat,tpp->tlon,&tpp->projpl);
			deg2rad(tpp->ttwist,&tpp->projtw);
			deg2rad(tpp->trot,&tpp->postrot);
		}
	}
	return(Xtetra);
}
示例#3
0
文件: zcoord.c 项目: aahud/harvey
void
orient(double lat, double lon, double theta)
{
	lat = cirmod(lat);
	if(lat>90.) {
		lat = 180. - lat;
		lon -= 180.;
		theta -= 180.;
	} else if(lat < -90.) {
		lat = -180. - lat;
		lon -= 180.;
		theta -= 180;
	}
	latlon(lat,lon,&pole);
	deg2rad(theta, &twist);
	latlon(lat,180.-theta,&ipole);
	deg2rad(180.-lon, &itwist);
}
示例#4
0
void GeoreferencingDialog::requestDeclination(bool no_confirm)
{
#if defined(QT_NETWORK_LIB)
	if (georef->isLocal())
		return;
	
	// TODO: Move to resources or preferences. Assess security risks of url distinction.
	QString user_url("http://www.ngdc.noaa.gov/geomag-web/");
	QUrl service_url("http://www.ngdc.noaa.gov/geomag-web/calculators/calculateDeclination");
	LatLon latlon(georef->getGeographicRefPoint());
	
	if (!no_confirm)
	{
		int result = QMessageBox::question(this, tr("Online declination lookup"),
		  trUtf8("The magnetic declination for the reference point %1° %2° will now be retrieved from <a href=\"%3\">%3</a>. Do you want to continue?").
		    arg(latlon.latitude()).arg(latlon.longitude()).arg(user_url),
		  QMessageBox::Yes | QMessageBox::No,
		  QMessageBox::Yes );
		if (result != QMessageBox::Yes)
			return;
	}
	
	declination_query_in_progress = true;
	updateDeclinationButton();
	
	QNetworkAccessManager *network = new QNetworkAccessManager(this);
	connect(network, &QNetworkAccessManager::finished, this, &GeoreferencingDialog::declinationReplyFinished);
	
	QUrlQuery query;
	QDate today = QDate::currentDate();
	query.addQueryItem("lat1", QString::number(latlon.latitude()));
	query.addQueryItem("lon1", QString::number(latlon.longitude()));
	query.addQueryItem("startYear", QString::number(today.year()));
	query.addQueryItem("startMonth", QString::number(today.month()));
	query.addQueryItem("startDay", QString::number(today.day()));
	query.addQueryItem("resultFormat", "xml");
	service_url.setQuery(query);
	network->get(QNetworkRequest(service_url));
#else
	Q_UNUSED(no_confirm)
#endif
}
示例#5
0
MapCoordF GPSDisplay::calcLatestGPSCoord(bool& ok)
{
#if defined(QT_POSITIONING_LIB)
    if (!has_valid_position)
    {
        ok = false;
        return latest_gps_coord;
    }
    if (!gps_updated)
    {
        ok = true;
        return latest_gps_coord;
    }

    latest_pos_info = source->lastKnownPosition(true);
    latest_gps_coord_accuracy = latest_pos_info.hasAttribute(QGeoPositionInfo::HorizontalAccuracy) ? latest_pos_info.attribute(QGeoPositionInfo::HorizontalAccuracy) : -1;

    QGeoCoordinate qgeo_coord = latest_pos_info.coordinate();
    if (!qgeo_coord.isValid())
    {
        ok = false;
        return latest_gps_coord;
    }

    LatLon latlon(qgeo_coord.latitude(), qgeo_coord.longitude());
    latest_gps_coord = georeferencing.toMapCoordF(latlon, &ok);
    if (!ok)
    {
        qDebug() << "GPSDisplay::calcLatestGPSCoord(): Cannot convert LatLon to MapCoordF!";
        return latest_gps_coord;
    }

    gps_updated = false;
    ok = true;
    return latest_gps_coord;
#else
    ok = has_valid_position;
    return latest_gps_coord;
#endif
}
示例#6
0
文件: wrapper.c 项目: kvprathap/DRONE
void Create_packets(ExtU_ANN_EKF_NMPC_2_T *data,int sock)
{   int i=0;
    int bytes_sent;
    uint8_t buf[BUFFER_LENGTH];
    uint8_t buf1[BUFFER_LENGTH];
    uint8_t buf2[BUFFER_LENGTH];
    mavlink_message_t msg,msg1,msg2;
    uint16_t len;
    mavlink_msg_heartbeat_pack(2, 200, &msg, 2, 12, 65, 0, 3);
    len = mavlink_msg_to_send_buffer(buf, &msg);
    int len1  = strlen(buf);
     bytes_sent = sendto(sock, buf, len, 0, (struct sockaddr*)&gcAddr, sizeof(struct sockaddr_in));
    mavlink_msg_attitude_pack(2, 200, &msg, microsSinceEpoch(),data->EulerAnglesmeas.phi, data->EulerAnglesmeas.theta, data->EulerAnglesmeas.psi, data->BodyRatesmeas.P,data->BodyRatesmeas.Q, data->BodyRatesmeas.R);
    len = mavlink_msg_to_send_buffer(buf, &msg);
    len1  = strlen(buf);
     bytes_sent = sendto(sock, buf, len, 0, (struct sockaddr*)&gcAddr, sizeof(struct sockaddr_in));
//    mavlink_msg_hil_state_pack(1, 200, &msg, microsSinceEpoch(),data->EulerAngles.phi, data->EulerAngles.theta, data->EulerAngles.psi, data->BodyRatesmeas.P, data->BodyRatesmeas.Q, data->BodyRatesmeas.R,data->GPSPosition.Latitude,data->GPSPosition.Longitude,data->GPSPosition.Altitude,0,0,0,data->Accelerometermeas.Axb,data->Accelerometermeas.Ayb,data->Accelerometermeas.Azb);
   // mavlink_msg_hil_state_pack(2, 200, &msg, microsSinceEpoch(),data->EulerAngles.phi, data->EulerAngles.theta, data->EulerAngles.psi, data->BodyRatesmeas.P, data->BodyRatesmeas.Q, data->BodyRatesmeas.R,39,-95,data->GPSPosition.Altitude,0,0,0,data->Accelerometermeas.Axb,data->Accelerometermeas.Ayb,data->Accelerometermeas.Azb);
    //len = mavlink_msg_to_send_buffer(buf, &msg);
  //  bytes_sent = write(tty_fd1,buf,len);
    mavlink_msg_gps_raw_int_pack(2, 200, &msg, microsSinceEpoch(),2,data->GPSPositionmeas.Latitude,data->GPSPositionmeas.Longitude,data->GPSPositionmeas.Altitude,UINT16_MAX,UINT16_MAX,UINT16_MAX,UINT16_MAX,255);
    len = mavlink_msg_to_send_buffer(buf, &msg);
    bytes_sent = sendto(sock, buf, len, 0, (struct sockaddr*)&gcAddr, sizeof(struct sockaddr_in));
    
		memset(buf, 0, BUFFER_LENGTH);
		//mavlink_message_t msg;
		mavlink_status_t status,status1;
		mavlink_mission_count_t mission_count;
		int cn;
		recsize = recvfrom(sock, (void *)buf, BUFFER_LENGTH, 0, (struct sockaddr *)&gcAddr, &fromlen);
		if (recsize > 0)
      	        {
			// Something received - print out all bytes and parse packet
			
			
			printf("Bytes Received: %d\nDatagram: ", (int)recsize);
			for (i = 0; i < recsize; ++i)
			{
				//temp = buf[i];
			//	printf("%02x ", (unsigned char)temp);
				if (mavlink_parse_char(MAVLINK_COMM_0, buf[i], &msg, &status))
				{
					// Packet received
					printf("\nReceived packet: SYS: %d, COMP: %d, LEN: %d, MSG ID: %d\n", msg.sysid, msg.compid, msg.len, msg.msgid);		
					printf("\n\n Incomming packet\n\n");
		if(msg.msgid ==  44)
		{				
			mavlink_msg_mission_count_decode( &msg, &mission_count);
			printf("\n\n the # of wypts received is %d########\n\n",mission_count.count);
			data->wcn=mission_count.count;
			for(cn=1;cn<=data->wcn;cn++)
			{
				//sendrequest(sock,cn);
				memset(buf1, 0, BUFFER_LENGTH);
				mavlink_msg_mission_request_pack(2, 200, &msg1,255,0,(cn-1));
				len = mavlink_msg_to_send_buffer(buf1, &msg1);
				bytes_sent = sendto(sock, buf1, len, 0, (struct sockaddr*)&gcAddr, sizeof(struct sockaddr_in));
				//printf("\n\n @@@@@ sent successfull\n\n");
				memset(buf2, 0, BUFFER_LENGTH);
				//receive_waypoints(sock,cn);
				while( (recsize1 = recvfrom(sock, (void *)buf2, BUFFER_LENGTH, 0, (struct sockaddr *)&gcAddr, &fromlen)) <= 0);
	 if (recsize1 > 0)
	
      	{	
		int ii;
		mavlink_mission_item_t mission_item;		
	  	for (ii = 0; ii < recsize1; ++ii)
		{
			if (mavlink_parse_char(MAVLINK_COMM_0, buf2[ii], &msg2, &status1))
			{
				printf("\n\n reading waypoint # %d",(cn-1));
			}
		}//if (msg2.msgid==0)
			//goto loop;
		if(msg2.msgid ==  39)
		{
			mavlink_msg_mission_item_decode(&msg2, &mission_item);
			printf("\n\nthe waypoint # %d is lat:%f lon:%f alt:%f",cn,mission_item.x,mission_item.y,mission_item.z);
			data->lat[cn]=mission_item.x;
			data->alt[cn] =mission_item.z;
			data->lon[cn] = mission_item.y;
			data->WaypointsIN.v[cn] = mission_item.param1;	
			latlon(&ANN_EKF_NMPC_2_U,cn);	
		}
	}else printf("!!!!!!!!\n\n receiving failed \n\n "); 
			} 
			if((cn-1) == mission_count.count)
			{
				//sendack(sock,cn);
				mavlink_msg_mission_ack_pack(2, 200, &msg2,255,0,0);
				memset(buf2, 0, BUFFER_LENGTH);
				len = mavlink_msg_to_send_buffer(buf2, &msg2);
				bytes_sent = sendto(sock, buf2, len, 0, (struct sockaddr*)&gcAddr, sizeof(struct sockaddr_in));
				printf("\n\n ***** sent acknowledgement *****\n\n");
			} 		
		}        // for msg id 44
		if(msg.msgid ==  43)
		{       
			int j; 
			
			//sendcn(sock,cn);
			mavlink_msg_mission_count_pack(2, 200, &msg2,255,0,data->wcn);
			memset(buf2, 0, BUFFER_LENGTH);
			len = mavlink_msg_to_send_buffer(buf2, &msg2);
			bytes_sent = sendto(sock, buf2, len, 0, (struct sockaddr*)&gcAddr, sizeof(struct sockaddr_in));
			memset(buf2, 0, BUFFER_LENGTH);
			for(j=1; j<=data->wcn;j++)
			{
				//receive_request(sock);
				//sendwyp(sock,-95,95);
				mavlink_msg_mission_item_pack(2, 200, &msg2,255,0,(j-1),0,16,0,1,data->WaypointsIN.v[j],0,0,0,data->lat[j],data->lon[j],data->alt[j]);
				len = mavlink_msg_to_send_buffer(buf2, &msg2);
				bytes_sent = sendto(sock, buf2, len, 0, (struct sockaddr*)&gcAddr, sizeof(struct sockaddr_in));
				printf("\n\n @@@@@ sent count successfull\n\n");
			}
			//rec_ack(sock);
		}// for msg id 43
		}	//parse - if
				}//for
			}//else printf("\n\n 12121212not good");//recsize - if
		//	printf("\n");
		
		//memset(buf, 0, BUFFER_LENGTH);
		
		//printf("\n\n !!!@@##$$ end of a loop\n\n");




}//for Createpacket
示例#7
0
void LocationClickHandler::setup() {
	QString latlon(qsl("%1,%2").arg(_coords.lat).arg(_coords.lon));
	_text = qsl("https://maps.google.com/maps?q=") + latlon + qsl("&ll=") + latlon + qsl("&z=16");
}