github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/EOP.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=EOP.c
    20                   Create Date 1999.6.15
    21  
    22  */
    23  
    24  package eeslism
    25  
    26  import "math"
    27  
    28  func EOP(u int, p []*P_MENN) {
    29  	const M_rad = math.Pi / 180
    30  	for j := 0; j < u; j++ {
    31  		p[j].e.Z = math.Cos(p[j].wb * M_rad)
    32  		p[j].e.Y = -math.Sin(p[j].wb*M_rad) * math.Cos(p[j].wa*M_rad)
    33  		p[j].e.X = -math.Sin(p[j].wb*M_rad) * math.Sin(p[j].wa*M_rad)
    34  		CAT(&p[j].e.Z, &p[j].e.Y, &p[j].e.X)
    35  	}
    36  }