Ejemplo n.º 1
0
//--------------------------------------------------------------
void ofApp::setup(){
    
    p1 = ofVec3f(0, 0, 0);
    p2 = ofVec3f(1, 5, 1.66666);
    
    plane = ofVec3f(0, 10, 0);
    planeNormal = ofVec3f(0, 11, 0);
    
    ofVec3f intersect;
    if(linePlaneIntersect(&intersect, p1, p2, plane, planeNormal)){
        printf("%f, %f, %f\n", intersect.x, intersect.y, intersect.z);
    }
}
Ejemplo n.º 2
0
//--------------------------------------------------------------
void ofApp::draw(){
    ofClear(0);
    ofSetColor(255);

    cam.begin();
    ofScale(20, 20, 20);
    ofNoFill();
    ofDrawLine(p1, p2);
    ofVec3f intersect;
    if(linePlaneIntersect(&intersect, p1, p2, plane, planeNormal)){
        ofDrawSphere(intersect, .1);
    }
    cam.end();
}
Ejemplo n.º 3
0
vec3d linePlaneIntersect(vec4d plane, vec3d picks[]) {
  // find 3 points on the plane

  vec3d n(plane.v[0], plane.v[1], plane.v[2]);
  vec3d n2 = n.normalize();

  vec3d pc = n2 * (-plane.v[3]) * (1 / n.norm());
  
  vec3d p1 = pc + n2.cross(vec3d(1, 0, 0));
  vec3d p2 = pc + n2.cross(vec3d(0, 1, 0));
  vec3d p3 = pc + n2.cross(vec3d(0, 0, 1));

  return linePlaneIntersect(p1, p2, p3, picks[0], picks[1]);
}
Ejemplo n.º 4
0
vec3d linePlaneIntersect(vec3d x1, vec3d x2, vec3d x3, vec3d x4, vec3d x5) {
  return linePlaneIntersect(x1, x2, x3, x4, x5, NULL);
}