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 }