Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 关于作业2判断三角形的问题

Tagged: 

Viewing 3 reply threads
  • Author
    Posts
    • #3241 Score: 0
      bc13900
      Participant

      三角形ABC和点P,默认按一种方向(顺时针逆时针都可以),分别表示向量AB和AP、BC和BP、CA和CP,然后把他们按这个顺序分别做叉乘得到向量v1、v2、v3,再把v1、v2、v3两两点乘,只要点乘结果同时>0,那就证明P在三角形内,请问我这种思路有问题么?

    • #3243 Score: 0
      左趋趋
      Participant
      4 pts

      没问题,还有可能同时小于0。

      等于零的时候,也有很多细节性的规定。

      • #3249 Score: 0
        Superstarimage
        Participant

        对,可以这样考虑,要想保证点在三角形,需要满足三个叉乘结果(可以只考虑二维的)同正或同负即可,这样就能保证叉乘得到的三个新向量是同向的了。同时对于为0的情况也需要考虑,我是将这种情况当成边界点处理了。

        • #3260 Score: 0
          bc13900
          Participant

          我是这么算的,但是不知道为什么我的static bool insideTriangle()结果总是false导致进不去光删化的循环

          • #3261 Score: 0
            戴皓天
            Participant
            9 pts

            其实最后不用两两点乘,你直接判断它们的z值是不是同时大于0或者小于0就行了。但是你这样照理说应该是没问题的,要不你分步算,输出一些中间变量到控制台看一下

            • #3263 Score: 0
              bc13900
              Participant

              你说的对,我改了以后结果出来了,谢谢

            • #3278 Score: 0
              Lexie
              Participant

              不太理解你说的z值,请问可以说的详细一点吗

              • #3279 Score: 0
                bc13900
                Participant

                他的意思是叉乘以后得到的还是一个Vector3f的三维向量,而三维向量就有z值,比如v1.z()。叉乘后如果三个新的向量的z值都大于0或小于0,就说明它们共向,点就在三角形内了

    • #3271 Score: 0
      bc13900
      Participant

      为什么我这个三角形压盖不一样

      Attachments:
      You must be logged in to view attached files.
      • #3285 Score: 0
        MXang
        Participant

        我一开始也遇到了这个问题,后来发现是实验一的投影矩阵有bug,只不过当时只有一个三角形不容易发现

        • #3287 Score: 0
          Curry
          Participant
          1 pt

          请问你这个问题是怎么解决的呢?

    • #3387 Score: 0
      Bear
      Participant
      -11 pt

      t 和 r 算反了吧。。。

      • #3388 Score: 0
        Bear
        Participant
        -11 pt

        回错帖子了。。。

Viewing 3 reply threads
  • You must be logged in to reply to this topic.