Autor Wątek: Wykrywanie kolizji - problem  (Przeczytany 658 razy)

Offline reidar

  • Użytkownik

# Grudzień 22, 2010, 19:10:35
Moja funkcja wykrywająca kolizje odcinka z trójkątem:
int colyLineTriangle( VECTOR3D &Coly, VECTOR3D LineA, VECTOR3D LineB,
                      VECTOR3D TriangleA, VECTOR3D TriangleB, VECTOR3D TriangleC){
  VECTOR3D PlanePoint = TriangleA,
           PlaneNormal = !((TriangleA-TriangleB)*(TriangleB-TriangleC));
  int ColyState = colyLinePlane(Coly, LineA, LineB, PlanePoint, PlaneNormal);
  if(ColyState == WE_CLEAR)
    return WE_CLEAR;
  else{
    // sprawdzanie czy punkt przeciecia jest wewnatrz trojkata
    float
    DTA = colyPlaneEquation(LineB, LineA,
      !((LineA-TriangleA)*(TriangleC-TriangleA)) ),
    DTB = colyPlaneEquation(LineB, LineA,
      !((LineA-TriangleB)*(TriangleA-TriangleB)) ),
    DTC = colyPlaneEquation(LineB, LineA,
      !((LineA-TriangleC)*(TriangleB-TriangleC)) );
    if((DTA>=0.0&&DTB>=0.0&&DTC>=0.0)||(DTA<=0.0&&DTB<=0.0&&DTC<=0.0)){
      if(DTA*DTB*DTC == 0.0)
        return WE_COLISION;
      else
        return ColyState;
      }
    else
      return WE_CLEAR;
    }
}
wykrywa kolizje nie z oryginałem trójkąta ale, z jego obrazem w skalowaniu o wektor [-1.0, 1.0, -1.0] dlaczego?

PS. operator "!" normalizuje wektor, a "*" to iloczyn wektorowy

Offline Mr. Spam

  • Miłośnik przetworów mięsnych