スポンサーリンク
#include <iostream> #include <gl/glm-0.9.9/gtx/string_cast.hpp> #include <gl/glm-0.9.9/glm.hpp> // 球とRay , 面とRayの交差判定に必要 #include <gl/glm-0.9.9/gtx/intersect.hpp> int main() { // 三点で面を定義 glm::vec3 p0 = { -0.74092 ,1.31512,1.3569 }; glm::vec3 p1 = { -1.71194 ,-0.053312 ,2.44526 }; glm::vec3 p2 = { -0.131372 ,-0.116652 ,0.100522 }; // 面上に存在する点1つ glm::vec3 planeo = p0; // 面の法線 glm::vec3 planen = glm::normalize(glm::cross(p1 - p0, p2 - p0)); // レイの定義 glm::vec3 rays = { 1.45134 ,1.48362 ,2.90831 }; glm::vec3 raye = { -2.87985 ,-1.52254 ,0.203716 }; // レイの方向 glm::vec3 rayn = glm::normalize(raye - rays); // raysからの距離 float distance; glm::intersectRayPlane( rays, rayn, planeo, planen, distance ); glm::vec3 x = rays + rayn * distance; std::cout << glm::to_string(x) << std::endl; // vec3(-1.011684, -0.225897, 1.370285) }