本文整理汇总了Golang中math.Cosh函数的典型用法代码示例。如果您正苦于以下问题:Golang Cosh函数的具体用法?Golang Cosh怎么用?Golang Cosh使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Cosh函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: GridToGeodetic
//GridToGeodetic converts RT90 coordinates to WGS84
func GridToGeodetic(x, y float64) (float64, float64) {
if CentralMeridian == 31337.0 {
return 0.0, 0.0
}
e2 := Flattening * (2.0 - Flattening)
n := Flattening / (2.0 - Flattening)
a_roof := Axis / (1.0 + n) * (1.0 + n*n/4.0 + n*n*n*n/64.0)
delta1 := n/2.0 - 2.0*n*n/3.0 + 37.0*n*n*n/96.0 - n*n*n*n/360.0
delta2 := n*n/48.0 + n*n*n/15.0 - 437.0*n*n*n*n/1440.0
delta3 := 17.0*n*n*n/480.0 - 37*n*n*n*n/840.0
delta4 := 4397.0 * n * n * n * n / 161280.0
Astar := e2 + e2*e2 + e2*e2*e2 + e2*e2*e2*e2
Bstar := -(7.0*e2*e2 + 17.0*e2*e2*e2 + 30.0*e2*e2*e2*e2) / 6.0
Cstar := (224.0*e2*e2*e2 + 889.0*e2*e2*e2*e2) / 120.0
Dstar := -(4279.0 * e2 * e2 * e2 * e2) / 1260.0
DegToRad := math.Pi / 180
LambdaZero := CentralMeridian * DegToRad
xi := (x - FalseNorthing) / (Scale * a_roof)
eta := (y - FalseEasting) / (Scale * a_roof)
xi_prim := xi - delta1*math.Sin(2.0*xi)*math.Cosh(2.0*eta) - delta2*math.Sin(4.0*xi)*math.Cosh(4.0*eta) - delta3*math.Sin(6.0*xi)*math.Cosh(6.0*eta) - delta4*math.Sin(8.0*xi)*math.Cosh(8.0*eta)
eta_prim := eta - delta1*math.Cos(2.0*xi)*math.Sinh(2.0*eta) - delta2*math.Cos(4.0*xi)*math.Sinh(4.0*eta) - delta3*math.Cos(6.0*xi)*math.Sinh(6.0*eta) - delta4*math.Cos(8.0*xi)*math.Sinh(8.0*eta)
phi_star := math.Asin(math.Sin(xi_prim) / math.Cosh(eta_prim))
delta_lambda := math.Atan(math.Sinh(eta_prim) / math.Cos(xi_prim))
lon_radian := LambdaZero + delta_lambda
lat_radian := phi_star + math.Sin(phi_star)*math.Cos(phi_star)*(Astar+Bstar*math.Pow(math.Sin(phi_star), 2)+Cstar*math.Pow(math.Sin(phi_star), 4)+Dstar*math.Pow(math.Sin(phi_star), 6))
return lat_radian * 180.0 / math.Pi, lon_radian * 180.0 / math.Pi
}
示例2: Tanh
// Tanh 返回 x 的双曲正切。
func Tanh(x complex128) complex128 {
d := math.Cosh(2*real(x)) + math.Cos(2*imag(x))
if d == 0 {
return Inf()
}
return complex(math.Sinh(2*real(x))/d, math.Sin(2*imag(x))/d)
}
示例3: CosH
//CosH returns the hyperbolic cosine of x
func CosH(number float64) (float64, error) {
if math.IsNaN(number) {
return 0.0, errors.New("#VALUE! - Occurred because the supplied number argument is non-numeric")
}
return math.Cosh(number), nil
}
示例4: sinhcosh
// 计算 sinh 和 cosh
func sinhcosh(x float64) (sh, ch float64) {
if math.Abs(x) <= 0.5 {
return math.Sinh(x), math.Cosh(x)
}
e := math.Exp(x)
ei := 0.5 / e
e *= 0.5
return e - ei, e + ei
}
示例5: Cot
// Cot returns the cotangent of x.
func Cot(x complex128) complex128 {
d := math.Cosh(2*imag(x)) - math.Cos(2*real(x))
if math.Fabs(d) < 0.25 {
d = tanSeries(x)
}
if d == 0 {
return Inf()
}
return cmplx(math.Sin(2*real(x))/d, -math.Sinh(2*imag(x))/d)
}
示例6: Tan
// Tan 返回 x 的正切值。
func Tan(x complex128) complex128 {
d := math.Cos(2*real(x)) + math.Cosh(2*imag(x))
if math.Abs(d) < 0.25 {
d = tanSeries(x)
}
if d == 0 {
return Inf()
}
return complex(math.Sin(2*real(x))/d, math.Sinh(2*imag(x))/d)
}
示例7: GeodeticToGrid
//GeodeticToGrid converts WGS84 coordinates to RT90
func GeodeticToGrid(lat, lon float64) (x, y float64) {
// Prepare ellipsoid-based stuff.
e2 := Flattening * (2.0 - Flattening)
n := Flattening / (2.0 - Flattening)
a_roof := Axis / (1.0 + n) * (1.0 + n*n/4.0 + n*n*n*n/64.0)
A := e2
B := (5.0*e2*e2 - e2*e2*e2) / 6.0
C := (104.0*e2*e2*e2 - 45.0*e2*e2*e2*e2) / 120.0
D := (1237.0 * e2 * e2 * e2 * e2) / 1260.0
beta1 := n/2.0 - 2.0*n*n/3.0 + 5.0*n*n*n/16.0 + 41.0*n*n*n*n/180.0
beta2 := 13.0*n*n/48.0 - 3.0*n*n*n/5.0 + 557.0*n*n*n*n/1440.0
beta3 := 61.0*n*n*n/240.0 - 103.0*n*n*n*n/140.0
beta4 := 49561.0 * n * n * n * n / 161280.0
// Convert.
DegToRad := math.Pi / 180.0
phi := lat * DegToRad
lambd := lon * DegToRad
lambda_zero := CentralMeridian * DegToRad
phi_star := phi - math.Sin(phi)*math.Cos(phi)*(A+
B*math.Pow(math.Sin(phi), 2)+
C*math.Pow(math.Sin(phi), 4)+
D*math.Pow(math.Sin(phi), 6))
delta_lambda := lambd - lambda_zero
xi_prim := math.Atan(math.Tan(phi_star) / math.Cos(delta_lambda))
eta_prim := math.Atanh(math.Cos(phi_star) * math.Sin(delta_lambda))
x = Scale*a_roof*(xi_prim+
beta1*math.Sin(2.0*xi_prim)*math.Cosh(2.0*eta_prim)+
beta2*math.Sin(4.0*xi_prim)*math.Cosh(4.0*eta_prim)+
beta3*math.Sin(6.0*xi_prim)*math.Cosh(6.0*eta_prim)+
beta4*math.Sin(8.0*xi_prim)*math.Cosh(8.0*eta_prim)) +
FalseNorthing
y = Scale*a_roof*(eta_prim+
beta1*math.Cos(2.0*xi_prim)*math.Sinh(2.0*eta_prim)+
beta2*math.Cos(4.0*xi_prim)*math.Sinh(4.0*eta_prim)+
beta3*math.Cos(6.0*xi_prim)*math.Sinh(6.0*eta_prim)+
beta4*math.Cos(8.0*xi_prim)*math.Sinh(8.0*eta_prim)) +
FalseEasting
return x, y
}
示例8: TestMathCosh
func TestMathCosh(t *testing.T) {
// This is just an interface to Go's function, so just a quick simple test
ctx := runtime.NewCtx(nil, nil)
mm := new(MathMod)
mm.SetCtx(ctx)
val := 0.12
ret := mm.math_Cosh(runtime.Number(val))
exp := math.Cosh(val)
if ret.Float() != exp {
t.Errorf("expected %f, got %f", exp, ret.Float())
}
}
示例9: SecH
//SecH returns the hyperbolic secant of an angle
func SecH(number float64) (float64, error) {
if number < -134217728 || number > 134217728 {
return 0.0, errors.New("#NUM! - Occurred because the supplied number argument is less than -2^27 or is greater than 2^27")
}
if math.IsNaN(number) {
return 0.0, errors.New("#VALUE! - Occurred because the supplied number argument is non-numeric")
}
return (1 / math.Cosh(number)), nil
}
示例10: Cosh
// float32 version of math.Cosh
func Cosh(x float32) float32 {
return float32(math.Cosh(float64(x)))
}
示例11: init
var TransverseMercator = Projection{
Project: func(p *Point) {
radLat := deg2rad(p.Lat())
radLng := deg2rad(p.Lng())
sincos := math.Sin(radLng) * math.Cos(radLat)
p.SetX(0.5 * math.Log((1+sincos)/(1-sincos)) * EarthRadius)
p.SetY(math.Atan(math.Tan(radLat)/math.Cos(radLng)) * EarthRadius)
},
Inverse: func(p *Point) {
x := p.X() / EarthRadius
y := p.Y() / EarthRadius
lng := math.Atan(math.Sinh(x) / math.Cos(y))
lat := math.Asin(math.Sin(y) / math.Cosh(x))
p.SetLng(rad2deg(lng))
p.SetLat(rad2deg(lat))
},
}
// ScalarMercator converts from lng/lat float64 to x,y uint64.
// This is the same as Google's world coordinates.
var ScalarMercator struct {
Level uint64
Project func(lng, lat float64, level ...uint64) (x, y uint64)
Inverse func(x, y uint64, level ...uint64) (lng, lat float64)
}
func init() {
示例12: InverseTransverseMercator
// Inverse transverse mercator projection: Projection of an cylinder onto the surface of
// of an ellipsoid. Also known as reverse Gauss-Krüger projection. Input parameters:
//
// pt *GeoPoint: Easting(Y) and Northing(X) of map point to be projected; in meters
// latO, longO: Shifted origin of latitude and longitude in decimal degrees
// fe, fn: False easting and northing respectively in meters
// scale: Projection scaling; Dimensionless, typically 1 or little bellow
//
// This algorithm uses the algorithm described by Redfearn
// http://en.wikipedia.org/wiki/Transverse_Mercator:_Redfearn_series
//
// Taken from "OGP Publication 373-7-2 – Surveying and Positioning Guidance Note number 7, part 2 – November 2010",
// pp. 48 - 51
//
// More accurate, iterative but slower algorithmic implementation
func InverseTransverseMercator(pt *GeoPoint, latO, longO, scale, fe, fn float64) *PolarCoord {
var gc PolarCoord
el := pt.El
latOrad := degtorad(latO)
longOrad := degtorad(longO)
f := 1 - el.b/el.a
esq := math.Sqrt(2.0*f - f*f)
n := f / (2.0 - f)
B := (el.a / (1 + n)) * (1 + n*n/4.0 + n*n*n*n/64.0)
var SO float64
if latOrad != 0.0 {
h1 := n/2.0 - (2.0/3.0)*n*n + (5.0/16.0)*n*n*n + (41.0/180.0)*n*n*n*n
h2 := (13.0/48.0)*n*n - (3.0/5.0)*n*n*n + (557.0/1440.0)*n*n*n*n
h3 := (61.0/240.0)*n*n*n - (103.0/140.0)*n*n*n*n
h4 := (49561.0 / 161280.0) * n * n * n * n
QO := math.Asinh(math.Tan(latOrad)) - (esq * math.Atanh(esq*math.Sin(latOrad)))
bO := math.Atan(math.Sinh(QO))
xiO0 := bO // math.Asin(math.Sin(bO))
xiO1 := h1 * math.Sin(2.0*xiO0)
xiO2 := h2 * math.Sin(4.0*xiO0)
xiO3 := h3 * math.Sin(6.0*xiO0)
xiO4 := h4 * math.Sin(8.0*xiO0)
xiO := xiO0 + xiO1 + xiO2 + xiO3 + xiO4
SO = B * xiO
}
h1i := n/2.0 - (2.0/3.0)*n*n + (37.0/96.0)*n*n*n - (1.0/360.0)*n*n*n*n
h2i := (1.0/48.0)*n*n + (1.0/15.0)*n*n*n - (437.0/1440.0)*n*n*n*n
h3i := (17.0/480.0)*n*n*n - (37.0/840.0)*n*n*n*n
h4i := (4397.0 / 161280.0) * n * n * n * n
etai := (pt.X - fe) / (B * scale)
xii := ((pt.Y - fn) + scale*SO) / (B * scale)
xi1i := h1i * math.Sin(2*xii) * math.Cosh(2*etai)
xi2i := h2i * math.Sin(4*xii) * math.Cosh(4*etai)
xi3i := h3i * math.Sin(6*xii) * math.Cosh(6*etai)
xi4i := h4i * math.Sin(8*xii) * math.Cosh(8*etai)
eta1i := h1i * math.Cos(2*xii) * math.Sinh(2*etai)
eta2i := h2i * math.Cos(4*xii) * math.Sinh(4*etai)
eta3i := h3i * math.Cos(6*xii) * math.Sinh(6*etai)
eta4i := h4i * math.Cos(8*xii) * math.Sinh(8*etai)
xi0i := xii - (xi1i + xi2i + xi3i + xi4i)
eta0i := etai - (eta1i + eta2i + eta3i + eta4i)
bi := math.Asin(math.Sin(xi0i) / math.Cosh(eta0i))
Qi := math.Asinh(math.Tan(bi))
Qiiold := Qi + (esq * math.Atanh(esq*math.Tanh(Qi)))
Qii := Qi + (esq * math.Atanh(esq*math.Tanh(Qiiold)))
for math.Abs(Qiiold-Qii) > 1e-12 {
Qiiold = Qii
Qii = Qi + (esq * math.Atanh(esq*math.Tanh(Qiiold)))
}
gc.Latitude = radtodeg(math.Atan(math.Sinh(Qii)))
gc.Longitude = radtodeg(longOrad + math.Asin(math.Tanh(eta0i)/math.Cos(bi)))
gc.El = el
return &gc
}
示例13: math_Cosh
func (m *MathMod) math_Cosh(args ...runtime.Val) runtime.Val {
runtime.ExpectAtLeastNArgs(1, args)
return runtime.Number(math.Cosh(args[0].Float()))
}
示例14: mathCosh
func mathCosh(L *LState) int {
L.Push(LNumber(math.Cosh(float64(L.CheckNumber(1)))))
return 1
}
示例15: DirectTransverseMercator
// Direct transverse mercator projection: Projection of an ellipsoid onto the surface of
// of a cylinder. Also known as Gauss-Krüger projection. Input parameters:
//
// gc *PolarCoord: Latitude and Longitude or point to be projected; in decimal degrees
// latO, longO: Shifted origin of latitude and longitude in decimal degrees
// fe, fn: False easting and northing respectively in meters
// scale: Projection scaling; Dimensionless, typically 1 or little bellow
//
// This algorithm uses the algorithm described by Redfearn
// http://en.wikipedia.org/wiki/Transverse_Mercator:_Redfearn_series
//
// Taken from "OGP Publication 373-7-2 – Surveying and Positioning Guidance Note number 7, part 2 – November 2010",
// pp. 48 - 51
func DirectTransverseMercator(gc *PolarCoord, latO, longO, scale, fe, fn float64) *GeoPoint {
var pt GeoPoint
el := gc.El
latOrad := degtorad(latO)
longOrad := degtorad(longO)
latrad := degtorad(gc.Latitude)
longrad := degtorad(gc.Longitude)
f := 1 - el.b/el.a
esq := math.Sqrt(2.0*f - f*f)
n := f / (2.0 - f)
B := (el.a / (1 + n)) * (1 + n*n/4.0 + n*n*n*n/64.0)
h1 := n/2.0 - (2.0/3.0)*(n*n) + (5.0/16.0)*(n*n*n) + (41.0/180.0)*(n*n*n*n)
h2 := (13.0/48.0)*(n*n) - (3.0/5.0)*(n*n*n) + (557.0/1440.0)*(n*n*n*n)
h3 := (61.0/240.0)*(n*n*n) - (103.0/140.0)*(n*n*n*n)
h4 := (49561.0 / 161280.0) * (n * n * n * n)
var SO float64
if latOrad != 0.0 {
QO := math.Asinh(math.Tan(latOrad)) - (esq * math.Atanh(esq*math.Sin(latOrad)))
bO := math.Atan(math.Sinh(QO))
xiO0 := bO // math.Asin(math.Sin(bO))
xiO1 := h1 * math.Sin(2.0*xiO0)
xiO2 := h2 * math.Sin(4.0*xiO0)
xiO3 := h3 * math.Sin(6.0*xiO0)
xiO4 := h4 * math.Sin(8.0*xiO0)
xiO := xiO0 + xiO1 + xiO2 + xiO3 + xiO4
SO = B * xiO
}
Q := math.Asinh(math.Tan(latrad)) - (esq * math.Atanh(esq*math.Sin(latrad)))
b := math.Atan(math.Sinh(Q))
eta0 := math.Atanh(math.Cos(b) * math.Sin(longrad-longOrad))
xi0 := math.Asin(math.Sin(b) * math.Cosh(eta0))
xi1 := h1 * math.Sin(2*xi0) * math.Cosh(2*eta0)
xi2 := h2 * math.Sin(4*xi0) * math.Cosh(4*eta0)
xi3 := h3 * math.Sin(6*xi0) * math.Cosh(6*eta0)
xi4 := h4 * math.Sin(8*xi0) * math.Cosh(8*eta0)
xi := xi0 + xi1 + xi2 + xi3 + xi4
eta1 := h1 * math.Cos(2*xi0) * math.Sinh(2*eta0)
eta2 := h2 * math.Cos(4*xi0) * math.Sinh(4*eta0)
eta3 := h3 * math.Cos(6*xi0) * math.Sinh(6*eta0)
eta4 := h4 * math.Cos(8*xi0) * math.Sinh(8*eta0)
eta := eta0 + eta1 + eta2 + eta3 + eta4
pt.X = fe + scale*B*eta
pt.Y = fn + scale*(B*xi-SO)
pt.El = el
return &pt
}