Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 作业三框架中insideTriangle函数的问题

Tagged: 

Viewing 3 reply threads
  • Author
    Posts
    • #9455 Score: 0
      huhfairy
      Participant

      因为f0由三角形两点叉乘得来,所以f0是垂直于xOy平面的。
      而p在xOy平面中,那if语句中的p.dot(f0)不应该为0吗?f1、f2同理。
      没搞明白这个函数是怎么起作用的,求大佬解答。

      Attachments:
      You must be logged in to view attached files.
    • #9509 Score: 0
      米莱拉多
      Participant

      注意所有的z = 1

    • #10524 Score: 0
      Catiger
      Participant

      纠结了这个一段时间,在这里写下理解,首先这个应该明确各个参数意义
      z=1这个的意义是先限制三个顶点跟p点一个平面
      这里先让v[i]为ABC三个点
      在这里我们把ABC还有原点连起来,形成一个锥体
      因为叉乘是算出两向量组成平面的垂直向量。点跟向量叉乘可以把点理解成原点O跟这个点形成的向量跟另一个向量组成的平面的垂直向量。
      那么很明显了,只要把点限制在这个锥体内,且z相同,即在三角形里面。
      而限制在这个锥体的方法就是通过判断点在锥体表面的左边还是右边,因为锥体有四个面,其中z已经=1,所以这里
      只需要判断OP跟OA是否在BOC的同一边,且OP跟OB是否在AOC的同一边,OP跟OC是否在BOC的同一边就可以了(最后一段代码就是这个意思)。
      那么怎么判断呢,跟一个平面的垂直向量点乘获得cos值就行了,cos都是正的或者负的相乘的结果就是正的即大于0,即同向。
      总结就是二维空间判断的是点跟边的同向,三维空间判断的是边跟面的同向

    • #16576 Score: 0
      Krouze
      Participant

      感谢楼上大佬的讲解!我在这疑惑了好久!

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