github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/KOUTEN.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  package eeslism
    17  
    18  ///*
    19  //
    20  //                         直線と平面の交点を求める
    21  //                                    FILE=KOUTEN.c
    22  //                                    Create Date=1998.10.26
    23  //*/
    24  
    25  func KOUTEN(Qx, Qy, Qz, ls, ms, ns float64, Px, Py, Pz *float64, lp, E XYZ) {
    26  	t := (E.X*lp.X + E.Y*lp.Y + E.Z*lp.Z - E.X*Qx - E.Y*Qy - E.Z*Qz) / (E.X*ls + E.Y*ms + E.Z*ns)
    27  	*Px = t*ls + Qx
    28  	*Py = t*ms + Qy
    29  	*Pz = t*ns + Qz
    30  }