/* convert radians to hh:mm:ss */
void ln_rad_to_hms (double radians, struct ln_hms * hms)
{
    double degrees;
         
    radians = ln_range_radians(radians);
    degrees = ln_rad_to_deg(radians);
  
    ln_deg_to_hms(degrees, hms);
}
Example #2
0
void format_result(const char *format, struct object_details *result) {
	char buffer[128];
	char *local_format = strdup(format);
	int i;

	struct ln_hms ra;

	/* convert results */
	ln_deg_to_hms(result->equ.ra, &ra);
	ln_get_hrz_from_equ(&result->equ, &result->obs, result->jd, &result->hrz);

	result->azidir = ln_hrz_to_nswe(&result->hrz);

	result->hrz.az = ln_range_degrees(result->hrz.az + 180);
	result->hrz.alt = ln_range_degrees(result->hrz.alt);

	struct specifiers specifiers[] = {
		{"%J", &result->jd,		DOUBLE},
		{"§r", &result->equ.ra,		DOUBLE},
		{"§d", &result->equ.dec,	DOUBLE},
		{"§a", &result->hrz.az,		DOUBLE},
		{"§h", &result->hrz.alt,	DOUBLE},
		{"§d", &result->diameter,	DOUBLE},
		{"§e", &result->distance,	DOUBLE},
		{"§t", &result->tz,		INTEGER},
		{"§A", &result->obs.lat,	DOUBLE},
		{"§O", &result->obs.lng,	DOUBLE},
		{"§s", (void *) result->azidir, STRING},
		{"§§", "§",			STRING},
		{0}
	};

	for (i = 0; specifiers[i].token; i++) {
		if (strstr(local_format, specifiers[i].token) != NULL) {
			switch (specifiers[i].format) {
				case DOUBLE: snprintf(buffer, sizeof(buffer), "%." PRECISION "f", * (double *) specifiers[i].data); break;
				case STRING: snprintf(buffer, sizeof(buffer), "%s", (char *) specifiers[i].data); break;
				case INTEGER: snprintf(buffer, sizeof(buffer), "%d", * (int *) specifiers[i].data); break;
			}

			local_format = strreplace(local_format, specifiers[i].token, buffer);
		}
	}

	strfjd(buffer, sizeof(buffer), local_format, result->jd, result->tz);
	printf("%s\n", buffer);

	free(local_format);
}
/*! \fn void ln_equ_to_hequ (struct ln_equ_posn * pos, struct lnh_equ_posn * hpos)
* \brief human double equatorial position to human readable equatorial position
* \ingroup conversion
*/
void ln_equ_to_hequ (struct ln_equ_posn * pos, struct lnh_equ_posn * hpos)
{
	ln_deg_to_hms (pos->ra, &hpos->ra);
	ln_deg_to_dms (pos->dec, &hpos->dec);
}