-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathpoint.h
93 lines (74 loc) · 1.84 KB
/
point.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#ifndef __PGS_POINT_H__
#define __PGS_POINT_H__
#include "vector3d.h"
#include "sbuffer.h"
/* This file contains declarations for spherical point and functions. */
/*
* The data structure definition of a spherical point.
*/
typedef struct
{
float8 lng; /* longitude value in radians */
float8 lat; /* latitude value in radians */
} SPoint;
/*
* Calculate the distance between two spherical points in radians.
*/
float8 spoint_dist(const SPoint *p1, const SPoint *p2);
/*
* Check whether two points are equal.
*/
bool spoint_eq(const SPoint *p1, const SPoint *p2);
/*
* Check the longitude and latitude values of a spherical point.
*/
void spoint_check(SPoint *spoint);
/*
* Transforms a 3d vector into a spherical point.
*/
void vector3d_spoint(SPoint *p, const Vector3D *v);
/*
* Transforms a spherical point into a 3d vector.
*/
void spoint_vector3d(Vector3D *v, const SPoint *p);
/*
* Take the input and store it as a spherical point.
*/
Datum spherepoint_in(PG_FUNCTION_ARGS);
/*
* Create a spherical point from longitude and latitude both in radians.
*/
Datum spherepoint_from_long_lat(PG_FUNCTION_ARGS);
/*
* Calculate the distance between two spherical points.
*/
Datum spherepoint_distance(PG_FUNCTION_ARGS);
/*
* Longitude of a spherical point.
*/
Datum spherepoint_long(PG_FUNCTION_ARGS);
/*
* Latitude of a spherical point.
*/
Datum spherepoint_lat(PG_FUNCTION_ARGS);
/*
* Cartesian x-value of a spherical point.
*/
Datum spherepoint_x(PG_FUNCTION_ARGS);
/*
* Cartesian y-value of a spherical point.
*/
Datum spherepoint_y(PG_FUNCTION_ARGS);
/*
* Cartesian z-value of a spherical point.
*/
Datum spherepoint_z(PG_FUNCTION_ARGS);
/*
* Cartesian values of a spherical point as an array.
*/
Datum spherepoint_xyz(PG_FUNCTION_ARGS);
/*
* Check whether two points are equal.
*/
Datum spherepoint_equal(PG_FUNCTION_ARGS);
#endif