スポンサーリンク

glm::intersectRayPlaneでレイと面の交点を求める

#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)
}

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: