github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/ZAHYOU.go (about) 1 //This file is part of EESLISM. 2 // 3 //Foobar is free software : you can redistribute itand /or modify 4 //it under the terms of the GNU General Public License as published by 5 //the Free Software Foundation, either version 3 of the License, or 6 //(at your option) any later version. 7 // 8 //Foobar is distributed in the hope that it will be useful, 9 //but WITHOUT ANY WARRANTY; without even the implied warranty of 10 //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 11 //GNU General Public License for more details. 12 // 13 //You should have received a copy of the GNU General Public License 14 //along with Foobar.If not, see < https://www.gnu.org/licenses/>. 15 16 /* 17 18 モンテカルロ法を用いる際の座標変換 19 FILE=ZAHYOU.c 20 Create Date=1999.6.7 21 22 */ 23 24 package eeslism 25 26 import "math" 27 28 func ZAHYOU(Op, G XYZ, op *XYZ, wa, wb float64) { 29 Cwa := math.Cos(wa * math.Pi / 180) 30 Swa := math.Sin(wa * math.Pi / 180) 31 Cwb := math.Cos((-wb) * math.Pi / 180) 32 Swb := math.Sin((-wb) * math.Pi / 180) 33 34 p := XYZ{ 35 X: Op.X - G.X, 36 Y: Op.Y - G.Y, 37 Z: Op.Z - G.Z, 38 } 39 40 q := XYZ{ 41 X: p.X*Cwa - p.Y*Swa, 42 Y: p.X*Swa + p.Y*Cwa, 43 Z: p.Z, 44 } 45 46 op.X = q.X 47 op.Y = q.Y*Cwb - q.Z*Swb 48 op.Z = q.Y*Swb + q.Z*Cwb 49 50 CAT(&op.X, &op.Y, &op.Z) 51 } 52 53 /*------------------------------------------------------------------*/ 54 55 func R_ZAHYOU(Op, G XYZ, op *XYZ, wa, wb float64) { 56 Cwa := math.Cos((-wa) * math.Pi / 180) 57 Swa := math.Sin((-wa) * math.Pi / 180) 58 Cwb := math.Cos(wb * math.Pi / 180) 59 Swb := math.Sin(wb * math.Pi / 180) 60 61 p := XYZ{ 62 X: Op.X, 63 Y: Op.Y*Cwb - Op.Z*Swb, 64 Z: Op.Y*Swb + Op.Z*Cwb, 65 } 66 67 q := XYZ{ 68 X: p.X*Cwa - p.Y*Swa, 69 Y: p.X*Swa + p.Y*Cwa, 70 Z: p.Z, 71 } 72 73 op.X = q.X + G.X 74 op.Y = q.Y + G.Y 75 op.Z = q.Z + G.Z 76 77 CAT(&op.X, &op.Y, &op.Z) 78 }